Updating branch refs/heads/ristretto-0.0 to 7da92c8d582e14d50adfee29144751e7b89b93cb (commit) from 691a6a7c89eb2902984ac6ccfe02e219168b82f4 (commit)
commit 7da92c8d582e14d50adfee29144751e7b89b93cb Author: Stephan Arts <step...@xfce.org> Date: Sun Mar 8 14:22:37 2009 +0100 Split 'view' state from 'motion' state src/main_window.c | 4 +- src/picture_viewer.c | 406 +++++++++++++++++++++++--------------------------- src/picture_viewer.h | 9 - 3 files changed, 191 insertions(+), 228 deletions(-) diff --git a/src/main_window.c b/src/main_window.c index b7acbdb..2254c7b 100644 --- a/src/main_window.c +++ b/src/main_window.c @@ -673,7 +673,7 @@ rstto_main_window_get_property (GObject *object, static void cb_rstto_main_window_zoom_fit (GtkWidget *widget, RsttoMainWindow *window) { - rstto_picture_viewer_set_zoom_mode (RSTTO_PICTURE_VIEWER (window->priv->picture_viewer), RSTTO_ZOOM_MODE_FIT); + //rstto_picture_viewer_set_zoom_mode (RSTTO_PICTURE_VIEWER (window->priv->picture_viewer), RSTTO_ZOOM_MODE_FIT); } /** @@ -686,7 +686,7 @@ cb_rstto_main_window_zoom_fit (GtkWidget *widget, RsttoMainWindow *window) static void cb_rstto_main_window_zoom_100 (GtkWidget *widget, RsttoMainWindow *window) { - rstto_picture_viewer_set_zoom_mode (RSTTO_PICTURE_VIEWER (window->priv->picture_viewer), RSTTO_ZOOM_MODE_100); + //rstto_picture_viewer_set_zoom_mode (RSTTO_PICTURE_VIEWER (window->priv->picture_viewer), RSTTO_ZOOM_MODE_100); } /** diff --git a/src/picture_viewer.c b/src/picture_viewer.c index 6e8b261..e29e378 100644 --- a/src/picture_viewer.c +++ b/src/picture_viewer.c @@ -31,12 +31,23 @@ typedef enum { RSTTO_PICTURE_VIEWER_STATE_NORMAL = 0, - RSTTO_PICTURE_VIEWER_STATE_MOVE, - RSTTO_PICTURE_VIEWER_STATE_PREVIEW, - RSTTO_PICTURE_VIEWER_STATE_BOX_ZOOM, - RSTTO_PICTURE_VIEWER_STATE_TRANSITION + RSTTO_PICTURE_VIEWER_STATE_PREVIEW } RsttoPictureViewerState; +typedef enum +{ + RSTTO_PICTURE_VIEWER_MOTION_STATE_NORMAL = 0, + RSTTO_PICTURE_VIEWER_MOTION_STATE_BOX_ZOOM, + RSTTO_PICTURE_VIEWER_MOTION_STATE_MOVE +} RsttoPictureViewerMotionState; + +typedef enum +{ + RSTTO_ZOOM_MODE_CUSTOM, + RSTTO_ZOOM_MODE_100, + RSTTO_ZOOM_MODE_FIT +} RsttoZoomMode; + enum { TARGET_TEXT_URI_LIST, @@ -49,16 +60,16 @@ static const GtkTargetEntry drop_targets[] = { struct _RsttoPictureViewerPriv { - RsttoImage *image; + RsttoImage *image; + GtkMenu *menu; + RsttoPictureViewerState state; + RsttoZoomMode zoom_mode; - RsttoZoomMode zoom_mode; GdkPixbuf *dst_pixbuf; /* The pixbuf which ends up on screen */ void (*cb_value_changed)(GtkAdjustment *, RsttoPictureViewer *); GdkColor *bg_color; - RsttoPictureViewerState state; - struct { gdouble x; @@ -67,12 +78,14 @@ struct _RsttoPictureViewerPriv gdouble current_y; gint h_val; gint v_val; + RsttoPictureViewerMotionState state; } motion; + struct { gint idle_id; - } refresh; - GtkMenu *menu; + gboolean refresh; + } repaint; }; static void @@ -86,16 +99,8 @@ static void rstto_picture_viewer_set_state (RsttoPictureViewer *viewer, RsttoPictureViewerState state); static RsttoPictureViewerState rstto_picture_viewer_get_state (RsttoPictureViewer *viewer); - -static gdouble -rstto_picture_viewer_fit_scale(RsttoPictureViewer *viewer); - static void -cb_rstto_picture_viewer_image_updated (RsttoImage *image, RsttoPictureViewer *viewer); -static void -cb_rstto_picture_viewer_image_prepared (RsttoImage *image, RsttoPictureViewer *viewer); -static gboolean -cb_rstto_picture_viewer_queued_repaint(RsttoPictureViewer *viewer); +rstto_picture_viewer_set_motion_state (RsttoPictureViewer *viewer, RsttoPictureViewerMotionState state); static void rstto_picture_viewer_size_request(GtkWidget *, GtkRequisition *); @@ -105,13 +110,10 @@ static void rstto_picture_viewer_realize(GtkWidget *); static gboolean rstto_picture_viewer_expose(GtkWidget *, GdkEventExpose *); - static void rstto_picture_viewer_paint (GtkWidget *widget); -static void -cb_rstto_picture_viewer_image_updated (RsttoImage *image, RsttoPictureViewer *viewer); -static void -cb_rstto_picture_viewer_image_prepared (RsttoImage *image, RsttoPictureViewer *viewer); +static gboolean +rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer, gboolean refresh); static gboolean rstto_picture_viewer_set_scroll_adjustments(RsttoPictureViewer *, GtkAdjustment *, GtkAdjustment *); @@ -120,33 +122,24 @@ static void cb_rstto_picture_viewer_value_changed(GtkAdjustment *, RsttoPictureViewer *); static void -cb_rstto_picture_viewer_scroll_event (RsttoPictureViewer *, GdkEventScroll *); +cb_rstto_picture_viewer_image_updated (RsttoImage *image, RsttoPictureViewer *viewer); +static void +cb_rstto_picture_viewer_image_prepared (RsttoImage *image, RsttoPictureViewer *viewer); + static gboolean -cb_rstto_picture_viewer_motion_notify_event (RsttoPictureViewer *viewer, - GdkEventMotion *event, - gpointer user_data); +cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer); + static void cb_rstto_picture_viewer_button_press_event (RsttoPictureViewer *viewer, GdkEventButton *event); static void cb_rstto_picture_viewer_button_release_event (RsttoPictureViewer *viewer, GdkEventButton *event); +static gboolean +cb_rstto_picture_viewer_motion_notify_event (RsttoPictureViewer *viewer, + GdkEventMotion *event, + gpointer user_data); static void cb_rstto_picture_viewer_popup_menu (RsttoPictureViewer *viewer, gboolean user_data); -static gboolean -rstto_picture_viewer_drag_drop (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - guint time); -static gboolean -rstto_picture_viewer_drag_motion (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - guint time); -static void -rstto_picture_viewer_drag_data_received(); - static GtkWidgetClass *parent_class = NULL; GType @@ -189,14 +182,15 @@ rstto_picture_viewer_init(RsttoPictureViewer *viewer) GDK_BUTTON_RELEASE_MASK | GDK_BUTTON1_MOTION_MASK); - g_signal_connect(G_OBJECT(viewer), "scroll_event", G_CALLBACK(cb_rstto_picture_viewer_scroll_event), NULL); g_signal_connect(G_OBJECT(viewer), "button_press_event", G_CALLBACK(cb_rstto_picture_viewer_button_press_event), NULL); g_signal_connect(G_OBJECT(viewer), "button_release_event", G_CALLBACK(cb_rstto_picture_viewer_button_release_event), NULL); g_signal_connect(G_OBJECT(viewer), "motion_notify_event", G_CALLBACK(cb_rstto_picture_viewer_motion_notify_event), NULL); g_signal_connect(G_OBJECT(viewer), "popup-menu", G_CALLBACK(cb_rstto_picture_viewer_popup_menu), NULL); + /* gtk_drag_dest_set(GTK_WIDGET(viewer), 0, drop_targets, G_N_ELEMENTS(drop_targets), GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_MOVE | GDK_ACTION_PRIVATE); + */ } /** @@ -247,6 +241,12 @@ rstto_marshal_VOID__OBJECT_OBJECT (GClosure *closure, data2); } +/** + * rstto_picture_viewer_class_init: + * @viewer_class: + * + * Initialize pictureviewer class + */ static void rstto_picture_viewer_class_init(RsttoPictureViewerClass *viewer_class) { @@ -264,13 +264,9 @@ rstto_picture_viewer_class_init(RsttoPictureViewerClass *viewer_class) widget_class->expose_event = rstto_picture_viewer_expose; widget_class->size_request = rstto_picture_viewer_size_request; widget_class->size_allocate = rstto_picture_viewer_size_allocate; - widget_class->drag_drop = rstto_picture_viewer_drag_drop; - widget_class->drag_motion = rstto_picture_viewer_drag_motion; - widget_class->drag_data_received = rstto_picture_viewer_drag_data_received; object_class->destroy = rstto_picture_viewer_destroy; - widget_class->set_scroll_adjustments_signal = g_signal_new ("set_scroll_adjustments", G_TYPE_FROM_CLASS (object_class), @@ -283,37 +279,11 @@ rstto_picture_viewer_class_init(RsttoPictureViewerClass *viewer_class) GTK_TYPE_ADJUSTMENT); } -static void -rstto_picture_viewer_size_request(GtkWidget *widget, GtkRequisition *requisition) -{ - requisition->width = 300; - requisition->height= 400; -} - -static void -rstto_picture_viewer_size_allocate(GtkWidget *widget, GtkAllocation *allocation) -{ - RsttoPictureViewer *viewer = RSTTO_PICTURE_VIEWER(widget); - gint border_width = 0; - widget->allocation = *allocation; - - if (GTK_WIDGET_REALIZED (widget)) - { - gdk_window_move_resize (widget->window, - allocation->x + border_width, - allocation->y + border_width, - allocation->width - border_width * 2, - allocation->height - border_width * 2); - } - - if (viewer->priv->refresh.idle_id > 0) - { - g_source_remove(viewer->priv->refresh.idle_id); - } - viewer->priv->refresh.idle_id = g_idle_add((GSourceFunc)cb_rstto_picture_viewer_queued_repaint, viewer); - -} - +/** + * rstto_picture_viewer_realize: + * @widget: + * + */ static void rstto_picture_viewer_realize(GtkWidget *widget) { @@ -345,19 +315,74 @@ rstto_picture_viewer_realize(GtkWidget *widget) gtk_style_set_background (widget->style, widget->window, GTK_STATE_ACTIVE); } +/** + * rstto_picture_viewer_size_request: + * @widget: + * @requisition: + * + * Request a default size of 300 by 400 pixels + */ +static void +rstto_picture_viewer_size_request(GtkWidget *widget, GtkRequisition *requisition) +{ + requisition->width = 400; + requisition->height= 300; +} + + +/** + * rstto_picture_viewer_size_allocate: + * @widget: + * @allocation: + * + * + */ +static void +rstto_picture_viewer_size_allocate(GtkWidget *widget, GtkAllocation *allocation) +{ + RsttoPictureViewer *viewer = RSTTO_PICTURE_VIEWER(widget); + gint border_width = 0; + widget->allocation = *allocation; + + if (GTK_WIDGET_REALIZED (widget)) + { + gdk_window_move_resize (widget->window, + allocation->x + border_width, + allocation->y + border_width, + allocation->width - border_width * 2, + allocation->height - border_width * 2); + } + + /** + * TODO: Check if we really nead a refresh + */ + rstto_picture_viewer_queued_repaint (viewer, FALSE); +} + +/** + * rstto_picture_viewer_expose: + * @widget: + * @event: + * + */ static gboolean rstto_picture_viewer_expose(GtkWidget *widget, GdkEventExpose *event) { RsttoPictureViewer *viewer = RSTTO_PICTURE_VIEWER (widget); - if (viewer->priv->refresh.idle_id > 0) - { - g_source_remove(viewer->priv->refresh.idle_id); - } - viewer->priv->refresh.idle_id = g_idle_add((GSourceFunc)cb_rstto_picture_viewer_queued_repaint, viewer); + /** + * TODO: Check if we really nead a refresh + */ + rstto_picture_viewer_queued_repaint (viewer, TRUE); return FALSE; } +/** + * rstto_picture_viewer_paint: + * @widget: + * + * Paint the picture_viewer widget contents + */ static void rstto_picture_viewer_paint (GtkWidget *widget) { @@ -443,7 +468,7 @@ rstto_picture_viewer_paint (GtkWidget *widget) y2, GDK_RGB_DITHER_NONE, 0,0); - if(viewer->priv->state == RSTTO_PICTURE_VIEWER_STATE_BOX_ZOOM) + if(viewer->priv->motion.state == RSTTO_PICTURE_VIEWER_MOTION_STATE_BOX_ZOOM) { gdk_gc_set_foreground(gc, &(widget->style->fg[GTK_STATE_SELECTED])); @@ -574,13 +599,10 @@ rstto_picture_viewer_set_scroll_adjustments(RsttoPictureViewer *viewer, GtkAdjus static void cb_rstto_picture_viewer_value_changed(GtkAdjustment *adjustment, RsttoPictureViewer *viewer) { - rstto_picture_viewer_set_state (viewer, RSTTO_PICTURE_VIEWER_STATE_MOVE); - - if (viewer->priv->refresh.idle_id > 0) - { - g_source_remove(viewer->priv->refresh.idle_id); - } - viewer->priv->refresh.idle_id = g_idle_add((GSourceFunc)cb_rstto_picture_viewer_queued_repaint, viewer); + /** + * A new subpixbuf needs to be blown up + */ + rstto_picture_viewer_queued_repaint (viewer, TRUE); } GtkWidget * @@ -605,7 +627,7 @@ rstto_picture_viewer_set_scale(RsttoPictureViewer *viewer, gdouble scale) src_pixbuf = rstto_image_get_pixbuf (viewer->priv->image); old_scale = g_object_get_data (G_OBJECT (viewer->priv->image), "viewer-scale"); fit_to_screen = g_object_get_data (G_OBJECT (viewer->priv->image), "viewer-fit-to-screen"); - rstto_picture_viewer_set_zoom_mode (viewer, RSTTO_ZOOM_MODE_CUSTOM); + //rstto_picture_viewer_set_zoom_mode (viewer, RSTTO_ZOOM_MODE_CUSTOM); new_scale = g_new0 (gdouble, 1); *new_scale = scale; @@ -700,11 +722,14 @@ rstto_picture_viewer_calculate_scale (RsttoPictureViewer *viewer) if (viewer->priv->image != NULL) { p_src_pixbuf = rstto_image_get_pixbuf (viewer->priv->image); + if (p_src_pixbuf) + { - width = gdk_pixbuf_get_width (p_src_pixbuf); - height = gdk_pixbuf_get_height (p_src_pixbuf); + width = gdk_pixbuf_get_width (p_src_pixbuf); + height = gdk_pixbuf_get_height (p_src_pixbuf); - p_scale = g_object_get_data (G_OBJECT (viewer->priv->image), "viewer-scale"); + p_scale = g_object_get_data (G_OBJECT (viewer->priv->image), "viewer-scale"); + } } if (p_scale) @@ -810,15 +835,9 @@ cb_rstto_picture_viewer_motion_notify_event (RsttoPictureViewer *viewer, viewer->priv->motion.current_x = event->x; viewer->priv->motion.current_y = event->y; - if (viewer->priv->refresh.idle_id > 0) + switch (viewer->priv->motion.state) { - g_source_remove(viewer->priv->refresh.idle_id); - viewer->priv->refresh.idle_id = 0; - } - - switch (viewer->priv->state) - { - case RSTTO_PICTURE_VIEWER_STATE_MOVE: + case RSTTO_PICTURE_VIEWER_MOTION_STATE_MOVE: if (viewer->priv->motion.x != viewer->priv->motion.current_x) { gint val = viewer->hadjustment->value; @@ -851,12 +870,8 @@ cb_rstto_picture_viewer_motion_notify_event (RsttoPictureViewer *viewer, gtk_adjustment_value_changed(viewer->vadjustment); } break; - case RSTTO_PICTURE_VIEWER_STATE_BOX_ZOOM: - if (viewer->priv->refresh.idle_id) - { - g_source_remove(viewer->priv->refresh.idle_id); - } - viewer->priv->refresh.idle_id = g_idle_add((GSourceFunc)cb_rstto_picture_viewer_queued_repaint, viewer); + case RSTTO_PICTURE_VIEWER_MOTION_STATE_BOX_ZOOM: + rstto_picture_viewer_queued_repaint (viewer, FALSE); break; default: break; @@ -935,6 +950,20 @@ rstto_picture_viewer_calculate_adjustments (RsttoPictureViewer *viewer, gdouble } static gboolean +rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer, gboolean refresh) +{ + if (viewer->priv->repaint.idle_id > 0) + { + g_source_remove(viewer->priv->repaint.idle_id); + } + if (refresh) + { + viewer->priv->repaint.refresh = TRUE; + } + viewer->priv->repaint.idle_id = g_idle_add((GSourceFunc)cb_rstto_picture_viewer_queued_repaint, viewer); +} + +static gboolean cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer) { GdkPixbuf *p_src_pixbuf = NULL; @@ -950,66 +979,18 @@ cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer) if (viewer->priv->image != NULL) { p_src_pixbuf = rstto_image_get_pixbuf (viewer->priv->image); - width = (gdouble)gdk_pixbuf_get_width (p_src_pixbuf); - height = (gdouble)gdk_pixbuf_get_height (p_src_pixbuf); + if (p_src_pixbuf) + { + width = (gdouble)gdk_pixbuf_get_width (p_src_pixbuf); + height = (gdouble)gdk_pixbuf_get_height (p_src_pixbuf); + } } switch (viewer->priv->state) { case RSTTO_PICTURE_VIEWER_STATE_NORMAL: - if (p_src_pixbuf) + if (viewer->priv->repaint.refresh) { - if (scale == 1.0 ) - { - p_tmp_pixbuf = p_src_pixbuf; - g_object_ref (p_tmp_pixbuf); - } - else - { - p_tmp_pixbuf = gdk_pixbuf_new_subpixbuf (p_src_pixbuf, - (gint)(viewer->hadjustment->value / scale), - viewer->vadjustment->value / scale, - ((widget->allocation.width/scale)) < width? - widget->allocation.width/scale:width, - ((widget->allocation.height/scale))< height? - widget->allocation.height/scale:height); - - } - if(viewer->priv->dst_pixbuf) - { - g_object_unref(viewer->priv->dst_pixbuf); - viewer->priv->dst_pixbuf = NULL; - } - if(p_tmp_pixbuf) - { - gint dst_width = gdk_pixbuf_get_width (p_tmp_pixbuf)*scale; - gint dst_height = gdk_pixbuf_get_height (p_tmp_pixbuf)*scale; - viewer->priv->dst_pixbuf = gdk_pixbuf_scale_simple (p_tmp_pixbuf, - dst_width>0?dst_width:1, - dst_height>0?dst_height:1, - GDK_INTERP_BILINEAR); - g_object_unref (p_tmp_pixbuf); - p_tmp_pixbuf = NULL; - } - } - rstto_picture_viewer_paint (GTK_WIDGET (viewer)); - break; - - case RSTTO_PICTURE_VIEWER_STATE_MOVE: - rstto_picture_viewer_paint (GTK_WIDGET(viewer)); - break; - - case RSTTO_PICTURE_VIEWER_STATE_PREVIEW: - if (viewer->priv->image) - { - p_scale = g_object_get_data (G_OBJECT (viewer->priv->image), "viewer-scale"); - if (G_LIKELY (p_scale == NULL)) - { - p_scale = g_new0 (gdouble, 1); - g_object_set_data (G_OBJECT (viewer->priv->image), "viewer-scale", p_scale); - } - *p_scale = scale; - if (p_src_pixbuf) { if (scale == 1.0 ) @@ -1045,53 +1026,51 @@ cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer) p_tmp_pixbuf = NULL; } } - } - rstto_picture_viewer_paint (GTK_WIDGET(viewer)); + rstto_picture_viewer_paint (GTK_WIDGET (viewer)); break; - - case RSTTO_PICTURE_VIEWER_STATE_BOX_ZOOM: - if (p_src_pixbuf) + case RSTTO_PICTURE_VIEWER_STATE_PREVIEW: + if (viewer->priv->image) { - if (scale == 1.0 ) + p_tmp_pixbuf = rstto_image_get_thumbnail (viewer->priv->image); + p_scale = g_object_get_data (G_OBJECT (viewer->priv->image), "viewer-scale"); + if (G_LIKELY (p_scale == NULL)) { - p_tmp_pixbuf = p_src_pixbuf; - g_object_ref(p_tmp_pixbuf); + p_scale = g_new0 (gdouble, 1); + g_object_set_data (G_OBJECT (viewer->priv->image), "viewer-scale", p_scale); } - else - { - p_tmp_pixbuf = gdk_pixbuf_new_subpixbuf (p_src_pixbuf, - (gint)(viewer->hadjustment->value / scale), - viewer->vadjustment->value / scale, - ((widget->allocation.width/scale)) < width? - widget->allocation.width/scale:width, - ((widget->allocation.height/scale))< height? - widget->allocation.height/scale:height); + *p_scale = scale; - } - if(viewer->priv->dst_pixbuf) + if (p_tmp_pixbuf) { - g_object_unref(viewer->priv->dst_pixbuf); - viewer->priv->dst_pixbuf = NULL; - } - if(p_tmp_pixbuf) - { - gint dst_width = gdk_pixbuf_get_width (p_tmp_pixbuf)*scale; - gint dst_height = gdk_pixbuf_get_height (p_tmp_pixbuf)*scale; - viewer->priv->dst_pixbuf = gdk_pixbuf_scale_simple (p_tmp_pixbuf, - dst_width>0?dst_width:1, - dst_height>0?dst_height:1, - GDK_INTERP_BILINEAR); - g_object_unref (p_tmp_pixbuf); - p_tmp_pixbuf = NULL; + g_object_ref (p_tmp_pixbuf); + + if(viewer->priv->dst_pixbuf) + { + g_object_unref(viewer->priv->dst_pixbuf); + viewer->priv->dst_pixbuf = NULL; + } + if(p_tmp_pixbuf) + { + gint dst_width = gdk_pixbuf_get_width (p_src_pixbuf)*scale; + gint dst_height = gdk_pixbuf_get_height (p_src_pixbuf)*scale; + viewer->priv->dst_pixbuf = gdk_pixbuf_scale_simple (p_tmp_pixbuf, + dst_width>0?dst_width:1, + dst_height>0?dst_height:1, + GDK_INTERP_BILINEAR); + g_object_unref (p_tmp_pixbuf); + p_tmp_pixbuf = NULL; + } } + } rstto_picture_viewer_paint (GTK_WIDGET(viewer)); break; } - g_source_remove(viewer->priv->refresh.idle_id); - viewer->priv->refresh.idle_id = -1; + g_source_remove(viewer->priv->repaint.idle_id); + viewer->priv->repaint.idle_id = -1; + viewer->priv->repaint.refresh = FALSE; return FALSE; } @@ -1108,6 +1087,12 @@ rstto_picture_viewer_set_state (RsttoPictureViewer *viewer, RsttoPictureViewerSt } static void +rstto_picture_viewer_set_motion_state (RsttoPictureViewer *viewer, RsttoPictureViewerMotionState state) +{ + viewer->priv->motion.state = state; +} + +static void cb_rstto_picture_viewer_button_press_event (RsttoPictureViewer *viewer, GdkEventButton *event) { if(event->button == 1) @@ -1129,7 +1114,7 @@ cb_rstto_picture_viewer_button_press_event (RsttoPictureViewer *viewer, GdkEvent gdk_window_set_cursor(widget->window, cursor); gdk_cursor_unref(cursor); - rstto_picture_viewer_set_state (viewer, RSTTO_PICTURE_VIEWER_STATE_MOVE); + rstto_picture_viewer_set_motion_state (viewer, RSTTO_PICTURE_VIEWER_MOTION_STATE_MOVE); } if (event->state & GDK_CONTROL_MASK) @@ -1139,7 +1124,7 @@ cb_rstto_picture_viewer_button_press_event (RsttoPictureViewer *viewer, GdkEvent gdk_window_set_cursor(widget->window, cursor); gdk_cursor_unref(cursor); - rstto_picture_viewer_set_state (viewer, RSTTO_PICTURE_VIEWER_STATE_BOX_ZOOM); + rstto_picture_viewer_set_motion_state (viewer, RSTTO_PICTURE_VIEWER_MOTION_STATE_BOX_ZOOM); } } @@ -1167,14 +1152,9 @@ cb_rstto_picture_viewer_button_release_event (RsttoPictureViewer *viewer, GdkEve GtkWidget *widget = GTK_WIDGET(viewer); gdk_window_set_cursor(widget->window, NULL); - if (rstto_picture_viewer_get_state (viewer) != RSTTO_PICTURE_VIEWER_STATE_PREVIEW) - rstto_picture_viewer_set_state (viewer, RSTTO_PICTURE_VIEWER_STATE_NORMAL); - if (viewer->priv->refresh.idle_id > 0) - { - g_source_remove(viewer->priv->refresh.idle_id); - } - viewer->priv->refresh.idle_id = g_idle_add((GSourceFunc)cb_rstto_picture_viewer_queued_repaint, viewer); + rstto_picture_viewer_set_motion_state (viewer, RSTTO_PICTURE_VIEWER_MOTION_STATE_NORMAL); + rstto_picture_viewer_queued_repaint (viewer, FALSE); } static void @@ -1266,11 +1246,7 @@ cb_rstto_picture_viewer_image_updated (RsttoImage *image, RsttoPictureViewer *vi { rstto_picture_viewer_set_state (viewer, RSTTO_PICTURE_VIEWER_STATE_NORMAL); - if (viewer->priv->refresh.idle_id) - { - g_source_remove(viewer->priv->refresh.idle_id); - } - viewer->priv->refresh.idle_id = g_idle_add((GSourceFunc)cb_rstto_picture_viewer_queued_repaint, viewer); + rstto_picture_viewer_queued_repaint (viewer, TRUE); } /** @@ -1284,11 +1260,7 @@ cb_rstto_picture_viewer_image_prepared (RsttoImage *image, RsttoPictureViewer *v { rstto_picture_viewer_set_state (viewer, RSTTO_PICTURE_VIEWER_STATE_PREVIEW); - if (viewer->priv->refresh.idle_id) - { - g_source_remove(viewer->priv->refresh.idle_id); - } - viewer->priv->refresh.idle_id = g_idle_add((GSourceFunc)cb_rstto_picture_viewer_queued_repaint, viewer); + rstto_picture_viewer_queued_repaint (viewer, TRUE); } /************************ diff --git a/src/picture_viewer.h b/src/picture_viewer.h index 13bef81..6d98890 100644 --- a/src/picture_viewer.h +++ b/src/picture_viewer.h @@ -41,13 +41,6 @@ G_BEGIN_DECLS G_TYPE_CHECK_CLASS_TYPE ((klass), \ RSTTO_TYPE_PICTURE_VIEWER())) -typedef enum -{ - RSTTO_ZOOM_MODE_100, - RSTTO_ZOOM_MODE_FIT, - RSTTO_ZOOM_MODE_CUSTOM -} RsttoZoomMode; - typedef struct _RsttoPictureViewerPriv RsttoPictureViewerPriv; typedef struct _RsttoPictureViewer RsttoPictureViewer; @@ -76,8 +69,6 @@ GType rstto_picture_viewer_get_type(); GtkWidget *rstto_picture_viewer_new (); void rstto_picture_viewer_set_image (RsttoPictureViewer *, RsttoImage *); -void rstto_picture_viewer_set_zoom_mode(RsttoPictureViewer *viewer, RsttoZoomMode mode); - void rstto_picture_viewer_set_scale(RsttoPictureViewer *viewer, gdouble scale); gdouble rstto_picture_viewer_get_scale(RsttoPictureViewer *viewer); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits