| Index: chrome/browser/ui/gtk/gtk_util.cc
|
| diff --git a/chrome/browser/ui/gtk/gtk_util.cc b/chrome/browser/ui/gtk/gtk_util.cc
|
| index 69fcbe56169206ff16a98734da43c3f2ba1c0167..547caaab8dab33952940b700457d07aef8796e3a 100644
|
| --- a/chrome/browser/ui/gtk/gtk_util.cc
|
| +++ b/chrome/browser/ui/gtk/gtk_util.cc
|
| @@ -65,6 +65,10 @@ static const char* kIconName = "chromium-browser";
|
|
|
| const char kBoldLabelMarkup[] = "<span weight='bold'>%s</span>";
|
|
|
| +// Max size of each component of the button tooltips.
|
| +const size_t kMaxTooltipTitleLength = 100;
|
| +const size_t kMaxTooltipURLLength = 400;
|
| +
|
| // Callback used in RemoveAllChildren.
|
| void RemoveWidget(GtkWidget* widget, gpointer container) {
|
| gtk_container_remove(GTK_CONTAINER(container), widget);
|
| @@ -770,6 +774,35 @@ GdkPoint MakeBidiGdkPoint(gint x, gint y, gint width, bool ltr) {
|
| return point;
|
| }
|
|
|
| +std::string BuildTooltipTitleFor(string16 title, GURL url) {
|
| + const std::string& url_str = url.possibly_invalid_spec();
|
| + const std::string& title_str = UTF16ToUTF8(title);
|
| +
|
| + std::string truncated_url = UTF16ToUTF8(l10n_util::TruncateString(
|
| + UTF8ToUTF16(url_str), kMaxTooltipURLLength));
|
| + gchar* escaped_url_cstr = g_markup_escape_text(truncated_url.c_str(),
|
| + truncated_url.size());
|
| + std::string escaped_url(escaped_url_cstr);
|
| + g_free(escaped_url_cstr);
|
| +
|
| + std::string tooltip;
|
| + if (url_str == title_str || title.empty()) {
|
| + return escaped_url;
|
| + } else {
|
| + std::string truncated_title = UTF16ToUTF8(l10n_util::TruncateString(
|
| + title, kMaxTooltipTitleLength));
|
| + gchar* escaped_title_cstr = g_markup_escape_text(truncated_title.c_str(),
|
| + truncated_title.size());
|
| + std::string escaped_title(escaped_title_cstr);
|
| + g_free(escaped_title_cstr);
|
| +
|
| + if (!escaped_url.empty())
|
| + return std::string("<b>") + escaped_title + "</b>\n" + escaped_url;
|
| + else
|
| + return std::string("<b>") + escaped_title + "</b>";
|
| + }
|
| +}
|
| +
|
| void DrawTextEntryBackground(GtkWidget* offscreen_entry,
|
| GtkWidget* widget_to_draw_on,
|
| GdkRectangle* dirty_rec,
|
|
|