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 |