[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gtk-menu-popup [guile-gnome2 2.16.1-4]
From: |
Andy Wingo |
Subject: |
Re: gtk-menu-popup [guile-gnome2 2.16.1-4] |
Date: |
Tue, 29 Jun 2010 12:04:27 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) |
Hi David,
On Mon 28 Jun 2010 21:15, David Pirotte <address@hidden> writes:
> (gtk-menu-popup popup-menu
> #f ;; parent-menu-shell or #f
> #f ;; parent-menu-item or #f
> #f ;; user supplied func to position the menu
> or #f
> #f ;; user supplied data to pass to func
> button
> time)
This function did change API when going from guile-gnome-0 to
guile-gnome-2. I paste below the commit that re-added gtk-menu-popup to
guile-gnome-gtk. As you can see the prototype is different -- no user
data to the positioning function.
Cheers,
Andy
Parent: b5bfe47421b32f5fc8684725f18be2cd50f07748 (2007-12-17 Jan Nieuwenhuizen
<address@hidden>)
Child: 3c4f31cba340a85f6545409a409f53a4a401f393 (Update NEWS for release)
Branches: gtk, remotes/origin/gtk
Follows:
Precedes:
2008-04-10 Andy Wingo <address@hidden>
* gnome/overrides/gtk.defs (popup):
* gnome/gw/gtk-support.h:
* gnome/gw/gtk-support.c (menu_position_fn)
(_wrap_gtk_menu_popup): Wrap gtk-menu-popup, with a scheme
positioning function and no user-data argument.
---------------------------------- ChangeLog ----------------------------------
index 96f736c..5d828a0 100644
@@ -1,3 +1,11 @@
+2008-04-10 Andy Wingo <address@hidden>
+
+ * gnome/overrides/gtk.defs (popup):
+ * gnome/gw/gtk-support.h:
+ * gnome/gw/gtk-support.c (menu_position_fn)
+ (_wrap_gtk_menu_popup): Wrap gtk-menu-popup, with a scheme
+ positioning function and no user-data argument.
+
2007-12-17 Jan Nieuwenhuizen <address@hidden>
* gnome/gw/gtk-support.h:
---------------------------- gnome/gw/gtk-support.c ----------------------------
index cc0c17f..998f8a1 100644
@@ -413,6 +413,33 @@ _wrap_gtk_list_store_append (GtkListStore *store)
return new;
}
+static void
+menu_position_fn (GtkMenu *menu, gint *x, gint *y, gboolean *push_in,
+ gpointer data)
+{
+ SCM ret, proc = GPOINTER_TO_SCM (data);
+
+ ret = scm_call_1 (proc, scm_c_gtype_instance_to_scm (menu));
+
+ *x = scm_to_int32 (scm_car (ret));
+ *y = scm_to_int32 (scm_cadr (ret));
+ *push_in = scm_is_true (scm_caddr (ret));
+}
+
+void
+_wrap_gtk_menu_popup (GtkMenu *menu, GtkWidget *parent_menu_shell,
+ GtkWidget *parent_menu_item, SCM func,
+ guint button, guint32 activate_time)
+{
+ if (scm_is_true (func))
+ gtk_menu_popup (menu, parent_menu_shell, parent_menu_item,
+ menu_position_fn, SCM_TO_GPOINTER (func),
+ button, activate_time);
+ else
+ gtk_menu_popup (menu, parent_menu_shell, parent_menu_item,
+ NULL, NULL, button, activate_time);
+}
+
/* FIXME: is this still necessary? */
SCM
_wrap_gtk_message_dialog_new (GtkWindow* parent, GtkDialogFlags flags,
GtkMessageType type,
---------------------------- gnome/gw/gtk-support.h ----------------------------
index 71cde36..0326cd1 100644
@@ -59,6 +59,10 @@ GtkTreeIter* _wrap_gtk_list_store_insert_after (GtkListStore
*store, GtkTreeIter
GtkTreeIter* _wrap_gtk_list_store_prepend (GtkListStore *store);
GtkTreeIter* _wrap_gtk_list_store_append (GtkListStore *store);
+void _wrap_gtk_menu_popup (GtkMenu *menu, GtkWidget *parent_menu_shell,
+ GtkWidget *parent_menu_item, SCM func,
+ guint button, guint32 activate_time);
+
SCM _wrap_gtk_message_dialog_new (GtkWindow* parent, GtkDialogFlags flags,
GtkMessageType type, GtkButtonsType buttons, const gchar *text);
gchar* _gtk_selection_data_get_as_string (GtkSelectionData *data);
--------------------------- gnome/overrides/gtk.defs ---------------------------
index 8edb1fd..e69a5a2 100644
@@ -303,6 +303,21 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; GtkMenu
+(define-method popup
+ (of-object "GtkMenu")
+ (c-name "_wrap_gtk_menu_popup")
+ (overrides "gtk_menu_popup")
+ (return-type "none")
+ (leave-guile-mode #f)
+ (parameters
+ '("GtkWidget*" "parent_menu_shell" (null-ok))
+ '("GtkWidget*" "parent_menu_item" (null-ok))
+ '("SCM" "menu_position_func")
+ '("guint" "button")
+ '("guint32" "activate_time")
+ )
+)
+
(define-function gtk_menu_get_for_attach_widget
(c-name "gtk_menu_get_for_attach_widget")
(overrides "gtk_menu_get_for_attach_widget")
@@ -1100,7 +1115,6 @@
"gtk_list_unselect_child"
"gtk_list_unselect_item"
"gtk_menu_attach_to_widget"
- "gtk_menu_popup"
"gtk_message_dialog_format_secondary_markup"
"gtk_message_dialog_format_secondary_text"
"gtk_notebook_query_tab_label_packing"
--
http://wingolog.org/