guile-user
[Top][All Lists]
Advanced

[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/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]