Index: chrome/browser/ui/panels/panel_browser_titlebar_gtk.cc |
diff --git a/chrome/browser/ui/panels/panel_browser_titlebar_gtk.cc b/chrome/browser/ui/panels/panel_browser_titlebar_gtk.cc |
index d1d80dc45a58f66b0b2c1dfecd9890131a07081c..b8d7ada2eb392c9330781ccc29d102d6f8f22012 100644 |
--- a/chrome/browser/ui/panels/panel_browser_titlebar_gtk.cc |
+++ b/chrome/browser/ui/panels/panel_browser_titlebar_gtk.cc |
@@ -29,6 +29,19 @@ PanelBrowserTitlebarGtk::PanelBrowserTitlebarGtk( |
PanelBrowserTitlebarGtk::~PanelBrowserTitlebarGtk() { |
} |
+void PanelBrowserTitlebarGtk::Init() { |
jennb
2012/04/27 23:38:39
Don't need to override Init() in titlebar. You can
|
+ BrowserTitlebar::Init(); |
+ |
+ // Need to watch for minimize/unminimize button release event so that we can |
+ // find out if the user is pressing down the modifier key simultaneously. |
+ if (minimize_button() && unminimize_button_.get()) { |
jennb
2012/04/27 23:43:15
Or, since we connect signals in the PanelBrowserWi
|
+ g_signal_connect(minimize_button()->widget(), "button-release-event", |
+ G_CALLBACK(OnMinimizeButtonReleaseEventThunk), this); |
+ g_signal_connect(unminimize_button_->widget(), "button-release-event", |
+ G_CALLBACK(OnUnminimizeButtonReleaseEventThunk), this); |
+ } |
+} |
+ |
bool PanelBrowserTitlebarGtk::BuildButton(const std::string& button_token, |
bool left_side) { |
// Panel only shows close and minimize/restore buttons. |
@@ -85,12 +98,32 @@ void PanelBrowserTitlebarGtk::UpdateMinimizeRestoreButtonVisibility() { |
void PanelBrowserTitlebarGtk::HandleButtonClick(GtkWidget* button) { |
if (close_button() && close_button()->widget() == button) |
browser_window_->panel()->Close(); |
- else if (minimize_button() && minimize_button()->widget() == button) |
- browser_window_->panel()->Minimize(); |
- else if (unminimize_button_.get() && unminimize_button_->widget() == button) |
- browser_window_->panel()->Restore(); |
+ // Minimize/unminimize buttons are handled in mouse-release-event so that we |
+ // can find out if the user is pressing down the modifier key simultaneously. |
} |
void PanelBrowserTitlebarGtk::ShowFaviconMenu(GdkEventButton* event) { |
// Favicon menu is not supported in panels. |
} |
+ |
+gboolean PanelBrowserTitlebarGtk::OnMinimizeButtonReleaseEvent( |
+ GtkWidget* widget, GdkEventButton* event) { |
+ if (event->button != 1) |
+ return TRUE; |
+ |
+ browser_window_->panel()->OnMinimizeButtonClicked( |
+ (event->state & GDK_CONTROL_MASK) ? |
+ panel::APPLY_TO_ALL : panel::NO_MODIFIER); |
+ return TRUE; |
+} |
+ |
+gboolean PanelBrowserTitlebarGtk::OnUnminimizeButtonReleaseEvent( |
+ GtkWidget* widget, GdkEventButton* event) { |
+ if (event->button != 1) |
+ return TRUE; |
+ |
+ browser_window_->panel()->OnRestoreButtonClicked( |
+ (event->state & GDK_CONTROL_MASK) ? |
+ panel::APPLY_TO_ALL : panel::NO_MODIFIER); |
+ return TRUE; |
+} |