@@ -52,8 +52,6 @@ static gboolean tile_button_release (GtkWidget *, GdkEventButton *);
5252static gboolean tile_key_release (GtkWidget * , GdkEventKey * );
5353static gboolean tile_popup_menu (GtkWidget * );
5454
55- static void tile_popup_menu_position (GtkMenu * , gint * , gint * , gboolean * , gpointer );
56-
5755static void tile_drag_begin (GtkWidget * , GdkDragContext * );
5856static void tile_drag_data_get (GtkWidget * , GdkDragContext * , GtkSelectionData * , guint ,
5957guint );
@@ -377,8 +375,11 @@ tile_button_release (GtkWidget * widget, GdkEventButton * event)
377375
378376 case 3 :
379377 if (GTK_IS_MENU (tile -> context_menu ))
380- gtk_menu_popup (tile -> context_menu , NULL , NULL , NULL , NULL , event -> button ,
381- event -> time );
378+ gtk_menu_popup_at_widget (GTK_MENU (tile -> context_menu ),
379+ widget ,
380+ GDK_GRAVITY_SOUTH_WEST ,
381+ GDK_GRAVITY_NORTH_WEST ,
382+ (const GdkEvent * ) event );
382383
383384 break ;
384385
@@ -408,40 +409,18 @@ tile_key_release (GtkWidget * widget, GdkEventKey * event)
408409 return FALSE;
409410}
410411
411- static void
412- tile_popup_menu_position (GtkMenu * menu , gint * x , gint * y , gboolean * push_in , gpointer data )
413- {
414- Tile * tile = TILE (data );
415-
416- GtkAllocation all ;
417- GtkRequisition req ;
418- GtkWidget * top ;
419-
420- if (!gtk_widget_get_realized (GTK_WIDGET (tile )))
421- return ;
422-
423- gtk_widget_get_preferred_size (GTK_WIDGET (menu ), & req , NULL );
424- gtk_widget_get_allocation (GTK_WIDGET (menu ), & all );
425-
426- top = gtk_widget_get_toplevel (GTK_WIDGET (tile ));
427-
428- gdk_window_get_origin (gtk_widget_get_window (top ), x , y );
429-
430- * x += (all .width / 2 ) - (req .width / 2 );
431- * y += (all .height / 2 ) - (req .height / 2 );
432-
433- * push_in = FALSE;
434- }
435-
436412static gboolean
437413tile_popup_menu (GtkWidget * widget )
438414{
439415 Tile * tile = TILE (widget );
440416
441417 if (GTK_IS_MENU (tile -> context_menu ))
442418 {
443- gtk_menu_popup (tile -> context_menu , NULL , NULL , tile_popup_menu_position , tile , 0 ,
444- gtk_get_current_event_time ());
419+ gtk_menu_popup_at_widget (GTK_MENU (tile -> context_menu ),
420+ widget ,
421+ GDK_GRAVITY_SOUTH_WEST ,
422+ GDK_GRAVITY_NORTH_WEST ,
423+ NULL );
445424
446425 return TRUE;
447426 }
0 commit comments