summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/tabs
diff options
context:
space:
mode:
authortc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-12 22:39:57 +0000
committertc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-12 22:39:57 +0000
commitf943ae3d14bd06b77a7f8d867470fe615db6a896 (patch)
treed0f07fef533ab5fda0c22cdc208a0373dfbc311d /chrome/browser/gtk/tabs
parentc924d1ba4c65d8fbb382cc03c81f2d2ef1d21d2d (diff)
downloadchromium_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.cc97
-rw-r--r--chrome/browser/gtk/tabs/tab_strip_gtk.h20
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_;