[maemo-commits] [maemo-commits] r9349 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gtk

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Jan 25 16:49:54 EET 2007
Author: mitch
Date: 2007-01-25 16:49:44 +0200 (Thu, 25 Jan 2007)
New Revision: 9349

Modified:
   projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog
   projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkaccellabel.c
   projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtklabel.c
   projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenushell.c
   projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtksettings.c
   projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkwindow.c
Log:
2007-01-25  Michael Natterer  <mitch at imendio.com>

	Port over, clean up and fixed the hildon-keyboard-shortcuts patch.
	Also prevents invocation of shortcuts now (not only disables them
	visually).

	* gtk/gtksettings.c: add the setting.

	* gtk/gtkaccellabel.c
	* gtk/gtklabel.c: disable them visually.

	* gtk/gtkwindow.c
	* gtk/gtkmenushell.c: disable their invocation.



Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog	2007-01-25 14:25:13 UTC (rev 9348)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/ChangeLog	2007-01-25 14:49:44 UTC (rev 9349)
@@ -1,3 +1,17 @@
+2007-01-25  Michael Natterer  <mitch at imendio.com>
+
+	Port over, clean up and fixed the hildon-keyboard-shortcuts patch.
+	Also prevents invocation of shortcuts now (not only disables them
+	visually).
+
+	* gtk/gtksettings.c: add the setting.
+
+	* gtk/gtkaccellabel.c
+	* gtk/gtklabel.c: disable them visually.
+
+	* gtk/gtkwindow.c
+	* gtk/gtkmenushell.c: disable their invocation.
+
 Thu Jan 25 14:44:44 2007  Tim Janik  <timj at imendio.com>
 
 	* gtk/gtkimmulticontext.h: 

Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkaccellabel.c
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkaccellabel.c	2007-01-25 14:25:13 UTC (rev 9348)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkaccellabel.c	2007-01-25 14:49:44 UTC (rev 9349)
@@ -661,6 +661,10 @@
 gboolean
 gtk_accel_label_refetch (GtkAccelLabel *accel_label)
 {
+#ifdef MAEMO_CHANGES
+  gboolean keyboard_shortcuts;
+#endif /* MAEMO_CHANGES */
+
   g_return_val_if_fail (GTK_IS_ACCEL_LABEL (accel_label), FALSE);
 
   if (accel_label->accel_string)
@@ -669,7 +673,15 @@
       accel_label->accel_string = NULL;
     }
 
+#ifdef MAEMO_CHANGES
+  g_object_get (gtk_widget_get_settings (GTK_WIDGET (accel_label)),
+                "hildon-keyboard-shortcuts", &keyboard_shortcuts,
+                NULL);
+
+  if (keyboard_shortcuts && accel_label->accel_closure)
+#else
   if (accel_label->accel_closure)
+#endif /* MAEMO_CHANGES */
     {
       GtkAccelKey *key = gtk_accel_group_find (accel_label->accel_group, find_accel, accel_label->accel_closure);
 

Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtklabel.c
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtklabel.c	2007-01-25 14:25:13 UTC (rev 9348)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtklabel.c	2007-01-25 14:49:44 UTC (rev 9349)
@@ -27,6 +27,9 @@
 #include <math.h>
 #include <string.h>
 #include "gtklabel.h"
+#ifdef MAEMO_CHANGES
+#include "gtkaccellabel.h"
+#endif /* MAEMO_CHANGES */
 #include "gtkdnd.h"
 #include "gtkmain.h"
 #include "gtkmarshalers.h"
@@ -965,11 +968,78 @@
   gtk_label_setup_mnemonic (label, label->mnemonic_keyval);
 }
 
+#ifdef MAEMO_CHANGES
+
 static void
+keyboard_shortcuts_change_notify (GtkLabel *label)
+{
+  gtk_label_recalculate (label);
+  if (GTK_IS_ACCEL_LABEL (label))
+    gtk_accel_label_refetch (GTK_ACCEL_LABEL (label));
+}
+
+static void
+traverse_container (GtkWidget *widget,
+		    gpointer   data)
+{
+  if (GTK_IS_LABEL (widget))
+    keyboard_shortcuts_change_notify (GTK_LABEL (widget));
+  else if (GTK_IS_CONTAINER (widget))
+    gtk_container_forall (GTK_CONTAINER (widget), traverse_container, data);
+}
+
+static void
+hildon_label_setting_changed (GtkSettings *settings)
+{
+  GList *list, *l;
+
+  list = gtk_window_list_toplevels ();
+
+  for (l = list; l ; l = l->next)
+    {
+      GtkWidget *widget = l->data;
+
+      if (gtk_widget_get_settings (widget) == settings)
+        gtk_container_forall (GTK_CONTAINER (widget),
+                              traverse_container, NULL);
+    }
+
+  g_list_free (list);
+}
+
+#endif /* MAEMO_CHANGES */
+
+static void
 gtk_label_screen_changed (GtkWidget *widget,
 			  GdkScreen *old_screen)
 {
+#ifdef MAEMO_CHANGES
+  GtkSettings *settings;
+  gboolean keyboard_shortcuts_connected;
+
+  if (!gtk_widget_has_screen (widget))
+    return;
+
+  settings = gtk_widget_get_settings (widget);
+
+  keyboard_shortcuts_connected =
+    GPOINTER_TO_INT (g_object_get_data (G_OBJECT (settings),
+                                        "hildon-label-connected"));
+
+  if (! keyboard_shortcuts_connected)
+    {
+      g_signal_connect (settings, "notify::hildon-keyboard-shortcuts",
+                        G_CALLBACK (hildon_label_setting_changed),
+                        NULL);
+
+      g_object_set_data (G_OBJECT (settings), "hildon-label-connected",
+                         GINT_TO_POINTER (TRUE));
+    }
+
+  keyboard_shortcuts_change_notify (GTK_LABEL (widget));
+#else
   gtk_label_clear_layout (GTK_LABEL (widget));
+#endif /* MAEMO_CHANGES */
 }
 
 static void
@@ -1458,9 +1528,21 @@
 				const gchar *pattern)
 {
   PangoAttrList *attrs;
+#ifdef MAEMO_CHANGES
+  gboolean keyboard_shortcuts;
+#endif /* MAEMO_CHANGES */
+
   g_return_if_fail (GTK_IS_LABEL (label));
+
+#ifdef MAEMO_CHANGES
+  g_object_get (gtk_widget_get_settings (GTK_WIDGET (label)),
+		"hildon-keyboard-shortcuts", &keyboard_shortcuts,
+		NULL);
   
+  if (keyboard_shortcuts && pattern)
+#else
   if (pattern)
+#endif /* MAEMO_CHANGES */
     attrs = gtk_label_pattern_to_attrs (label, pattern);
   else
     attrs = NULL;

Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenushell.c
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenushell.c	2007-01-25 14:25:13 UTC (rev 9348)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkmenushell.c	2007-01-25 14:49:44 UTC (rev 9349)
@@ -701,7 +701,10 @@
 			  GdkEventKey *event)
 {
   GtkMenuShell *menu_shell;
-  
+#ifdef MAEMO_CHANGES
+  gboolean keyboard_shortcuts;
+#endif /* MAEMO_CHANGES */
+
   g_return_val_if_fail (GTK_IS_MENU_SHELL (widget), FALSE);
   g_return_val_if_fail (event != NULL, FALSE);
       
@@ -713,6 +716,14 @@
   if (gtk_bindings_activate_event (GTK_OBJECT (widget), event))
     return TRUE;
 
+#ifdef MAEMO_CHANGES
+  g_object_get (gtk_widget_get_settings (widget),
+		"hildon-keyboard-shortcuts", &keyboard_shortcuts,
+		NULL);
+  if (!keyboard_shortcuts)
+    return FALSE;
+#endif /* MAEMO_CHANGES */
+
   return gtk_menu_shell_activate_mnemonic (menu_shell, event);
 }
 

Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtksettings.c
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtksettings.c	2007-01-25 14:25:13 UTC (rev 9348)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtksettings.c	2007-01-25 14:49:44 UTC (rev 9349)
@@ -95,7 +95,10 @@
   PROP_KEYNAV_CURSOR_ONLY,
   PROP_KEYNAV_WRAP_AROUND,
   PROP_ERROR_BELL,
-  PROP_COLOR_HASH
+  PROP_COLOR_HASH,
+#ifdef MAEMO_CHANGES
+  PROP_KEYBOARD_SHORTCUTS
+#endif /* MAEMO_CHANGES */
 };
 
 
@@ -571,6 +574,17 @@
 						       GTK_PARAM_READABLE));
 
   class_n_properties++;
+
+#ifdef MAEMO_CHANGES
+  result = settings_install_property_parser (class,
+                                             g_param_spec_boolean ("hildon-keyboard-shortcuts",
+                                                                   P_("Visual keyboard shortcut cues"),
+                                                                   P_("Whether menus should have visible accelerators and mnemonics"),
+                                                                   TRUE,
+                                                                   GTK_PARAM_READWRITE),
+                                             NULL);
+  g_assert (result == PROP_KEYBOARD_SHORTCUTS);
+#endif /* MAEMO_CHANGES */
 }
 
 static void

Modified: projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkwindow.c
===================================================================
--- projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkwindow.c	2007-01-25 14:25:13 UTC (rev 9348)
+++ projects/haf/branches/gtk+/maemo-gtk-2-10/gtk/gtkwindow.c	2007-01-25 14:49:44 UTC (rev 9349)
@@ -4691,9 +4691,18 @@
 {
   GtkWindow *window = GTK_WINDOW (widget);
   gboolean handled = FALSE;
+#ifdef MAEMO_CHANGES
+  gboolean keyboard_shortcuts;
 
+  g_object_get (gtk_widget_get_settings (widget),
+		"hildon-keyboard-shortcuts", &keyboard_shortcuts,
+		NULL);
+
   /* handle mnemonics and accelerators */
+  if (keyboard_shortcuts && !handled)
+#else
   if (!handled)
+#endif /* MAEMO_CHANGES */
     handled = gtk_window_activate_key (window, event);
 
   /* handle focus widget key events */


More information about the maemo-commits mailing list