diff --git a/lib/goffice/go-optionmenu.c b/lib/goffice/go-optionmenu.c index 6b4ff2215f..5a49ccd3e7 100644 --- a/lib/goffice/go-optionmenu.c +++ b/lib/goffice/go-optionmenu.c @@ -106,6 +106,7 @@ static void go_option_menu_select_item(GOOptionMenu *option_menu, go_option_menu_update_contents(option_menu); } +#if !GTK_CHECK_VERSION(3,22,0) static void go_option_menu_position(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data) { @@ -164,6 +165,7 @@ static void go_option_menu_position(GtkMenu *menu, gint *x, gint *y, *y = menu_ypos; *push_in = TRUE; } +#endif static gint go_option_menu_button_press(GtkWidget *widget, GdkEventButton *event) @@ -177,10 +179,18 @@ static gint go_option_menu_button_press(GtkWidget *widget, if (event->type == GDK_BUTTON_PRESS && event->button == 1) { +#if GTK_CHECK_VERSION(3,22,0) + gtk_menu_popup_at_widget (GTK_MENU(option_menu->menu), + widget, + GDK_GRAVITY_SOUTH_WEST, + GDK_GRAVITY_NORTH_WEST, + (GdkEvent *) event); +#else gtk_menu_popup(GTK_MENU(option_menu->menu), NULL, NULL, go_option_menu_position, option_menu, event->button, event->time); +#endif return TRUE; } @@ -195,8 +205,16 @@ static gint go_option_menu_key_press(GtkWidget *widget, GdkEventKey *event) { case GDK_KEY_KP_Space: case GDK_KEY_space: +#if GTK_CHECK_VERSION(3,22,0) + gtk_menu_popup_at_widget (GTK_MENU(option_menu->menu), + widget, + GDK_GRAVITY_SOUTH_WEST, + GDK_GRAVITY_NORTH_WEST, + (GdkEvent *) event); +#else gtk_menu_popup(GTK_MENU(option_menu->menu), NULL, NULL, go_option_menu_position, option_menu, 0, event->time); +#endif return TRUE; }