gnome-terminal r2724 - trunk/src
- From: chpe svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-terminal r2724 - trunk/src
- Date: Thu, 29 May 2008 19:48:28 +0000 (UTC)
Author: chpe
Date: Thu May 29 19:48:28 2008
New Revision: 2724
URL: http://svn.gnome.org/viewvc/gnome-terminal?rev=2724&view=rev
Log:
Move the menubar accel handling to TerminalWindow in the same function that handles the mnemonics setting.
Add a property for the menubar accel state to TerminalApp.
Modified:
trunk/src/terminal-accels.c
trunk/src/terminal-app.c
trunk/src/terminal-app.h
trunk/src/terminal-window.c
Modified: trunk/src/terminal-accels.c
==============================================================================
--- trunk/src/terminal-accels.c (original)
+++ trunk/src/terminal-accels.c Thu May 29 19:48:28 2008
@@ -196,16 +196,6 @@
GConfEntry *entry,
gpointer user_data);
-static void mnemonics_change_notify (GConfClient *client,
- guint cnxn_id,
- GConfEntry *entry,
- gpointer user_data);
-
-static void menu_accels_change_notify (GConfClient *client,
- guint cnxn_id,
- GConfEntry *entry,
- gpointer user_data);
-
static void accel_changed_callback (GtkAccelGroup *accel_group,
guint keyval,
GdkModifierType modifier,
@@ -226,14 +216,9 @@
static void queue_gconf_sync (void);
-static void update_menu_accel_state (void);
-
static GtkAccelGroup * /* accel_group_i_need_because_gtk_accel_api_sucks */ hack_group = NULL;
-static gboolean using_mnemonics = TRUE;
-static gboolean using_menu_accels = TRUE;
/* never set gconf keys in response to receiving a gconf notify. */
static int inside_gconf_notify = 0;
-static char *saved_menu_accel = NULL;
static GtkWidget *edit_keys_dialog = NULL;
static GtkWidget *edit_keys_dialog_treeview = NULL;
static GtkWidget *edit_keys_dialog_mnemonics_checkbutton = NULL;
@@ -308,20 +293,6 @@
"accel_changed",
G_CALLBACK (accel_changed_callback),
NULL);
-
- using_mnemonics = gconf_client_get_bool (conf, CONF_GLOBAL_PREFIX"/use_mnemonics", NULL);
- gconf_client_notify_add (conf,
- CONF_GLOBAL_PREFIX"/use_mnemonics",
- mnemonics_change_notify,
- NULL, NULL, NULL);
-
- using_menu_accels = gconf_client_get_bool (conf, CONF_GLOBAL_PREFIX"/use_menu_accelerators", NULL);
- update_menu_accel_state ();
-
- gconf_client_notify_add (conf,
- CONF_GLOBAL_PREFIX"/use_menu_accelerators",
- menu_accels_change_notify,
- NULL, NULL, NULL);
}
static gboolean
@@ -469,6 +440,7 @@
}
}
+#if 0
static void
mnemonics_change_notify (GConfClient *client,
guint cnxn_id,
@@ -531,6 +503,7 @@
}
}
}
+#endif
static gboolean
binding_from_string (const char *str,
@@ -918,6 +891,7 @@
disable_mnemonics_toggled (GtkWidget *button,
gpointer data)
{
+#if 0
gboolean active;
active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
@@ -935,12 +909,14 @@
!active, NULL);
g_object_unref (conf);
}
+#endif
}
static void
disable_menu_accels_toggled (GtkWidget *button,
gpointer data)
{
+#if 0
gboolean active;
active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
@@ -958,6 +934,7 @@
!active, NULL);
g_object_unref (conf);
}
+#endif
}
void
@@ -989,7 +966,9 @@
G_CALLBACK (gtk_widget_destroyed),
&edit_keys_dialog_mnemonics_checkbutton);
+#if 0
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (disable_mnemonics_button), !using_mnemonics);
+#endif
g_signal_connect (disable_mnemonics_button, "toggled",
G_CALLBACK (disable_mnemonics_toggled),
NULL);
@@ -999,7 +978,9 @@
G_CALLBACK (gtk_widget_destroyed),
&edit_keys_dialog_menu_accel_checkbutton);
+#if 0
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (disable_menu_accel_button), !using_menu_accels);
+#endif
g_signal_connect (disable_menu_accel_button, "toggled",
G_CALLBACK (disable_menu_accels_toggled),
NULL);
@@ -1083,36 +1064,3 @@
gtk_window_present (GTK_WINDOW (edit_keys_dialog));
}
-
-static void
-update_menu_accel_state (void)
-{
- /* Now this is a bad hack on so many levels. */
-
- if (saved_menu_accel == NULL)
- {
- g_object_get (G_OBJECT (gtk_settings_get_default ()),
- "gtk-menu-bar-accel",
- &saved_menu_accel,
- NULL);
- /* FIXME if gtkrc is reparsed we don't catch on,
- * I guess.
- */
- }
-
- if (using_menu_accels)
- {
- gtk_settings_set_string_property (gtk_settings_get_default (),
- "gtk-menu-bar-accel",
- saved_menu_accel,
- "gnome-terminal");
- }
- else
- {
- gtk_settings_set_string_property (gtk_settings_get_default (),
- "gtk-menu-bar-accel",
- /* no one will ever press this ;-) */
- "<Shift><Control><Mod1><Mod2><Mod3><Mod4><Mod5>F10",
- "gnome-terminal");
- }
-}
Modified: trunk/src/terminal-app.c
==============================================================================
--- trunk/src/terminal-app.c (original)
+++ trunk/src/terminal-app.c Thu May 29 19:48:28 2008
@@ -92,6 +92,7 @@
guint default_profile_notify_id;
guint system_font_notify_id;
guint enable_mnemonics_notify_id;
+ guint enable_menu_accels_notify_id;
GHashTable *profiles;
char* default_profile_id;
@@ -100,6 +101,7 @@
PangoFontDescription *system_font_desc;
gboolean enable_mnemonics;
+ gboolean enable_menu_accels;
gboolean use_factory;
};
@@ -108,6 +110,7 @@
{
PROP_0,
PROP_DEFAULT_PROFILE,
+ PROP_ENABLE_MENU_ACCELS,
PROP_ENABLE_MNEMONICS,
PROP_SYSTEM_FONT,
};
@@ -136,6 +139,9 @@
#define ENABLE_MNEMONICS_KEY CONF_GLOBAL_PREFIX "/use_mnemonics"
#define DEFAULT_ENABLE_MNEMONICS (TRUE)
+#define ENABLE_MENU_ACCELS_KEY CONF_GLOBAL_PREFIX"/use_menu_accelerators"
+#define DEFAULT_ENABLE_MENU_ACCELS (TRUE)
+
#define PROFILE_LIST_KEY CONF_GLOBAL_PREFIX "/profile_list"
#define DEFAULT_PROFILE_KEY CONF_GLOBAL_PREFIX "/default_profile"
@@ -210,7 +216,7 @@
{
/* We are the default profile */
app->default_profile = profile;
- g_object_notify (G_OBJECT (app), "default-profile");
+ g_object_notify (G_OBJECT (app), TERMINAL_APP_DEFAULT_PROFILE);
}
return profile;
@@ -521,7 +527,7 @@
*/
app->default_profile = profile;
- g_object_notify (G_OBJECT (app), "default-profile");
+ g_object_notify (G_OBJECT (app), TERMINAL_APP_DEFAULT_PROFILE);
g_object_unref (profile);
}
@@ -849,7 +855,7 @@
app->default_profile = new_default;
- g_object_notify (object, "default-profile");
+ g_object_notify (object, TERMINAL_APP_DEFAULT_PROFILE);
}
g_assert (terminal_app_get_profile_count (app) > 0);
@@ -883,7 +889,7 @@
app->default_profile = terminal_app_get_profile_by_name (app, name);
- g_object_notify (G_OBJECT (app), "default-profile");
+ g_object_notify (G_OBJECT (app), TERMINAL_APP_DEFAULT_PROFILE);
}
static void
@@ -921,7 +927,7 @@
app->system_font_desc = font_desc;
- g_object_notify (G_OBJECT (app), "system-font");
+ g_object_notify (G_OBJECT (app), TERMINAL_APP_SYSTEM_FONT);
}
static void
@@ -933,8 +939,7 @@
TerminalApp *app = TERMINAL_APP (user_data);
GConfValue *gconf_value;
- if (strcmp (gconf_entry_get_key (entry),
- CONF_GLOBAL_PREFIX "/use_mnemonics") != 0)
+ if (strcmp (gconf_entry_get_key (entry), ENABLE_MNEMONICS_KEY) != 0)
return;
gconf_value = gconf_entry_get_value (entry);
@@ -942,7 +947,27 @@
return;
app->enable_mnemonics = gconf_value_get_bool (gconf_value);
- g_object_notify (G_OBJECT (app), "enable-mnemonics");
+ g_object_notify (G_OBJECT (app), TERMINAL_APP_ENABLE_MNEMONICS);
+}
+
+static void
+terminal_app_enable_menu_accels_notify_cb (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data)
+{
+ TerminalApp *app = TERMINAL_APP (user_data);
+ GConfValue *gconf_value;
+
+ if (strcmp (gconf_entry_get_key (entry), ENABLE_MENU_ACCELS_KEY) != 0)
+ return;
+
+ gconf_value = gconf_entry_get_value (entry);
+ if (!gconf_value || gconf_value->type != GCONF_VALUE_BOOL)
+ return;
+
+ app->enable_menu_accels = gconf_value_get_bool (gconf_value);
+ g_object_notify (G_OBJECT (app), TERMINAL_APP_ENABLE_MENU_ACCELS);
}
static void
@@ -1452,9 +1477,16 @@
terminal_app_enable_mnemonics_notify_cb,
app, NULL, NULL);
+ app->enable_menu_accels_notify_id =
+ gconf_client_notify_add (app->conf,
+ ENABLE_MENU_ACCELS_KEY,
+ terminal_app_enable_menu_accels_notify_cb,
+ app, NULL, NULL);
+
gconf_client_notify (app->conf, PROFILE_LIST_KEY);
gconf_client_notify (app->conf, DEFAULT_PROFILE_KEY);
gconf_client_notify (app->conf, MONOSPACE_FONT_KEY);
+ gconf_client_notify (app->conf, ENABLE_MENU_ACCELS_KEY);
gconf_client_notify (app->conf, ENABLE_MNEMONICS_KEY);
terminal_accels_init ();
@@ -1482,6 +1514,8 @@
gconf_client_notify_remove (app->conf, app->default_profile_notify_id);
if (app->system_font_notify_id != 0)
gconf_client_notify_remove (app->conf, app->system_font_notify_id);
+ if (app->enable_menu_accels_notify_id != 0)
+ gconf_client_notify_remove (app->conf, app->enable_menu_accels_notify_id);
if (app->enable_mnemonics_notify_id != 0)
gconf_client_notify_remove (app->conf, app->enable_mnemonics_notify_id);
@@ -1518,6 +1552,9 @@
else
g_value_take_boxed (value, pango_font_description_from_string (DEFAULT_MONOSPACE_FONT));
break;
+ case PROP_ENABLE_MENU_ACCELS:
+ g_value_set_boolean (value, app->enable_menu_accels);
+ break;
case PROP_ENABLE_MNEMONICS:
g_value_set_boolean (value, app->enable_mnemonics);
break;
@@ -1558,15 +1595,22 @@
g_object_class_install_property
(object_class,
+ PROP_ENABLE_MENU_ACCELS,
+ g_param_spec_boolean (TERMINAL_APP_ENABLE_MENU_ACCELS, NULL, NULL,
+ DEFAULT_ENABLE_MENU_ACCELS,
+ G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+
+ g_object_class_install_property
+ (object_class,
PROP_ENABLE_MNEMONICS,
- g_param_spec_boolean ("enable-mnemonics", NULL, NULL,
+ g_param_spec_boolean (TERMINAL_APP_ENABLE_MNEMONICS, NULL, NULL,
DEFAULT_ENABLE_MNEMONICS,
G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
g_object_class_install_property
(object_class,
PROP_SYSTEM_FONT,
- g_param_spec_boxed ("system-font", NULL, NULL,
+ g_param_spec_boxed (TERMINAL_APP_SYSTEM_FONT, NULL, NULL,
PANGO_TYPE_FONT_DESCRIPTION,
G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
@@ -1574,7 +1618,7 @@
g_object_class_install_property
(object_class,
PROP_DEFAULT_PROFILE,
- g_param_spec_object ("default-profile", NULL, NULL,
+ g_param_spec_object (TERMINAL_APP_DEFAULT_PROFILE, NULL, NULL,
TERMINAL_TYPE_PROFILE,
G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
}
Modified: trunk/src/terminal-app.h
==============================================================================
--- trunk/src/terminal-app.h (original)
+++ trunk/src/terminal-app.h Thu May 29 19:48:28 2008
@@ -33,6 +33,11 @@
#define GNOME_TERMINAL_ICON_NAME "utilities-terminal"
+#define TERMINAL_APP_DEFAULT_PROFILE "default-profile"
+#define TERMINAL_APP_ENABLE_MENU_ACCELS "enable-menu-accels"
+#define TERMINAL_APP_ENABLE_MNEMONICS "enable-mnemonics"
+#define TERMINAL_APP_SYSTEM_FONT "system-font"
+
/* TerminalApp */
#define TERMINAL_TYPE_APP (terminal_app_get_type ())
Modified: trunk/src/terminal-window.c
==============================================================================
--- trunk/src/terminal-window.c (original)
+++ trunk/src/terminal-window.c Thu May 29 19:48:28 2008
@@ -189,27 +189,64 @@
G_DEFINE_TYPE (TerminalWindow, terminal_window, GTK_TYPE_WINDOW)
-/* Menubar mnemonics settings handling */
+/* Menubar mnemonics & accel settings handling */
+
+/* no one will ever press this ;-) */
+#define IMPOSSIBLE_MENUBAR_ACCEL "<Shift><Control><Mod1><Mod2><Mod3><Mod4><Mod5>F10"
static void
-mnemonics_setting_change_notify_cb (TerminalApp *app,
- GParamSpec *pspec,
- GdkScreen *screen)
+app_setting_notify_cb (TerminalApp *app,
+ GParamSpec *pspec,
+ GdkScreen *screen)
{
- gboolean enable_mnemonics;
+ GtkSettings *settings;
+ const char *prop_name;
+
+ if (pspec)
+ prop_name = pspec->name;
+ else
+ prop_name = NULL;
- g_object_get (app, "enable-mnemonics", &enable_mnemonics, NULL);
+ settings = gtk_settings_get_for_screen (screen);
- g_object_set (gtk_settings_get_for_screen (screen),
- "gtk-enable-mnemonics", enable_mnemonics,
- NULL);
+ if (!prop_name || prop_name == I_(TERMINAL_APP_ENABLE_MNEMONICS))
+ {
+ gboolean enable_mnemonics;
+
+ g_object_get (app, TERMINAL_APP_ENABLE_MNEMONICS, &enable_mnemonics, NULL);
+ g_object_set (settings, "gtk-enable-mnemonics", enable_mnemonics, NULL);
+ }
+ else if (!prop_name || prop_name == I_(TERMINAL_APP_ENABLE_MENU_ACCELS))
+ {
+ /* const */ char *saved_menubar_accel;
+ gboolean enable_menu_accels;
+
+ /* Now this is a bad hack on so many levels. */
+ /* FIXMEchpe: instead of doing this crappy hack, file a gtk+ bug
+ * so we get a simple function to reset an overridden setting to
+ * its natural value!!
+ */
+ saved_menubar_accel = g_object_get_data (G_OBJECT (settings), "GT::gtk-menu-bar-accel");
+ if (!saved_menubar_accel)
+ {
+ g_object_get (settings, "gtk-menu-bar-accel", &saved_menubar_accel, NULL);
+ g_object_set_data_full (G_OBJECT (settings), "GT::gtk-menu-bar-accel",
+ saved_menubar_accel, (GDestroyNotify) g_free);
+ }
+
+ g_object_get (app, TERMINAL_APP_ENABLE_MENU_ACCELS, &enable_menu_accels, NULL);
+ if (enable_menu_accels)
+ g_object_set (settings, "gtk-menu-bar-accel", saved_menubar_accel, NULL);
+ else
+ g_object_set (settings, "gtk-menu-bar-accel", IMPOSSIBLE_MENUBAR_ACCEL, NULL);
+ }
}
static void
-mnemonics_setting_change_destroy (GdkScreen *screen)
+app_setting_notify_destroy_cb (GdkScreen *screen)
{
g_signal_handlers_disconnect_by_func (terminal_app_get (),
- G_CALLBACK (mnemonics_setting_change_notify_cb),
+ G_CALLBACK (app_setting_notify_cb),
screen);
}
@@ -1046,12 +1083,14 @@
g_object_set_data_full (G_OBJECT (screen), "GT::HasSettingsConnection",
GINT_TO_POINTER (TRUE),
- (GDestroyNotify) mnemonics_setting_change_destroy);
+ (GDestroyNotify) app_setting_notify_destroy_cb);
app = terminal_app_get ();
- mnemonics_setting_change_notify_cb (app, NULL, screen);
- g_signal_connect (app, "notify::enable-mnemonics",
- G_CALLBACK (mnemonics_setting_change_notify_cb), screen);
+ app_setting_notify_cb (app, NULL, screen);
+ g_signal_connect (app, "notify::" TERMINAL_APP_ENABLE_MNEMONICS,
+ G_CALLBACK (app_setting_notify_cb), screen);
+ g_signal_connect (app, "notify::" TERMINAL_APP_ENABLE_MENU_ACCELS,
+ G_CALLBACK (app_setting_notify_cb), screen);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]