[gnome-terminal] accels: Sync app and menu accelerators
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-terminal] accels: Sync app and menu accelerators
- Date: Fri, 25 Apr 2014 11:06:57 +0000 (UTC)
commit 6e0bcf62bdb8b1c5e3f1fe2b7d339b674138f8c6
Author: Christian Persch <chpe gnome org>
Date: Fri Apr 25 10:00:14 2014 +0200
accels: Sync app and menu accelerators
When porting to using gtkapplication accelerators, there was a regression
in that the in-menu accelerators were not changed/disabled accordingly, which
meant that they were still being activated even when the global accelerator
was disabled.
https://bugzilla.gnome.org/show_bug.cgi?id=728121
src/terminal-accels.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++-
src/terminal-app.c | 7 ++++++
2 files changed, 55 insertions(+), 2 deletions(-)
---
diff --git a/src/terminal-accels.c b/src/terminal-accels.c
index 65d56bd..81f5c9a 100644
--- a/src/terminal-accels.c
+++ b/src/terminal-accels.c
@@ -76,6 +76,35 @@
#define KEY_ZOOM_OUT "zoom-out"
#define KEY_SWITCH_TAB_PREFIX "switch-to-tab-"
+/* Accel paths for the gtkuimanager based menus */
+#define ACCEL_PATH_ROOT "<Actions>/Main/"
+#define ACCEL_PATH_KEY_CLOSE_TAB ACCEL_PATH_ROOT "FileCloseTab"
+#define ACCEL_PATH_KEY_CLOSE_WINDOW ACCEL_PATH_ROOT "FileCloseWindow"
+#define ACCEL_PATH_KEY_COPY ACCEL_PATH_ROOT "EditCopy"
+#define ACCEL_PATH_KEY_DETACH_TAB ACCEL_PATH_ROOT "TabsDetach"
+#define ACCEL_PATH_KEY_FIND ACCEL_PATH_ROOT "SearchFind"
+#define ACCEL_PATH_KEY_FIND_CLEAR ACCEL_PATH_ROOT "SearchClearHighlight"
+#define ACCEL_PATH_KEY_FIND_PREV ACCEL_PATH_ROOT "SearchFindPrevious"
+#define ACCEL_PATH_KEY_FIND_NEXT ACCEL_PATH_ROOT "SearchFindNext"
+#define ACCEL_PATH_KEY_FULL_SCREEN ACCEL_PATH_ROOT "ViewFullscreen"
+#define ACCEL_PATH_KEY_HELP ACCEL_PATH_ROOT "HelpContents"
+#define ACCEL_PATH_KEY_MOVE_TAB_LEFT ACCEL_PATH_ROOT "TabsMoveLeft"
+#define ACCEL_PATH_KEY_MOVE_TAB_RIGHT ACCEL_PATH_ROOT "TabsMoveRight"
+#define ACCEL_PATH_KEY_NEW_PROFILE ACCEL_PATH_ROOT "FileNewProfile"
+#define ACCEL_PATH_KEY_NEW_TAB ACCEL_PATH_ROOT "FileNewTab"
+#define ACCEL_PATH_KEY_NEW_WINDOW ACCEL_PATH_ROOT "FileNewWindow"
+#define ACCEL_PATH_KEY_NEXT_TAB ACCEL_PATH_ROOT "TabsNext"
+#define ACCEL_PATH_KEY_PASTE ACCEL_PATH_ROOT "EditPaste"
+#define ACCEL_PATH_KEY_PREV_TAB ACCEL_PATH_ROOT "TabsPrevious"
+#define ACCEL_PATH_KEY_RESET ACCEL_PATH_ROOT "TerminalReset"
+#define ACCEL_PATH_KEY_RESET_AND_CLEAR ACCEL_PATH_ROOT "TerminalResetClear"
+#define ACCEL_PATH_KEY_SAVE_CONTENTS ACCEL_PATH_ROOT "FileSaveContents"
+#define ACCEL_PATH_KEY_TOGGLE_MENUBAR ACCEL_PATH_ROOT "ViewMenubar"
+#define ACCEL_PATH_KEY_ZOOM_IN ACCEL_PATH_ROOT "ViewZoomIn"
+#define ACCEL_PATH_KEY_ZOOM_NORMAL ACCEL_PATH_ROOT "ViewZoom100"
+#define ACCEL_PATH_KEY_ZOOM_OUT ACCEL_PATH_ROOT "ViewZoomOut"
+#define ACCEL_PATH_KEY_SWITCH_TAB_PREFIX ACCEL_PATH_ROOT "TabsSwitch"
+
#if 1
/*
* We don't want to enable content saving until vte supports it async.
@@ -99,6 +128,10 @@ typedef struct
const char *action_parameter;
GVariant *parameter;
gboolean installed;
+#if 1
+ /* Legacy gtkuimanager menu accelerator */
+ const char *legacy_accel_path;
+#endif
} KeyEntry;
typedef struct
@@ -108,8 +141,8 @@ typedef struct
const char *user_visible_name;
} KeyEntryList;
-#define ENTRY(name, key, action, type, parameter) \
- { name, key, "win." action, (const GVariantType *) type, parameter, NULL, FALSE }
+#define ENTRY(name, key, action, type, parameter) \
+ { name, key, "win." action, (const GVariantType *) type, parameter, NULL, FALSE, ACCEL_PATH_##key }
static KeyEntry file_entries[] = {
ENTRY (N_("New Terminal in New Tab"), KEY_NEW_TAB, "new-terminal", "(ss)", "('tab','current')"
),
@@ -251,6 +284,19 @@ key_changed_cb (GSettings *settings,
key_entry->parameter);
key_entry->installed = TRUE;
}
+
+#if 1
+ /* Legacy gtkuimanager menu accelerator */
+ {
+ GdkModifierType mods = 0;
+ guint key = 0;
+
+ if (!g_str_equal (value, "disabled"))
+ gtk_accelerator_parse (value, &key, &mods);
+
+ gtk_accel_map_change_entry (key_entry->legacy_accel_path, key, mods, TRUE);
+ }
+#endif
}
void
diff --git a/src/terminal-app.c b/src/terminal-app.c
index 57a6f15..01af322 100644
--- a/src/terminal-app.c
+++ b/src/terminal-app.c
@@ -380,6 +380,13 @@ terminal_app_init (TerminalApp *app)
settings = g_settings_get_child (app->global_settings, "keybindings");
terminal_accels_init (G_APPLICATION (app), settings);
+
+#if 1
+ /* Legacy gtkuimanager menu accelerator */
+ /* Disallow in-place menu accel changes. Only needed on gtk 3.8,
+ * it's unused and ignored from 3.10 onward. */
+ g_object_set (gtk_settings_get_default (), "gtk-can-change-accels", FALSE, NULL);
+#endif
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]