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

Unified Diff: chrome/browser/ui/gtk/browser_window_gtk.cc

Issue 10117016: Implementation for switching between recently used tabs using ctrl tilde or quoteleft. Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fixed review comments. Created 8 years, 6 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
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

Powered by Google App Engine
This is Rietveld 408576698