From e902118f0ff740716db431d2775be4486b41ce7f Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 31 Dec 2003 01:05:57 +0000 Subject: [PATCH] Pull accelerator key from the stock item if stock_id is given, but Wed Dec 31 02:05:39 2003 Matthias Clasen * gtk/gtkactiongroup.c (gtk_action_group_add_actions_full): (gtk_action_group_add_toggle_actions_full): (gtk_action_group_add_radio_actions_full): Pull accelerator key from the stock item if stock_id is given, but accelerator not. (Noticed by Jeff Franks and Jody Goldberg) * tests/testmerge.c: Remove the accelerator from the "Open" entry to test the above change. --- ChangeLog | 11 +++++++ ChangeLog.pre-2-10 | 11 +++++++ ChangeLog.pre-2-4 | 11 +++++++ ChangeLog.pre-2-6 | 11 +++++++ ChangeLog.pre-2-8 | 11 +++++++ gtk/gtkactiongroup.c | 68 ++++++++++++++++++++++++++++++-------------- tests/testmerge.c | 2 +- 7 files changed, 103 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3d609ceac..c8be3eea6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Wed Dec 31 02:05:39 2003 Matthias Clasen + + * gtk/gtkactiongroup.c (gtk_action_group_add_actions_full): + (gtk_action_group_add_toggle_actions_full): + (gtk_action_group_add_radio_actions_full): Pull accelerator key + from the stock item if stock_id is given, but accelerator + not. (Noticed by Jeff Franks and Jody Goldberg) + + * tests/testmerge.c: Remove the accelerator from the "Open" entry + to test the above change. + 2003-12-29 Federico Mena Quintero Make show_all() work for the extra and preview widgets; reported diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 3d609ceac..c8be3eea6 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,14 @@ +Wed Dec 31 02:05:39 2003 Matthias Clasen + + * gtk/gtkactiongroup.c (gtk_action_group_add_actions_full): + (gtk_action_group_add_toggle_actions_full): + (gtk_action_group_add_radio_actions_full): Pull accelerator key + from the stock item if stock_id is given, but accelerator + not. (Noticed by Jeff Franks and Jody Goldberg) + + * tests/testmerge.c: Remove the accelerator from the "Open" entry + to test the above change. + 2003-12-29 Federico Mena Quintero Make show_all() work for the extra and preview widgets; reported diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 3d609ceac..c8be3eea6 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,14 @@ +Wed Dec 31 02:05:39 2003 Matthias Clasen + + * gtk/gtkactiongroup.c (gtk_action_group_add_actions_full): + (gtk_action_group_add_toggle_actions_full): + (gtk_action_group_add_radio_actions_full): Pull accelerator key + from the stock item if stock_id is given, but accelerator + not. (Noticed by Jeff Franks and Jody Goldberg) + + * tests/testmerge.c: Remove the accelerator from the "Open" entry + to test the above change. + 2003-12-29 Federico Mena Quintero Make show_all() work for the extra and preview widgets; reported diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 3d609ceac..c8be3eea6 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,14 @@ +Wed Dec 31 02:05:39 2003 Matthias Clasen + + * gtk/gtkactiongroup.c (gtk_action_group_add_actions_full): + (gtk_action_group_add_toggle_actions_full): + (gtk_action_group_add_radio_actions_full): Pull accelerator key + from the stock item if stock_id is given, but accelerator + not. (Noticed by Jeff Franks and Jody Goldberg) + + * tests/testmerge.c: Remove the accelerator from the "Open" entry + to test the above change. + 2003-12-29 Federico Mena Quintero Make show_all() work for the extra and preview widgets; reported diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 3d609ceac..c8be3eea6 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,14 @@ +Wed Dec 31 02:05:39 2003 Matthias Clasen + + * gtk/gtkactiongroup.c (gtk_action_group_add_actions_full): + (gtk_action_group_add_toggle_actions_full): + (gtk_action_group_add_radio_actions_full): Pull accelerator key + from the stock item if stock_id is given, but accelerator + not. (Noticed by Jeff Franks and Jody Goldberg) + + * tests/testmerge.c: Remove the accelerator from the "Open" entry + to test the above change. + 2003-12-29 Federico Mena Quintero Make show_all() work for the extra and preview widgets; reported diff --git a/gtk/gtkactiongroup.c b/gtk/gtkactiongroup.c index 051010ed6..83768473c 100644 --- a/gtk/gtkactiongroup.c +++ b/gtk/gtkactiongroup.c @@ -31,6 +31,7 @@ #include #include "gtkactiongroup.h" +#include "gtkstock.h" #include "gtktoggleaction.h" #include "gtkradioaction.h" #include "gtkaccelmap.h" @@ -395,6 +396,10 @@ gtk_action_group_add_actions_full (GtkActionGroup *action_group, gpointer user_data, GDestroyNotify destroy) { + + /* Keep this in sync with the other + * gtk_action_group_add_..._actions_full() functions. + */ guint i; GtkTranslateFunc translate_func; gpointer translate_data; @@ -408,6 +413,9 @@ gtk_action_group_add_actions_full (GtkActionGroup *action_group, { GtkAction *action; gchar *accel_path; + guint accel_key = 0; + GdkModifierType accel_mods; + GtkStockItem stock_item; gchar *label; gchar *tooltip; @@ -437,17 +445,19 @@ gtk_action_group_add_actions_full (GtkActionGroup *action_group, /* set the accel path for the menu item */ accel_path = g_strconcat ("/", action_group->private_data->name, "/", entries[i].name, NULL); + if (entries[i].accelerator) + gtk_accelerator_parse (entries[i].accelerator, &accel_key, &accel_mods); + else if (entries[i].stock_id && + gtk_stock_lookup (entries[i].stock_id, &stock_item)) { - guint accel_key = 0; - GdkModifierType accel_mods; - - gtk_accelerator_parse (entries[i].accelerator, &accel_key, - &accel_mods); - if (accel_key) - gtk_accel_map_add_entry (accel_path, accel_key, accel_mods); + accel_key = stock_item.keyval; + accel_mods = stock_item.modifier; } + if (accel_key) + gtk_accel_map_add_entry (accel_path, accel_key, accel_mods); + gtk_action_set_accel_path (action, accel_path); g_free (accel_path); @@ -504,6 +514,9 @@ gtk_action_group_add_toggle_actions_full (GtkActionGroup *action_group, gpointer user_data, GDestroyNotify destroy) { + /* Keep this in sync with the other + * gtk_action_group_add_..._actions_full() functions. + */ guint i; GtkTranslateFunc translate_func; gpointer translate_data; @@ -517,6 +530,9 @@ gtk_action_group_add_toggle_actions_full (GtkActionGroup *action_group, { GtkAction *action; gchar *accel_path; + guint accel_key = 0; + GdkModifierType accel_mods; + GtkStockItem stock_item; gchar *label; gchar *tooltip; @@ -549,17 +565,19 @@ gtk_action_group_add_toggle_actions_full (GtkActionGroup *action_group, /* set the accel path for the menu item */ accel_path = g_strconcat ("/", action_group->private_data->name, "/", entries[i].name, NULL); + if (entries[i].accelerator) + gtk_accelerator_parse (entries[i].accelerator, &accel_key, &accel_mods); + else if (entries[i].stock_id && + gtk_stock_lookup (entries[i].stock_id, &stock_item)) { - guint accel_key = 0; - GdkModifierType accel_mods; - - gtk_accelerator_parse (entries[i].accelerator, &accel_key, - &accel_mods); - if (accel_key) - gtk_accel_map_add_entry (accel_path, accel_key, accel_mods); + accel_key = stock_item.keyval; + accel_mods = stock_item.modifier; } + if (accel_key) + gtk_accel_map_add_entry (accel_path, accel_key, accel_mods); + gtk_action_set_accel_path (action, accel_path); g_free (accel_path); @@ -626,6 +644,9 @@ gtk_action_group_add_radio_actions_full (GtkActionGroup *action_group, gpointer user_data, GDestroyNotify destroy) { + /* Keep this in sync with the other + * gtk_action_group_add_..._actions_full() functions. + */ guint i; GtkTranslateFunc translate_func; gpointer translate_data; @@ -641,6 +662,9 @@ gtk_action_group_add_radio_actions_full (GtkActionGroup *action_group, { GtkAction *action; gchar *accel_path; + guint accel_key = 0; + GdkModifierType accel_mods; + GtkStockItem stock_item; gchar *label; gchar *tooltip; @@ -676,17 +700,19 @@ gtk_action_group_add_radio_actions_full (GtkActionGroup *action_group, accel_path = g_strconcat ("/", action_group->private_data->name, "/", entries[i].name, NULL); + if (entries[i].accelerator) + gtk_accelerator_parse (entries[i].accelerator, &accel_key, &accel_mods); + else if (entries[i].stock_id && + gtk_stock_lookup (entries[i].stock_id, &stock_item)) { - guint accel_key = 0; - GdkModifierType accel_mods; - - gtk_accelerator_parse (entries[i].accelerator, &accel_key, - &accel_mods); - if (accel_key) - gtk_accel_map_add_entry (accel_path, accel_key, accel_mods); + accel_key = stock_item.keyval; + accel_mods = stock_item.modifier; } + if (accel_key) + gtk_accel_map_add_entry (accel_path, accel_key, accel_mods); + gtk_action_set_accel_path (action, accel_path); g_free (accel_path); diff --git a/tests/testmerge.c b/tests/testmerge.c index ff78028e4..09f190e89 100644 --- a/tests/testmerge.c +++ b/tests/testmerge.c @@ -138,7 +138,7 @@ static GtkActionEntry entries[] = { { "QuitAction", GTK_STOCK_QUIT, NULL, "q", "Quit", G_CALLBACK (gtk_main_quit) }, { "NewAction", GTK_STOCK_NEW, NULL, "n", "Create something", G_CALLBACK (activate_action) }, { "New2Action", GTK_STOCK_NEW, NULL, "m", "Create something else", G_CALLBACK (activate_action) }, - { "OpenAction", GTK_STOCK_OPEN, NULL, "o", "Open it", G_CALLBACK (activate_action) }, + { "OpenAction", GTK_STOCK_OPEN, NULL, NULL, "Open it", G_CALLBACK (activate_action) }, { "CutAction", GTK_STOCK_CUT, NULL, "x", "Knive", G_CALLBACK (activate_action) }, { "CopyAction", GTK_STOCK_COPY, NULL, "c", "Copy", G_CALLBACK (activate_action) }, { "PasteAction", GTK_STOCK_PASTE, NULL, "v", "Paste", G_CALLBACK (activate_action) }, -- 2.43.2