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

Unified Diff: chrome/browser/gtk/bookmark_manager_gtk.cc

Issue 165220: Add ctrl+w accelerator to close bookmark manager for linux (Closed)
Patch Set: fix ident Created 11 years, 4 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/gtk/bookmark_manager_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/gtk/bookmark_manager_gtk.cc
diff --git a/chrome/browser/gtk/bookmark_manager_gtk.cc b/chrome/browser/gtk/bookmark_manager_gtk.cc
index a7a516de6bcbc8764b5ff4557c3957b774699ae9..61678ab108656d0a9f4ab92237da73fc3dc5c06e 100644
--- a/chrome/browser/gtk/bookmark_manager_gtk.cc
+++ b/chrome/browser/gtk/bookmark_manager_gtk.cc
@@ -321,6 +321,7 @@ BookmarkManagerGtk::BookmarkManagerGtk(Profile* profile)
sending_delayed_mousedown_(false),
ignore_rightclicks_(false) {
InitWidgets();
+ ConnectAccelerators();
gtk_util::SetWindowIcon(GTK_WINDOW(window_));
model_->AddObserver(this);
@@ -431,6 +432,19 @@ void BookmarkManagerGtk::InitWidgets() {
ResetOrganizeMenu(true);
}
+void BookmarkManagerGtk::ConnectAccelerators() {
+ GtkAccelGroup* accel_group = gtk_accel_group_new();
+ gtk_window_add_accel_group(GTK_WINDOW(window_), accel_group);
+
+ // Drop the initial ref on |accel_group| so |window_| will own it.
+ g_object_unref(accel_group);
+
+ gtk_accel_group_connect(accel_group,
+ GDK_w, GDK_CONTROL_MASK, GtkAccelFlags(0),
+ g_cclosure_new(G_CALLBACK(OnGtkAccelerator),
+ this, NULL));
+}
+
GtkWidget* BookmarkManagerGtk::MakeLeftPane() {
left_store_ = bookmark_utils::MakeFolderTreeStore();
left_tree_view_ = bookmark_utils::MakeTreeViewForStore(left_store_);
@@ -1432,3 +1446,21 @@ void BookmarkManagerGtk::FileSelected(const FilePath& path,
NOTREACHED();
}
}
+
+// static
+gboolean BookmarkManagerGtk::OnGtkAccelerator(GtkAccelGroup* accel_group,
+ GObject* acceleratable,
+ guint keyval,
+ GdkModifierType modifier,
+ BookmarkManagerGtk* bookmark_manager) {
+ modifier = static_cast<GdkModifierType>(
+ modifier & gtk_accelerator_get_default_mod_mask());
+ // The only accelerator we have registered is ctrl+w, so any other value is a
+ // non-fatal error.
+ DCHECK_EQ(keyval, static_cast<guint>(GDK_w));
+ DCHECK_EQ(modifier, GDK_CONTROL_MASK);
+
+ gtk_widget_destroy(bookmark_manager->window_);
+
+ return TRUE;
+}
« no previous file with comments | « chrome/browser/gtk/bookmark_manager_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698