summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/gtk/gtk_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/gtk/gtk_util.cc')
-rw-r--r--chrome/browser/ui/gtk/gtk_util.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/chrome/browser/ui/gtk/gtk_util.cc b/chrome/browser/ui/gtk/gtk_util.cc
index 69fcbe5..547caaa 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,