summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorbeng@google.com <beng@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-26 23:55:50 +0000
committerbeng@google.com <beng@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-26 23:55:50 +0000
commitefc7057308ae81e69861d37aaca33b67d5187284 (patch)
treebd0a402b24e261f6c79b1ec867cc44920eef4829 /chrome
parenta4258dbc75748725c3e6f12ccdd6f642c297d1db (diff)
downloadchromium_src-efc7057308ae81e69861d37aaca33b67d5187284.zip
chromium_src-efc7057308ae81e69861d37aaca33b67d5187284.tar.gz
chromium_src-efc7057308ae81e69861d37aaca33b67d5187284.tar.bz2
Make the system menu for frames have submenus for encoding and text zoom
B=1031854 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1413 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/views/frame/browser_view2.cc47
-rw-r--r--chrome/browser/views/frame/browser_view2.h4
-rw-r--r--chrome/views/menu.h2
3 files changed, 42 insertions, 11 deletions
diff --git a/chrome/browser/views/frame/browser_view2.cc b/chrome/browser/views/frame/browser_view2.cc
index 85e1ae4..644bc8b 100644
--- a/chrome/browser/views/frame/browser_view2.cc
+++ b/chrome/browser/views/frame/browser_view2.cc
@@ -9,6 +9,7 @@
#include "chrome/browser/app_modal_dialog_queue.h"
#include "chrome/browser/browser.h"
#include "chrome/browser/browser_list.h"
+#include "chrome/browser/encoding_menu_controller_delegate.h"
#include "chrome/browser/tab_contents_container_view.h"
#include "chrome/browser/tabs/tab_strip.h"
#include "chrome/browser/view_ids.h"
@@ -44,8 +45,8 @@ static const struct { bool separator; int command; int label; } kMenuLayout[] =
{ true, 0, 0 },
{ false, IDC_TASKMANAGER, IDS_TASKMANAGER },
{ true, 0, 0 },
- { false, 0, IDS_ENCODING },
- { false, 0, IDS_ZOOM },
+ { false, IDC_ENCODING, IDS_ENCODING },
+ { false, IDC_ZOOM, IDS_ZOOM },
{ false, IDC_PRINT, IDS_PRINT },
{ false, IDC_SAVEPAGE, IDS_SAVEPAGEAS },
{ false, IDC_FIND, IDS_FIND_IN_PAGE },
@@ -227,6 +228,7 @@ void BrowserView2::PrepareToRunSystemMenu(HMENU menu) {
void BrowserView2::SystemMenuEnded() {
system_menu_.reset();
+ encoding_menu_delegate_.reset();
}
bool BrowserView2::SupportsWindowFeature(WindowFeature feature) const {
@@ -1020,21 +1022,44 @@ void BrowserView2::LoadAccelerators() {
void BrowserView2::BuildMenuForTabStriplessWindow(Menu* menu,
int insertion_index) {
+ encoding_menu_delegate_.reset(new EncodingMenuControllerDelegate(
+ browser_.get(),
+ browser_->controller()));
+
for (int i = 0; i < arraysize(kMenuLayout); ++i) {
if (kMenuLayout[i].separator) {
menu->AddSeparator(insertion_index);
} else {
int command = kMenuLayout[i].command;
-
- menu->AddMenuItemWithLabel(insertion_index, command,
- l10n_util::GetString(kMenuLayout[i].label));
-
- // |command| can be zero on submenu items (IDS_ENCODING,
- // IDS_ZOOM) and on separators.
- if (command != 0) {
- menu->EnableMenuItemAt(
+ if (command == IDC_ENCODING) {
+ Menu* encoding_menu = menu->AddSubMenu(
insertion_index,
- browser_->IsCommandEnabled(command));
+ IDC_ENCODING,
+ l10n_util::GetString(IDS_ENCODING));
+ encoding_menu->set_delegate(encoding_menu_delegate_.get());
+ EncodingMenuControllerDelegate::BuildEncodingMenu(browser_->profile(),
+ encoding_menu);
+ } else if (command == IDC_ZOOM) {
+ Menu* zoom_menu = menu->AddSubMenu(insertion_index, IDC_ZOOM,
+ l10n_util::GetString(IDS_ZOOM));
+ zoom_menu->AppendMenuItemWithLabel(
+ IDC_ZOOM_PLUS,
+ l10n_util::GetString(IDS_ZOOM_PLUS));
+ zoom_menu->AppendMenuItemWithLabel(
+ IDC_ZOOM_NORMAL,
+ l10n_util::GetString(IDS_ZOOM_NORMAL));
+ zoom_menu->AppendMenuItemWithLabel(
+ IDC_ZOOM_MINUS,
+ l10n_util::GetString(IDS_ZOOM_MINUS));
+ } else {
+ menu->AddMenuItemWithLabel(insertion_index, command,
+ l10n_util::GetString(kMenuLayout[i].label));
+ // |command| can be zero on submenu items (IDS_ENCODING,
+ // IDS_ZOOM) and on separators.
+ if (command != 0) {
+ menu->EnableMenuItemAt(insertion_index,
+ browser_->IsCommandEnabled(command));
+ }
}
}
}
diff --git a/chrome/browser/views/frame/browser_view2.h b/chrome/browser/views/frame/browser_view2.h
index 07ee529..40b4a4c 100644
--- a/chrome/browser/views/frame/browser_view2.h
+++ b/chrome/browser/views/frame/browser_view2.h
@@ -19,6 +19,7 @@
class BookmarkBarView;
class Browser;
class BrowserToolbarView;
+class EncodingMenuControllerDelegate;
class Menu;
class StatusBubble;
class TabContentsContainerView;
@@ -342,6 +343,9 @@ class BrowserView2 : public BrowserWindow,
// The OTR avatar image.
static SkBitmap otr_avatar_;
+ // The delegate for the encoding menu.
+ scoped_ptr<EncodingMenuControllerDelegate> encoding_menu_delegate_;
+
DISALLOW_EVIL_CONSTRUCTORS(BrowserView2);
};
diff --git a/chrome/views/menu.h b/chrome/views/menu.h
index ab70766..a1a4d02 100644
--- a/chrome/views/menu.h
+++ b/chrome/views/menu.h
@@ -203,6 +203,8 @@ class Menu {
explicit Menu(HMENU hmenu);
virtual ~Menu();
+ void set_delegate(Delegate* delegate) { delegate_ = delegate; }
+
// Adds an item to this menu.
// item_id The id of the item, used to identify it in delegate callbacks
// or (if delegate is NULL) to identify the command associated