Updating branch refs/heads/master to fce79947f6e1430d12c891b3834f141e507fbc87 (commit) from 431cdf956c20f67fc9d16291bc5649f16e4dc9ec (commit)
commit fce79947f6e1430d12c891b3834f141e507fbc87 Author: Stephan Arts <step...@xfce.org> Date: Sun Oct 2 13:46:58 2011 +0200 Add menu to the image-viewer widget. src/image_viewer.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/image_viewer.h | 5 ++++ src/main_window.c | 9 +++++- 3 files changed, 78 insertions(+), 2 deletions(-) diff --git a/src/image_viewer.c b/src/image_viewer.c index a63126f..b8fef76 100644 --- a/src/image_viewer.c +++ b/src/image_viewer.c @@ -58,6 +58,8 @@ struct _RsttoImageViewerPriv RsttoImageViewerOrientation orientation; gdouble quality; + + GtkMenu *menu; /* */ /***/ gboolean revert_zoom_direction; @@ -185,6 +187,9 @@ static gboolean rstto_button_release_event ( GtkWidget *widget, GdkEventButton *event); +static gboolean +rstto_popup_menu ( + GtkWidget *widget); static void cb_rstto_bgcolor_changed ( @@ -313,6 +318,7 @@ rstto_image_viewer_class_init(RsttoImageViewerClass *viewer_class) widget_class->button_press_event = rstto_button_press_event; widget_class->button_release_event = rstto_button_release_event; widget_class->motion_notify_event = rstto_motion_notify_event; + widget_class->popup_menu = rstto_popup_menu; object_class->destroy = rstto_image_viewer_destroy; @@ -1228,6 +1234,29 @@ rstto_image_viewer_get_orientation (RsttoImageViewer *viewer) return viewer->priv->orientation; } +void +rstto_image_viewer_set_menu ( + RsttoImageViewer *viewer, + GtkMenu *menu) +{ + if (viewer->priv->menu) + { + gtk_menu_detach(viewer->priv->menu); + gtk_widget_destroy(GTK_WIDGET(viewer->priv->menu)); + } + + viewer->priv->menu = menu; + + if (viewer->priv->menu) + { + gtk_menu_attach_to_widget( + viewer->priv->menu, + GTK_WIDGET(viewer), + NULL); + } + +} + /************************/ /** CALLBACK FUNCTIONS **/ @@ -2044,6 +2073,22 @@ rstto_button_press_event ( rstto_image_viewer_set_motion_state (viewer, RSTTO_IMAGE_VIEWER_MOTION_STATE_BOX_ZOOM); } } + return TRUE; + } + if(event->button == 3) + { + if (viewer->priv->menu) + { + gtk_widget_show_all(GTK_WIDGET(viewer->priv->menu)); + gtk_menu_popup(viewer->priv->menu, + NULL, + NULL, + NULL, + NULL, + 3, + event->time); + } + return TRUE; } return FALSE; } @@ -2231,3 +2276,24 @@ cb_rstto_zoom_direction_changed ( RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER (user_data); viewer->priv->revert_zoom_direction = rstto_settings_get_boolean_property (RSTTO_SETTINGS (settings), "revert-zoom-direction"); } + +static gboolean +rstto_popup_menu ( + GtkWidget *widget) +{ + RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER (viewer); + + if (viewer->priv->menu) + { + gtk_widget_show_all(GTK_WIDGET(viewer->priv->menu)); + gtk_menu_popup(viewer->priv->menu, + NULL, + NULL, + NULL, + NULL, + 0, + gtk_get_current_event_time()); + return TRUE; + } + return FALSE; +} diff --git a/src/image_viewer.h b/src/image_viewer.h index a7298b6..7a69094 100644 --- a/src/image_viewer.h +++ b/src/image_viewer.h @@ -103,6 +103,11 @@ rstto_image_viewer_set_orientation ( RsttoImageViewerOrientation rstto_image_viewer_get_orientation (RsttoImageViewer *viewer); +void +rstto_image_viewer_set_menu ( + RsttoImageViewer *viewer, + GtkMenu *menu); + G_END_DECLS #endif /* __RISTRETTO_IMAGE_VIEWER_H__ */ diff --git a/src/main_window.c b/src/main_window.c index 46bdaa2..5a32d26 100644 --- a/src/main_window.c +++ b/src/main_window.c @@ -529,8 +529,6 @@ rstto_main_window_init (RsttoMainWindow *window) window->priv->image_viewer_menu = gtk_ui_manager_get_widget (window->priv->ui_manager, "/image-viewer-menu"); window->priv->position_menu = gtk_ui_manager_get_widget (window->priv->ui_manager, "/navigation-toolbar-menu"); - - /** * Get the separator toolitem and tell it to expand */ @@ -552,6 +550,13 @@ rstto_main_window_init (RsttoMainWindow *window) gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window->priv->p_viewer_s_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (window->priv->p_viewer_s_window), window->priv->image_viewer); + rstto_image_viewer_set_menu ( + RSTTO_IMAGE_VIEWER(window->priv->image_viewer), + GTK_MENU(window->priv->image_viewer_menu)); + + + + //rstto_picture_viewer_set_menu (RSTTO_PICTURE_VIEWER (window->priv->picture_viewer), GTK_MENU(window->priv->image_viewer_menu)); window->priv->thumbnailbar = rstto_thumbnail_bar_new (NULL); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits