summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/gtk
diff options
context:
space:
mode:
authorerg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-24 17:45:38 +0000
committererg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-24 17:45:38 +0000
commitbddd0bd549af2d1d2e39d719b946a98a9b2dea68 (patch)
tree6b07e89e15d56c913a2af6c00ac9c3973500eead /chrome/browser/ui/gtk
parent97b438ba00492dff490e1fbc318f9aa1678c1568 (diff)
downloadchromium_src-bddd0bd549af2d1d2e39d719b946a98a9b2dea68.zip
chromium_src-bddd0bd549af2d1d2e39d719b946a98a9b2dea68.tar.gz
chromium_src-bddd0bd549af2d1d2e39d719b946a98a9b2dea68.tar.bz2
GTK: Refinements to the global menu.
1) When a bookmark has no title, use the truncated URL. 2) Force the rest of the icons to display in gnome. (We only forced it on recently closed tabs, not bookmarks or most visited). BUG=83646 TEST=Invariants 1 and 2 above are true on Natty. Review URL: http://codereview.chromium.org/6990049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86445 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/gtk')
-rw-r--r--chrome/browser/ui/gtk/bookmarks/bookmark_menu_controller_gtk.cc8
-rw-r--r--chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.cc18
-rw-r--r--chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.h3
-rw-r--r--chrome/browser/ui/gtk/global_bookmark_menu.cc18
-rw-r--r--chrome/browser/ui/gtk/global_history_menu.cc1
5 files changed, 33 insertions, 15 deletions
diff --git a/chrome/browser/ui/gtk/bookmarks/bookmark_menu_controller_gtk.cc b/chrome/browser/ui/gtk/bookmarks/bookmark_menu_controller_gtk.cc
index 05ac19c..786947c 100644
--- a/chrome/browser/ui/gtk/bookmarks/bookmark_menu_controller_gtk.cc
+++ b/chrome/browser/ui/gtk/bookmarks/bookmark_menu_controller_gtk.cc
@@ -153,12 +153,8 @@ void BookmarkMenuController::BuildMenu(const BookmarkNode* parent,
for (int i = start_child_index; i < parent->child_count(); ++i) {
const BookmarkNode* node = parent->GetChild(i);
- // This breaks on word boundaries. Ideally we would break on character
- // boundaries.
- string16 elided_name = l10n_util::TruncateString(node->GetTitle(),
- kMaxChars);
- GtkWidget* menu_item =
- gtk_image_menu_item_new_with_label(UTF16ToUTF8(elided_name).c_str());
+ GtkWidget* menu_item = gtk_image_menu_item_new_with_label(
+ bookmark_utils::BuildMenuLabelFor(node).c_str());
g_object_set_data(G_OBJECT(menu_item), "bookmark-node", AsVoid(node));
SetImageMenuItem(menu_item, node, profile_->GetBookmarkModel());
gtk_util::SetAlwaysShowImage(menu_item);
diff --git a/chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.cc b/chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.cc
index f537a65..4da5a62 100644
--- a/chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.cc
+++ b/chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.cc
@@ -34,6 +34,9 @@ const int kBitsInAByte = 8;
// Maximum number of characters on a bookmark button.
const size_t kMaxCharsOnAButton = 15;
+// Maximum number of characters on a menu label.
+const int kMaxCharsOnAMenuLabel = 50;
+
// Padding between the chrome button highlight border and the contents (favicon,
// text).
const int kButtonPaddingTop = 0;
@@ -245,6 +248,21 @@ std::string BuildTooltipFor(const BookmarkNode* node) {
return gtk_util::BuildTooltipTitleFor(node->GetTitle(), node->GetURL());
}
+std::string BuildMenuLabelFor(const BookmarkNode* node) {
+ // This breaks on word boundaries. Ideally we would break on character
+ // boundaries.
+ std::string elided_name = UTF16ToUTF8(
+ l10n_util::TruncateString(node->GetTitle(), kMaxCharsOnAMenuLabel));
+
+ if (elided_name.empty()) {
+ elided_name = UTF16ToUTF8(l10n_util::TruncateString(
+ UTF8ToUTF16(node->GetURL().possibly_invalid_spec()),
+ kMaxCharsOnAMenuLabel));
+ }
+
+ return elided_name;
+}
+
const BookmarkNode* BookmarkNodeForWidget(GtkWidget* widget) {
return reinterpret_cast<const BookmarkNode*>(
g_object_get_data(G_OBJECT(widget), bookmark_utils::kBookmarkNode));
diff --git a/chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.h b/chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.h
index 14efe65..647d10c 100644
--- a/chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.h
+++ b/chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.h
@@ -48,6 +48,9 @@ void ConfigureButtonForNode(const BookmarkNode* node, BookmarkModel* model,
// Returns the tooltip.
std::string BuildTooltipFor(const BookmarkNode* node);
+// Returns the label that should be in pull down menus.
+std::string BuildMenuLabelFor(const BookmarkNode* node);
+
// Returns the "bookmark-node" property of |widget| casted to the correct type.
const BookmarkNode* BookmarkNodeForWidget(GtkWidget* widget);
diff --git a/chrome/browser/ui/gtk/global_bookmark_menu.cc b/chrome/browser/ui/gtk/global_bookmark_menu.cc
index 0003883..36073f8 100644
--- a/chrome/browser/ui/gtk/global_bookmark_menu.cc
+++ b/chrome/browser/ui/gtk/global_bookmark_menu.cc
@@ -12,6 +12,7 @@
#include "chrome/browser/bookmarks/bookmark_model.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.h"
#include "chrome/browser/ui/gtk/global_bookmark_menu.h"
#include "chrome/browser/ui/gtk/global_menu_bar.h"
#include "chrome/browser/ui/gtk/gtk_theme_service.h"
@@ -23,8 +24,6 @@
namespace {
-const int kMaxChars = 50;
-
// We need to know whether we're using a newer GTK at run time because we need
// to prevent.
//
@@ -111,6 +110,7 @@ void GlobalBookmarkMenu::RebuildMenu() {
GtkWidget* menu_item = gtk_image_menu_item_new_with_label(
l10n_util::GetStringUTF8(IDS_BOOMARK_BAR_OTHER_FOLDER_NAME).c_str());
+ gtk_util::SetAlwaysShowImage(menu_item);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), submenu);
gtk_image_menu_item_set_image(
GTK_IMAGE_MENU_ITEM(menu_item),
@@ -140,6 +140,7 @@ void GlobalBookmarkMenu::AddNodeToMenu(const BookmarkNode* node,
for (int i = 0; i < child_count; i++) {
const BookmarkNode* child = node->GetChild(i);
GtkWidget* item = gtk_image_menu_item_new();
+ gtk_util::SetAlwaysShowImage(item);
ConfigureMenuItem(child, item);
bookmark_nodes_[child] = item;
@@ -165,16 +166,15 @@ void GlobalBookmarkMenu::ConfigureMenuItem(const BookmarkNode* node,
// display any visible widgets in older systems that don't have a global menu
// bar.
if (gtk_menu_item_set_label_sym) {
- string16 elided_name =
- l10n_util::TruncateString(node->GetTitle(), kMaxChars);
- gtk_menu_item_set_label_sym(GTK_MENU_ITEM(menu_item),
- UTF16ToUTF8(elided_name).c_str());
+ gtk_menu_item_set_label_sym(
+ GTK_MENU_ITEM(menu_item),
+ bookmark_utils::BuildMenuLabelFor(node).c_str());
}
if (node->is_url()) {
- std::string tooltip = gtk_util::BuildTooltipTitleFor(node->GetTitle(),
- node->GetURL());
- gtk_widget_set_tooltip_markup(menu_item, tooltip.c_str());
+ gtk_widget_set_tooltip_markup(
+ menu_item,
+ bookmark_utils::BuildTooltipFor(node).c_str());
}
const SkBitmap& bitmap = profile_->GetBookmarkModel()->GetFavicon(node);
diff --git a/chrome/browser/ui/gtk/global_history_menu.cc b/chrome/browser/ui/gtk/global_history_menu.cc
index d579448..67045f9 100644
--- a/chrome/browser/ui/gtk/global_history_menu.cc
+++ b/chrome/browser/ui/gtk/global_history_menu.cc
@@ -469,6 +469,7 @@ void GlobalHistoryMenu::TabRestoreServiceChanged(TabRestoreService* service) {
// Create the menu item parent. Unlike mac, it's can't be activated.
GtkWidget* parent_item = gtk_image_menu_item_new_with_label(
title.c_str());
+ gtk_util::SetAlwaysShowImage(parent_item);
gtk_widget_show(parent_item);
g_object_set_data(G_OBJECT(parent_item), "type-tag",
GINT_TO_POINTER(GlobalMenuBar::TAG_RECENTLY_CLOSED));