Chromium Code Reviews| Index: chrome/browser/ui/gtk/browser_window_gtk.cc |
| diff --git a/chrome/browser/ui/gtk/browser_window_gtk.cc b/chrome/browser/ui/gtk/browser_window_gtk.cc |
| index bfa8fe878f1b678ebf75956b22cca33e20b0baed..3ddb7ca28ca1bcb2b96695427661735298468508 100644 |
| --- a/chrome/browser/ui/gtk/browser_window_gtk.cc |
| +++ b/chrome/browser/ui/gtk/browser_window_gtk.cc |
| @@ -74,6 +74,7 @@ |
| #include "chrome/browser/ui/omnibox/omnibox_view.h" |
| #include "chrome/browser/ui/page_info_bubble.h" |
| #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| +#include "chrome/browser/ui/tabs/tab_mru_list_manager.h" |
| #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| #include "chrome/browser/ui/webui/task_manager/task_manager_dialog.h" |
| #include "chrome/browser/web_applications/web_app.h" |
| @@ -1796,6 +1797,8 @@ void BrowserWindowGtk::ConnectHandlersToSignals() { |
| G_CALLBACK(OnWindowStateThunk), this); |
| g_signal_connect(window_, "key-press-event", |
| G_CALLBACK(OnKeyPressThunk), this); |
| + g_signal_connect(window_, "key-release-event", |
| + G_CALLBACK(OnKeyReleaseThunk), this); |
| g_signal_connect(window_, "motion-notify-event", |
| G_CALLBACK(OnMouseMoveEventThunk), this); |
| g_signal_connect(window_, "button-press-event", |
| @@ -2220,6 +2223,19 @@ gboolean BrowserWindowGtk::OnKeyPress(GtkWidget* widget, GdkEventKey* event) { |
| // the custom accelerators before letting it handle them. |
| WebContents* current_web_contents = |
| browser()->GetSelectedWebContents(); |
| + |
| + guint modifier = event->state & gtk_accelerator_get_default_mod_mask(); |
| + bool is_tab_mru_switch = CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kEnableTabMRUSwitch); |
|
sky
2012/06/15 19:47:39
spacing is off. Rather than checking switch value,
NaveenBobbili (Motorola)
2012/06/25 09:44:23
Done.
|
| + if (GDK_CONTROL_MASK == modifier && is_tab_mru_switch) { |
| + if ((event->keyval == GDK_KEY_asciitilde) || |
| + (event->keyval == GDK_KEY_quoteleft)) { |
| + browser()->tab_mru_list_manager()->CommitActiveTabChanges(); |
| + } |
| + else |
| + browser()->tab_mru_list_manager()->PauseStackUpdates(); |
| + } |
| + |
| // The current tab might not have a render view if it crashed. |
| if (!current_web_contents || !current_web_contents->GetContentNativeView() || |
| !gtk_widget_is_focus(current_web_contents->GetContentNativeView())) { |
| @@ -2246,6 +2262,18 @@ gboolean BrowserWindowGtk::OnKeyPress(GtkWidget* widget, GdkEventKey* event) { |
| return TRUE; |
| } |
| +gboolean BrowserWindowGtk::OnKeyRelease(GtkWidget* widget, GdkEventKey* event) { |
| + bool is_tab_mru_switch = CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kEnableTabMRUSwitch); |
|
sky
2012/06/15 19:47:39
spacing is off.
NaveenBobbili (Motorola)
2012/06/25 09:44:23
Done.
|
| + if (is_tab_mru_switch && |
| + (event->keyval == GDK_KEY_Control_L || |
| + event->keyval == GDK_KEY_Control_R)) { |
| + browser()->tab_mru_list_manager()->CommitActiveTabChanges(); |
| + } |
| + |
| + return FALSE; |
| +} |
| + |
| gboolean BrowserWindowGtk::OnMouseMoveEvent(GtkWidget* widget, |
| GdkEventMotion* event) { |
| // This method is used to update the mouse cursor when over the edge of the |