[gnome-panel] panel: Move popup-discovery code to panel-util.c



commit 3d3a06399a8290a351cce5230eee626acaab89d3
Author: Vincent Untz <vuntz gnome org>
Date:   Tue Feb 22 19:51:53 2011 +0100

    panel: Move popup-discovery code to panel-util.c

 gnome-panel/applet.c                  |   27 +--------------------
 gnome-panel/gnome-desktop-item-edit.c |    2 +
 gnome-panel/panel-util.c              |   42 +++++++++++++++++++++++++++++++++
 gnome-panel/panel-util.h              |    4 +++
 4 files changed, 49 insertions(+), 26 deletions(-)
---
diff --git a/gnome-panel/applet.c b/gnome-panel/applet.c
index 80d4dba..23e0d33 100644
--- a/gnome-panel/applet.c
+++ b/gnome-panel/applet.c
@@ -799,8 +799,6 @@ applet_key_press (GtkWidget   *widget,
 		  AppletInfo  *info)
 {
 	GdkEventButton eventbutton;
-	GtkBindingSet *binding_set;
-	GtkBindingEntry *binding_entry;
 	gboolean is_popup = FALSE;
 	gboolean is_edit_popup = FALSE;
 
@@ -816,30 +814,7 @@ applet_key_press (GtkWidget   *widget,
 	 *  - keybinding of popup-menu + modifier from metacity => we open menu
 	 *    to "edit"
 	 */
-	binding_set = gtk_binding_set_by_class (g_type_class_peek (GTK_TYPE_WIDGET));
-
-	for (binding_entry = binding_set->entries;
-	     binding_entry != NULL;
-	     binding_entry = binding_entry->set_next) {
-		GtkBindingSignal *binding_signal;
-
-		for (binding_signal = binding_entry->signals;
-		     binding_signal != NULL;
-		     binding_signal = binding_signal->next) {
-			if (g_strcmp0 (binding_signal->signal_name, "popup-menu") == 0 ||
-			    g_strcmp0 (binding_signal->signal_name, "popup_menu") == 0) {
-				if (binding_entry->keyval != event->keyval)
-					break;
-
-				is_popup = (event->state & GDK_MODIFIER_MASK) == binding_entry->modifiers;
-				is_edit_popup = (event->state & GDK_MODIFIER_MASK) == (panel_bindings_get_mouse_button_modifier_keymask ()|binding_entry->modifiers);
-				break;
-			}
-		}
-
-		if (is_popup || is_edit_popup)
-			break;
-	}
+	panel_util_key_event_is_popup (event, &is_popup, &is_edit_popup);
 
 	if (is_edit_popup)
 		applet_show_menu (info, panel_applet_get_edit_menu (info), FALSE, &eventbutton);
diff --git a/gnome-panel/gnome-desktop-item-edit.c b/gnome-panel/gnome-desktop-item-edit.c
index e08a10c..f37f87d 100644
--- a/gnome-panel/gnome-desktop-item-edit.c
+++ b/gnome-panel/gnome-desktop-item-edit.c
@@ -20,6 +20,8 @@ GConfClient *panel_gconf_get_client (void) { return NULL; }
 gboolean panel_global_config_get_tooltips_enabled (void) { return FALSE; }
 #include "panel-lockdown.h"
 gboolean panel_lockdown_get_disable_lock_screen (void) { return FALSE; }
+#include "panel-bindings.h"
+guint panel_bindings_get_mouse_button_modifier_keymask (void) { return 0; }
 
 static int dialogs = 0;
 static gboolean create_new = FALSE;
diff --git a/gnome-panel/panel-util.c b/gnome-panel/panel-util.c
index 7de4e1e..f768c81 100644
--- a/gnome-panel/panel-util.c
+++ b/gnome-panel/panel-util.c
@@ -36,6 +36,7 @@
 
 #include "applet.h"
 #include "xstuff.h"
+#include "panel-bindings.h"
 #include "panel-config-global.h"
 #include "panel-gconf.h"
 #include "panel-globals.h"
@@ -1223,3 +1224,44 @@ panel_util_get_file_optional_homedir (const char *location)
 
 	return file;
 }
+
+void
+panel_util_key_event_is_popup (GdkEventKey *event,
+			       gboolean    *is_popup,
+			       gboolean    *is_popup_modifier)
+{
+	GtkBindingSet   *binding_set;
+	GtkBindingEntry *binding_entry;
+	gboolean         popup = FALSE;
+	gboolean         popup_modifier = FALSE;
+
+	binding_set = gtk_binding_set_by_class (g_type_class_peek (GTK_TYPE_WIDGET));
+
+	for (binding_entry = binding_set->entries;
+	     binding_entry != NULL;
+	     binding_entry = binding_entry->set_next) {
+		GtkBindingSignal *binding_signal;
+
+		for (binding_signal = binding_entry->signals;
+		     binding_signal != NULL;
+		     binding_signal = binding_signal->next) {
+			if (g_strcmp0 (binding_signal->signal_name, "popup-menu") == 0 ||
+			    g_strcmp0 (binding_signal->signal_name, "popup_menu") == 0) {
+				if (binding_entry->keyval != event->keyval)
+					break;
+
+				popup = (event->state & GDK_MODIFIER_MASK) == binding_entry->modifiers;
+				popup_modifier = (event->state & GDK_MODIFIER_MASK) == (panel_bindings_get_mouse_button_modifier_keymask ()|binding_entry->modifiers);
+				break;
+			}
+		}
+
+		if (popup || popup_modifier)
+			break;
+	}
+
+	if (is_popup)
+		*is_popup = popup;
+	if (is_popup_modifier)
+		*is_popup_modifier = popup_modifier;
+}
diff --git a/gnome-panel/panel-util.h b/gnome-panel/panel-util.h
index 8551d95..6d5baa8 100644
--- a/gnome-panel/panel-util.h
+++ b/gnome-panel/panel-util.h
@@ -63,6 +63,10 @@ void panel_util_set_tooltip_text (GtkWidget  *widget,
 
 GFile *panel_util_get_file_optional_homedir (const char *location);
 
+void panel_util_key_event_is_popup (GdkEventKey *event,
+				    gboolean    *is_popup,
+				    gboolean    *is_popup_modifier);
+
 G_END_DECLS
 
 #endif /* PANEL_UTIL_H */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]