diff options
author | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-12 22:39:57 +0000 |
---|---|---|
committer | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-12 22:39:57 +0000 |
commit | f943ae3d14bd06b77a7f8d867470fe615db6a896 (patch) | |
tree | d0f07fef533ab5fda0c22cdc208a0373dfbc311d /chrome/browser/gtk/tabs | |
parent | c924d1ba4c65d8fbb382cc03c81f2d2ef1d21d2d (diff) | |
download | chromium_src-f943ae3d14bd06b77a7f8d867470fe615db6a896.zip chromium_src-f943ae3d14bd06b77a7f8d867470fe615db6a896.tar.gz chromium_src-f943ae3d14bd06b77a7f8d867470fe615db6a896.tar.bz2 |
Refactor the titlebar code into its own class because it's getting big
and cluttering up browser_window_gtk.
Fix a small painting bug when a menu is drawn over the titlebar background.
Also move the tab strip context menu into the titlebar background container
by adding an event box. Now the context menu appears e.g., below the
min/max/close buttons or above the tab strip.
Review URL: http://codereview.chromium.org/125078
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18328 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/tabs')
-rw-r--r-- | chrome/browser/gtk/tabs/tab_strip_gtk.cc | 97 | ||||
-rw-r--r-- | chrome/browser/gtk/tabs/tab_strip_gtk.h | 20 |
2 files changed, 0 insertions, 117 deletions
diff --git a/chrome/browser/gtk/tabs/tab_strip_gtk.cc b/chrome/browser/gtk/tabs/tab_strip_gtk.cc index d460c59..2b95e74 100644 --- a/chrome/browser/gtk/tabs/tab_strip_gtk.cc +++ b/chrome/browser/gtk/tabs/tab_strip_gtk.cc @@ -18,10 +18,7 @@ #include "chrome/browser/profile.h" #include "chrome/browser/tab_contents/tab_contents.h" #include "chrome/common/gtk_util.h" -#include "chrome/common/pref_names.h" -#include "chrome/common/pref_service.h" #include "grit/app_resources.h" -#include "grit/generated_resources.h" #include "grit/theme_resources.h" namespace { @@ -488,8 +485,6 @@ void TabStripGtk::Init(Profile* profile) { G_CALLBACK(OnExpose), this); g_signal_connect(G_OBJECT(tabstrip_.get()), "size-allocate", G_CALLBACK(OnSizeAllocate), this); - g_signal_connect(G_OBJECT(tabstrip_.get()), "button-press-event", - G_CALLBACK(OnButtonPress), this); g_signal_connect(G_OBJECT(tabstrip_.get()), "drag-motion", G_CALLBACK(OnDragMotion), this); g_signal_connect(G_OBJECT(tabstrip_.get()), "drag-drop", @@ -1482,19 +1477,6 @@ void TabStripGtk::OnSizeAllocate(GtkWidget* widget, GtkAllocation* allocation, } // static -gboolean TabStripGtk::OnButtonPress(GtkWidget* widget, GdkEventButton* event, - TabStripGtk* tabstrip) { - if (1 == event->button) { - gtk_window_begin_move_drag(GTK_WINDOW(gtk_widget_get_toplevel(widget)), - event->button, event->x_root, event->y_root, event->time); - } else if (3 == event->button) { - tabstrip->ShowContextMenu(); - } - - return TRUE; -} - -// static gboolean TabStripGtk::OnDragMotion(GtkWidget* widget, GdkDragContext* context, gint x, gint y, guint time, TabStripGtk* tabstrip) { @@ -1570,82 +1552,3 @@ CustomDrawButton* TabStripGtk::MakeNewTabButton() { return button; } - -void TabStripGtk::ShowContextMenu() { - if (!context_menu_.get()) { - context_menu_.reset(new MenuGtk(this, false)); - context_menu_->AppendMenuItemWithLabel( - TabStripModel::CommandNewTab, - l10n_util::GetStringUTF8(IDS_TAB_CXMENU_NEWTAB)); - context_menu_->AppendMenuItemWithLabel( - TabStripModel::CommandRestoreTab, - l10n_util::GetStringUTF8(IDS_RESTORE_TAB)); - - context_menu_->AppendSeparator(); - - context_menu_->AppendMenuItemWithLabel( - TabStripModel::CommandTaskManager, - l10n_util::GetStringUTF8(IDS_TASK_MANAGER)); - - context_menu_->AppendSeparator(); - - context_menu_->AppendCheckMenuItemWithLabel( - kShowWindowDecorationsCommand, - l10n_util::GetStringUTF8(IDS_SHOW_WINDOW_DECORATIONS)); - } - - context_menu_->PopupAsContext(gtk_get_current_event_time()); -} - -bool TabStripGtk::IsCommandEnabled(int command_id) const { - switch (command_id) { - case TabStripModel::CommandNewTab: - case kShowWindowDecorationsCommand: - return true; - - case TabStripModel::CommandRestoreTab: - return model_->delegate()->CanRestoreTab(); - - case TabStripModel::CommandTaskManager: - // TODO(tc): This needs to be implemented in the TabStripModelDelegate. - return false; - - default: - NOTREACHED(); - } - return false; -} - -bool TabStripGtk::IsItemChecked(int command_id) const { - DCHECK(command_id == kShowWindowDecorationsCommand); - PrefService* prefs = model_->profile()->GetPrefs(); - return !prefs->GetBoolean(prefs::kUseCustomChromeFrame); -} - -void TabStripGtk::ExecuteCommand(int command_id) { - switch (command_id) { - case TabStripModel::CommandNewTab: - model_->delegate()->AddBlankTab(true); - break; - - case TabStripModel::CommandRestoreTab: - model_->delegate()->RestoreTab(); - break; - - case TabStripModel::CommandTaskManager: - // TODO(tc): This needs to be implemented in the TabStripModelDelegate. - NOTIMPLEMENTED(); - break; - - case kShowWindowDecorationsCommand: - { - PrefService* prefs = model_->profile()->GetPrefs(); - prefs->SetBoolean(prefs::kUseCustomChromeFrame, - !prefs->GetBoolean(prefs::kUseCustomChromeFrame)); - break; - } - - default: - NOTREACHED(); - } -} diff --git a/chrome/browser/gtk/tabs/tab_strip_gtk.h b/chrome/browser/gtk/tabs/tab_strip_gtk.h index 93b953f..4e85403 100644 --- a/chrome/browser/gtk/tabs/tab_strip_gtk.h +++ b/chrome/browser/gtk/tabs/tab_strip_gtk.h @@ -12,7 +12,6 @@ #include "base/gfx/rect.h" #include "base/task.h" #include "base/message_loop.h" -#include "chrome/browser/gtk/menu_gtk.h" #include "chrome/browser/gtk/tabs/tab_gtk.h" #include "chrome/browser/tabs/tab_strip_model.h" #include "chrome/common/owned_widget_gtk.h" @@ -22,7 +21,6 @@ class DraggedTabControllerGtk; class TabStripGtk : public TabStripModelObserver, public TabGtk::TabDelegate, - public MenuGtk::Delegate, public MessageLoopForUI::Observer { public: class TabAnimation; @@ -189,10 +187,6 @@ class TabStripGtk : public TabStripModelObserver, static void OnSizeAllocate(GtkWidget* widget, GtkAllocation* allocation, TabStripGtk* tabstrip); - // Event handler for context menu popups. - static gboolean OnButtonPress(GtkWidget* widget, GdkEventButton* event, - TabStripGtk* tabstrip); - // drag-motion handler that is signaled when the user performs a drag in the // tabstrip bounds. static gboolean OnDragMotion(GtkWidget* widget, GdkDragContext* context, @@ -282,17 +276,6 @@ class TabStripGtk : public TabStripModelObserver, // during animations, so we can't use current_unselected_width_. void LayoutNewTabButton(double last_tab_right, double unselected_width); - // -- Context Menu ----------------------------------------------------------- - - // On Windows, right clicking in the tab strip background brings up the - // system menu. There's no such thing on linux, so we just show the menu - // items we add to the menu. - void ShowContextMenu(); - // MenuGtk::Delegate implementation: - virtual bool IsCommandEnabled(int command_id) const; - virtual bool IsItemChecked(int command_id) const; - virtual void ExecuteCommand(int command_id); - // -- Link Drag & Drop ------------------------------------------------------ // Returns the bounds to render the drop at, in screen coordinates. Sets @@ -385,9 +368,6 @@ class TabStripGtk : public TabStripModelObserver, // the drag session. scoped_ptr<DraggedTabControllerGtk> drag_controller_; - // The context menu. - scoped_ptr<MenuGtk> context_menu_; - // A factory that is used to construct a delayed callback to the // ResizeLayoutTabsNow method. ScopedRunnableMethodFactory<TabStripGtk> resize_layout_factory_; |