@@ -356,30 +356,30 @@ void _setVisible (boolean visible) {
356356 gdk_event_free (eventPtr );
357357 }
358358 } else {
359- /*
360- * GTK Feature: gtk_menu_popup is deprecated as of GTK3.22 and the new method gtk_menu_popup_at_pointer
361- * requires an event to hook on to. This requires the popup & events related to the menu be handled
362- * immediately and not as a post event in display, requiring the current event.
363- */
364- eventPtr = GTK3 .gtk_get_current_event ();
365- if (eventPtr == 0 ) {
366- eventPtr = GDK .gdk_event_new (GTK .GTK4 ? GDK .GDK4_BUTTON_PRESS : GDK .GDK_BUTTON_PRESS );
367- GdkEventButton event = new GdkEventButton ();
368- event .type = GTK .GTK4 ? GDK .GDK4_BUTTON_PRESS : GDK .GDK_BUTTON_PRESS ;
369- // Only assign a window on X11, as on Wayland the window is that of the mouse pointer
370- if (OS .isX11 ()) {
371- event .window = OS .g_object_ref (GTK3 .gtk_widget_get_window (getShell ().handle ));
372- }
373- event .device = GDK .gdk_get_pointer (GDK .gdk_display_get_default ());
374- event .time = display .getLastEventTime ();
375- GTK3 .memmove (eventPtr , event , GdkEventButton .sizeof );
376- }
377- adjustParentWindowWayland (eventPtr );
378- verifyMenuPosition (getItemCount ());
379- GTK3 .gtk_menu_popup_at_pointer (handle , eventPtr );
380359 if (GTK .GTK4 ) {
381- GDK . gdk_event_unref ( eventPtr );
360+ GTK . gtk_popover_popup ( handle );
382361 } else {
362+ /*
363+ * GTK Feature: gtk_menu_popup is deprecated as of GTK3.22 and the new method gtk_menu_popup_at_pointer
364+ * requires an event to hook on to. This requires the popup & events related to the menu be handled
365+ * immediately and not as a post event in display, requiring the current event.
366+ */
367+ eventPtr = GTK3 .gtk_get_current_event ();
368+ if (eventPtr == 0 ) {
369+ eventPtr = GDK .gdk_event_new (GTK .GTK4 ? GDK .GDK4_BUTTON_PRESS : GDK .GDK_BUTTON_PRESS );
370+ GdkEventButton event = new GdkEventButton ();
371+ event .type = GTK .GTK4 ? GDK .GDK4_BUTTON_PRESS : GDK .GDK_BUTTON_PRESS ;
372+ // Only assign a window on X11, as on Wayland the window is that of the mouse pointer
373+ if (OS .isX11 ()) {
374+ event .window = OS .g_object_ref (GTK3 .gtk_widget_get_window (getShell ().handle ));
375+ }
376+ event .device = GDK .gdk_get_pointer (GDK .gdk_display_get_default ());
377+ event .time = display .getLastEventTime ();
378+ GTK3 .memmove (eventPtr , event , GdkEventButton .sizeof );
379+ }
380+ adjustParentWindowWayland (eventPtr );
381+ verifyMenuPosition (getItemCount ());
382+ GTK3 .gtk_menu_popup_at_pointer (handle , eventPtr );
383383 GDK .gdk_event_free (eventPtr );
384384 }
385385 }
0 commit comments