From d2fb5ee1a86539e49f02c1fe9ea10cf55b0b351a Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 29 Nov 2012 13:12:41 -0500 Subject: Avoid using GdkEventButton directly in certain places. Prefer dealing with GdkEvent pointers and using accessor functions like gdk_event_get_button(). This is complicated by the fact that some GtkWidget method declarations still use GdkEventButton pointers, and synthesizing button events pretty much requires direct GdkEventButton access. But GDK seems to be nudging itself toward sealing the GdkEvent union. Likely to happen in GDK4. Mainly clean up signal handlers and leave method overrides alone for now. --- widgets/table/e-table-header-item.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'widgets/table/e-table-header-item.c') diff --git a/widgets/table/e-table-header-item.c b/widgets/table/e-table-header-item.c index d8e0665b8e..8bec92fa10 100644 --- a/widgets/table/e-table-header-item.c +++ b/widgets/table/e-table-header-item.c @@ -1674,7 +1674,7 @@ popup_custom (GtkWidget *menu_item, static void ethi_header_context_menu (ETableHeaderItem *ethi, - GdkEventButton *event) + GdkEvent *button_event) { EthiHeaderInfo *info = g_new (EthiHeaderInfo, 1); GtkMenu *popup; @@ -1682,10 +1682,19 @@ ethi_header_context_menu (ETableHeaderItem *ethi, GtkWidget *menu_item, *sub_menu; ETableSortColumn column; gboolean ascending = TRUE; + gdouble event_x_win = 0; + gdouble event_y_win = 0; + guint event_button = 0; + guint32 event_time; + d (g_print ("ethi_header_context_menu: \n")); + gdk_event_get_button (button_event, &event_button); + gdk_event_get_coords (button_event, &event_x_win, &event_y_win); + event_time = gdk_event_get_time (button_event); + info->ethi = ethi; - info->col = ethi_find_col_by_x (ethi, event->x); + info->col = ethi_find_col_by_x (ethi, event_x_win); popup = e_popup_menu_create_with_domain ( ethi_context_menu, @@ -1771,14 +1780,14 @@ ethi_header_context_menu (ETableHeaderItem *ethi, gtk_menu_popup ( GTK_MENU (popup), NULL, NULL, NULL, NULL, - event->button, event->time); + event_button, event_time); } static void ethi_button_pressed (ETableHeaderItem *ethi, - GdkEventButton *event) + GdkEvent *button_event) { - g_signal_emit (ethi, ethi_signals[BUTTON_PRESSED], 0, event); + g_signal_emit (ethi, ethi_signals[BUTTON_PRESSED], 0, button_event); } void @@ -1957,9 +1966,9 @@ ethi_event (GnomeCanvasItem *item, if (gtk_widget_get_can_focus (GTK_WIDGET (item->canvas))) e_canvas_item_grab_focus (item, TRUE); } else if (e->button.button == 3) { - ethi_header_context_menu (ethi, &e->button); + ethi_header_context_menu (ethi, e); } else - ethi_button_pressed (ethi, &e->button); + ethi_button_pressed (ethi, e); } break; -- cgit v1.2.3