From 21f889ee9965065f4b62c9e651a7b0544eac20de Mon Sep 17 00:00:00 2001 From: Victor Ananjesky <ananasik@gmail.com> Date: Sat, 28 Apr 2018 16:45:59 +0300 Subject: [PATCH] fix menu handling in image dialog --- src/picture.c | 47 +++++++++++++++++++---------------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/src/picture.c b/src/picture.c index 9863665..ad6b38a 100644 --- a/src/picture.c +++ b/src/picture.c @@ -174,30 +174,22 @@ create_popup_menu () popup_menu = gtk_menu_new (); - mi = gtk_image_menu_item_new_with_label (_("Fit to window")); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), - gtk_image_new_from_icon_name ("gtk-zoom-fit", GTK_ICON_SIZE_MENU)); + mi = gtk_menu_item_new_with_label (_("Fit to window")); gtk_widget_show (mi); gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), mi); g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (change_size_cb), GINT_TO_POINTER (SIZE_FIT)); - mi = gtk_image_menu_item_new_with_label (_("Original size")); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), - gtk_image_new_from_icon_name ("gtk-zoom-100", GTK_ICON_SIZE_MENU)); + mi = gtk_menu_item_new_with_label (_("Original size")); gtk_widget_show (mi); gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), mi); g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (change_size_cb), GINT_TO_POINTER (SIZE_ORIG)); - mi = gtk_image_menu_item_new_with_label (_("Increase size")); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), - gtk_image_new_from_icon_name ("gtk-zoom-in", GTK_ICON_SIZE_MENU)); + mi = gtk_menu_item_new_with_label (_("Increase size")); gtk_widget_show (mi); gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), mi); g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (change_size_cb), GINT_TO_POINTER (SIZE_INC)); - mi = gtk_image_menu_item_new_with_label (_("Decrease size")); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), - gtk_image_new_from_icon_name ("gtk-zoom-out", GTK_ICON_SIZE_MENU)); + mi = gtk_menu_item_new_with_label (_("Decrease size")); gtk_widget_show (mi); gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), mi); g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (change_size_cb), GINT_TO_POINTER (SIZE_DEC)); @@ -206,30 +198,22 @@ create_popup_menu () gtk_widget_show (mi); gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), mi); - mi = gtk_image_menu_item_new_with_label (_("Rotate left")); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), - gtk_image_new_from_icon_name ("object-rotate-left", GTK_ICON_SIZE_MENU)); + mi = gtk_menu_item_new_with_label (_("Rotate left")); gtk_widget_show (mi); gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), mi); g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (rotate_cb), GINT_TO_POINTER (ROTATE_LEFT)); - mi = gtk_image_menu_item_new_with_label (_("Rotate right")); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), - gtk_image_new_from_icon_name ("object-rotate-right", GTK_ICON_SIZE_MENU)); + mi = gtk_menu_item_new_with_label (_("Rotate right")); gtk_widget_show (mi); gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), mi); g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (rotate_cb), GINT_TO_POINTER (ROTATE_RIGHT)); - mi = gtk_image_menu_item_new_with_label (_("Flip vertical")); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), - gtk_image_new_from_icon_name ("object-flip-vertical", GTK_ICON_SIZE_MENU)); + mi = gtk_menu_item_new_with_label (_("Flip vertical")); gtk_widget_show (mi); gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), mi); g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (rotate_cb), GINT_TO_POINTER (ROTATE_FLIP_VERT)); - mi = gtk_image_menu_item_new_with_label (_("Flip horizontal")); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), - gtk_image_new_from_icon_name ("object-flip-horizontal", GTK_ICON_SIZE_MENU)); + mi = gtk_menu_item_new_with_label (_("Flip horizontal")); gtk_widget_show (mi); gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), mi); g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (rotate_cb), GINT_TO_POINTER (ROTATE_FLIP_HOR)); @@ -240,7 +224,11 @@ button_handler (GtkWidget *w, GdkEventButton *ev, gpointer data) { if (ev->button == 3) { +#if GTK_CHECK_VERSION(3,0,0) + gtk_menu_popup_at_pointer (GTK_MENU (popup_menu), NULL); +#else gtk_menu_popup (GTK_MENU (popup_menu), NULL, NULL, NULL, NULL, ev->button, ev->time); +#endif return TRUE; } @@ -256,7 +244,7 @@ key_handler (GtkWidget *w, GdkEventKey *ev, gpointer data) GtkWidget * picture_create_widget (GtkWidget * dlg) { - GtkWidget *sw; + GtkWidget *sw, *ev; sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_NONE); @@ -266,8 +254,11 @@ picture_create_widget (GtkWidget * dlg) gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (sw))); gtk_container_add (GTK_CONTAINER (sw), viewport); + ev = gtk_event_box_new (); + gtk_container_add (GTK_CONTAINER (viewport), ev); + picture = gtk_image_new (); - gtk_container_add (GTK_CONTAINER (viewport), picture); + gtk_container_add (GTK_CONTAINER (ev), picture); /* load picture */ if (options.common_data.uri && @@ -279,8 +270,8 @@ picture_create_widget (GtkWidget * dlg) if (loaded && !animated) { create_popup_menu (); - g_signal_connect (G_OBJECT (viewport), "button-press-event", G_CALLBACK (button_handler), NULL); - g_signal_connect (G_OBJECT (viewport), "key-press-event", G_CALLBACK (key_handler), NULL); + g_signal_connect (G_OBJECT (ev), "button-press-event", G_CALLBACK (button_handler), NULL); + g_signal_connect (G_OBJECT (ev), "key-press-event", G_CALLBACK (key_handler), NULL); } return sw; -- 2.24.1