Branch: refs/heads/master Author: Colomban Wendling ban@herbesfolles.org Committer: Jiří Techet techet@gmail.com Date: Thu, 25 Feb 2016 23:05:22 UTC Commit: 653990c01137342d5ca1776662594fe976702992 https://github.com/geany/geany/commit/653990c01137342d5ca1776662594fe9767029...
Log Message: ----------- Pass the actual event button to gtk_menu_popup()
In case it's actually useful. Also properly free the GdkEvent returned by gtk_get_current_event().
Modified Paths: -------------- src/symbols.c
Modified: src/symbols.c 19 lines changed, 13 insertions(+), 6 deletions(-) =================================================================== @@ -1893,17 +1893,14 @@ static void goto_popup_position_func(GtkMenu *menu, gint *x, gint *y, gboolean * gint monitor_num; GdkRectangle monitor; GtkRequisition req; - GdkEvent *event; + GdkEventButton *event_button = g_object_get_data(G_OBJECT(menu), "geany-button-event");
gdk_window_get_origin(window, x, y); *x += pos_x; *y += pos_y;
- event = gtk_get_current_event(); - if (event && event->type == GDK_BUTTON_PRESS) + if (event_button) { - GdkEventButton *event_button = (GdkEventButton *) event; - /* Caret is placed either before or after the letter which was clicked. * Compute offset between the caret and click position and make sure * the popup is shown outside the mouse pointer. */ @@ -1967,6 +1964,7 @@ static void show_goto_popup(GeanyDocument *doc, GPtrArray *tags, gboolean have_b GtkWidget *first = NULL; GtkWidget *menu; GdkEvent *event; + GdkEventButton *button_event = NULL; TMTag *tmtag; guint i;
@@ -2003,8 +2001,17 @@ static void show_goto_popup(GeanyDocument *doc, GPtrArray *tags, gboolean have_b
if (first) /* always select the first item for better keyboard navigation */ g_signal_connect(menu, "realize", G_CALLBACK(gtk_menu_shell_select_item), first); + + event = gtk_get_current_event(); + if (event && event->type == GDK_BUTTON_PRESS) + button_event = (GdkEventButton *) event; + else + gdk_event_free(event); + + g_object_set_data_full(G_OBJECT(menu), "geany-button-event", button_event, + button_event ? (GDestroyNotify) gdk_event_free : NULL); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, goto_popup_position_func, doc->editor->sci, - 0, gtk_get_current_event_time ()); + button_event ? button_event->button : 0, gtk_get_current_event_time ()); }
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).