Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Unified Diff: chrome/browser/ui/panels/panel_browser_titlebar_gtk.cc

Issue 10209037: Add key modifier to minimize/restore button click to minimize/restore-all panels for GTK (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/panels/panel_browser_titlebar_gtk.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
+}
« no previous file with comments | « chrome/browser/ui/panels/panel_browser_titlebar_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698