Chromium Code Reviews| 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; |
| +} |