Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/panels/panel_browser_titlebar_gtk.h" | 5 #include "chrome/browser/ui/panels/panel_browser_titlebar_gtk.h" |
| 6 | 6 |
| 7 #include "chrome/browser/ui/gtk/custom_button.h" | 7 #include "chrome/browser/ui/gtk/custom_button.h" |
| 8 #include "chrome/browser/ui/panels/panel.h" | 8 #include "chrome/browser/ui/panels/panel.h" |
| 9 #include "chrome/browser/ui/panels/panel_browser_window_gtk.h" | 9 #include "chrome/browser/ui/panels/panel_browser_window_gtk.h" |
| 10 #include "grit/generated_resources.h" | 10 #include "grit/generated_resources.h" |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 22 | 22 |
| 23 PanelBrowserTitlebarGtk::PanelBrowserTitlebarGtk( | 23 PanelBrowserTitlebarGtk::PanelBrowserTitlebarGtk( |
| 24 PanelBrowserWindowGtk* browser_window, GtkWindow* window) | 24 PanelBrowserWindowGtk* browser_window, GtkWindow* window) |
| 25 : BrowserTitlebar(browser_window, window), | 25 : BrowserTitlebar(browser_window, window), |
| 26 browser_window_(browser_window) { | 26 browser_window_(browser_window) { |
| 27 } | 27 } |
| 28 | 28 |
| 29 PanelBrowserTitlebarGtk::~PanelBrowserTitlebarGtk() { | 29 PanelBrowserTitlebarGtk::~PanelBrowserTitlebarGtk() { |
| 30 } | 30 } |
| 31 | 31 |
| 32 void PanelBrowserTitlebarGtk::Init() { | |
|
jennb
2012/04/27 23:38:39
Don't need to override Init() in titlebar. You can
| |
| 33 BrowserTitlebar::Init(); | |
| 34 | |
| 35 // Need to watch for minimize/unminimize button release event so that we can | |
| 36 // find out if the user is pressing down the modifier key simultaneously. | |
| 37 if (minimize_button() && unminimize_button_.get()) { | |
|
jennb
2012/04/27 23:43:15
Or, since we connect signals in the PanelBrowserWi
| |
| 38 g_signal_connect(minimize_button()->widget(), "button-release-event", | |
| 39 G_CALLBACK(OnMinimizeButtonReleaseEventThunk), this); | |
| 40 g_signal_connect(unminimize_button_->widget(), "button-release-event", | |
| 41 G_CALLBACK(OnUnminimizeButtonReleaseEventThunk), this); | |
| 42 } | |
| 43 } | |
| 44 | |
| 32 bool PanelBrowserTitlebarGtk::BuildButton(const std::string& button_token, | 45 bool PanelBrowserTitlebarGtk::BuildButton(const std::string& button_token, |
| 33 bool left_side) { | 46 bool left_side) { |
| 34 // Panel only shows close and minimize/restore buttons. | 47 // Panel only shows close and minimize/restore buttons. |
| 35 if (button_token != "close" && button_token != "minimize") | 48 if (button_token != "close" && button_token != "minimize") |
| 36 return false; | 49 return false; |
| 37 | 50 |
| 38 // Create unminimze button in order to show it to expand the minimized panel. | 51 // Create unminimze button in order to show it to expand the minimized panel. |
| 39 if (button_token == "minimize") | 52 if (button_token == "minimize") |
| 40 unminimize_button_.reset(CreateTitlebarButton("unminimize", left_side)); | 53 unminimize_button_.reset(CreateTitlebarButton("unminimize", left_side)); |
| 41 | 54 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 78 return; | 91 return; |
| 79 | 92 |
| 80 Panel* panel = browser_window_->panel(); | 93 Panel* panel = browser_window_->panel(); |
| 81 gtk_widget_set_visible(minimize_button()->widget(), panel->CanMinimize()); | 94 gtk_widget_set_visible(minimize_button()->widget(), panel->CanMinimize()); |
| 82 gtk_widget_set_visible(unminimize_button_->widget(), panel->CanRestore()); | 95 gtk_widget_set_visible(unminimize_button_->widget(), panel->CanRestore()); |
| 83 } | 96 } |
| 84 | 97 |
| 85 void PanelBrowserTitlebarGtk::HandleButtonClick(GtkWidget* button) { | 98 void PanelBrowserTitlebarGtk::HandleButtonClick(GtkWidget* button) { |
| 86 if (close_button() && close_button()->widget() == button) | 99 if (close_button() && close_button()->widget() == button) |
| 87 browser_window_->panel()->Close(); | 100 browser_window_->panel()->Close(); |
| 88 else if (minimize_button() && minimize_button()->widget() == button) | 101 // Minimize/unminimize buttons are handled in mouse-release-event so that we |
| 89 browser_window_->panel()->Minimize(); | 102 // can find out if the user is pressing down the modifier key simultaneously. |
| 90 else if (unminimize_button_.get() && unminimize_button_->widget() == button) | |
| 91 browser_window_->panel()->Restore(); | |
| 92 } | 103 } |
| 93 | 104 |
| 94 void PanelBrowserTitlebarGtk::ShowFaviconMenu(GdkEventButton* event) { | 105 void PanelBrowserTitlebarGtk::ShowFaviconMenu(GdkEventButton* event) { |
| 95 // Favicon menu is not supported in panels. | 106 // Favicon menu is not supported in panels. |
| 96 } | 107 } |
| 108 | |
| 109 gboolean PanelBrowserTitlebarGtk::OnMinimizeButtonReleaseEvent( | |
| 110 GtkWidget* widget, GdkEventButton* event) { | |
| 111 if (event->button != 1) | |
| 112 return TRUE; | |
| 113 | |
| 114 browser_window_->panel()->OnMinimizeButtonClicked( | |
| 115 (event->state & GDK_CONTROL_MASK) ? | |
| 116 panel::APPLY_TO_ALL : panel::NO_MODIFIER); | |
| 117 return TRUE; | |
| 118 } | |
| 119 | |
| 120 gboolean PanelBrowserTitlebarGtk::OnUnminimizeButtonReleaseEvent( | |
| 121 GtkWidget* widget, GdkEventButton* event) { | |
| 122 if (event->button != 1) | |
| 123 return TRUE; | |
| 124 | |
| 125 browser_window_->panel()->OnRestoreButtonClicked( | |
| 126 (event->state & GDK_CONTROL_MASK) ? | |
| 127 panel::APPLY_TO_ALL : panel::NO_MODIFIER); | |
| 128 return TRUE; | |
| 129 } | |
| OLD | NEW |