[gtk+/wip/baedert/gtkimageview] GtkImageView: Move gesture callback around
- From: Timm Bäder <baedert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/baedert/gtkimageview] GtkImageView: Move gesture callback around
- Date: Sat, 23 Jan 2016 11:02:08 +0000 (UTC)
commit a6efa70fc606b9373ccabd551ec18a1ce37687d7
Author: Timm Bäder <mail baedert org>
Date: Sat Jan 23 11:54:24 2016 +0100
GtkImageView: Move gesture callback around
Use a common naming scheme, one section for each gesture with begin,
end, cancel, changed callbacks, in that order.
gtk/gtkimageview.c | 184 ++++++++++++++++++++++++++-------------------------
1 files changed, 94 insertions(+), 90 deletions(-)
---
diff --git a/gtk/gtkimageview.c b/gtk/gtkimageview.c
index e0ec5f6..60ced04 100644
--- a/gtk/gtkimageview.c
+++ b/gtk/gtkimageview.c
@@ -290,80 +290,6 @@ gtk_image_view_fix_anchor (GtkImageView *image_view,
}
static void
-gesture_rotate_end_cb (GtkGesture *gesture,
- GdkEventSequence *sequence,
- gpointer user_data)
-{
- GtkImageViewPrivate *priv = gtk_image_view_get_instance_private (user_data);
-
- priv->gesture_start_angle = 0.0;
- priv->in_rotate = FALSE;
-
- priv->anchor_x = -1;
- priv->anchor_y = -1;
-}
-
-static void
-gesture_rotate_cancel_cb (GtkGesture *gesture,
- GdkEventSequence *sequence,
- gpointer user_data)
-{
- GtkImageViewPrivate *priv = gtk_image_view_get_instance_private (user_data);
- gtk_image_view_set_angle (user_data, priv->gesture_start_angle);
- priv->in_rotate = FALSE;
- priv->gesture_start_angle = 0.0;
-
- priv->anchor_x = -1;
- priv->anchor_y = -1;
-}
-
-
-static void
-gesture_angle_changed_cb (GtkGestureRotate *gesture,
- double angle,
- double delta,
- GtkWidget *widget)
-{
- GtkImageView *image_view = GTK_IMAGE_VIEW (widget);
- GtkImageViewPrivate *priv = gtk_image_view_get_instance_private (image_view);
- State old_state;
- double new_angle;
-
- if (!priv->in_rotate)
- {
- priv->in_rotate = TRUE;
- priv->gesture_start_angle = priv->angle;
- }
-
-
- new_angle = priv->gesture_start_angle + RAD_TO_DEG (delta);
-
- if (new_angle == priv->angle)
- return;
-
-
- gtk_image_view_get_current_state (image_view, &old_state);
-
- /* Don't notify */
- priv->angle = new_angle;
- priv->size_valid = FALSE;
- gtk_image_view_update_adjustments (image_view);
-
- if (priv->hadjustment && priv->vadjustment)
- gtk_image_view_fix_anchor (image_view,
- priv->anchor_x,
- priv->anchor_y,
- &old_state);
-
- // XXX Even if fit_allocation is not set, we still don't need to query a resize
- // if we are in a scrolledwindow, right?
- if (priv->fit_allocation)
- gtk_widget_queue_draw (widget);
- else
- gtk_widget_queue_resize (widget);
-}
-
-static void
gtk_image_view_compute_bounding_box (GtkImageView *image_view,
double *width,
double *height,
@@ -570,6 +496,30 @@ gtk_image_view_set_scale_internal (GtkImageView *image_view,
gtk_widget_queue_resize (GTK_WIDGET (image_view));
}
+/* Zoom Gesture {{{ */
+
+static void
+gesture_zoom_begin_cb (GtkGesture *gesture,
+ GdkEventSequence *sequence,
+ gpointer user_data)
+{
+ GtkImageViewPrivate *priv = gtk_image_view_get_instance_private (user_data);
+
+ if (!priv->zoom_gesture_enabled ||
+ !priv->image_surface)
+ {
+ gtk_gesture_set_state (gesture, GTK_EVENT_SEQUENCE_DENIED);
+ return;
+ }
+
+ if (priv->anchor_x == -1 && priv->anchor_y == -1)
+ {
+ gtk_gesture_get_bounding_box_center (gesture,
+ &priv->anchor_x,
+ &priv->anchor_y);
+ }
+}
+
static void
gesture_zoom_end_cb (GtkGesture *gesture,
GdkEventSequence *sequence,
@@ -603,9 +553,8 @@ gesture_zoom_cancel_cb (GtkGesture *gesture,
priv->anchor_y = -1;
}
-
static void
-gesture_scale_changed_cb (GtkGestureZoom *gesture,
+gesture_zoom_changed_cb (GtkGestureZoom *gesture,
double delta,
GtkWidget *widget)
{
@@ -638,6 +587,9 @@ gesture_scale_changed_cb (GtkGestureZoom *gesture,
}
}
+/* }}} */
+
+/* Rotate Gesture {{{ */
static void
gesture_rotate_begin_cb (GtkGesture *gesture,
GdkEventSequence *sequence,
@@ -645,7 +597,8 @@ gesture_rotate_begin_cb (GtkGesture *gesture,
{
GtkImageViewPrivate *priv = gtk_image_view_get_instance_private (user_data);
- if (!priv->rotate_gesture_enabled)
+ if (!priv->rotate_gesture_enabled ||
+ !priv->image_surface)
{
gtk_gesture_set_state (gesture, GTK_EVENT_SEQUENCE_DENIED);
return;
@@ -661,28 +614,79 @@ gesture_rotate_begin_cb (GtkGesture *gesture,
}
static void
-gesture_zoom_begin_cb (GtkGesture *gesture,
+gesture_rotate_end_cb (GtkGesture *gesture,
GdkEventSequence *sequence,
gpointer user_data)
{
GtkImageViewPrivate *priv = gtk_image_view_get_instance_private (user_data);
- if (!priv->zoom_gesture_enabled)
- {
- gtk_gesture_set_state (gesture, GTK_EVENT_SEQUENCE_DENIED);
- return;
- }
+ priv->gesture_start_angle = 0.0;
+ priv->in_rotate = FALSE;
+ priv->anchor_x = -1;
+ priv->anchor_y = -1;
+}
- if (priv->anchor_x == -1 && priv->anchor_y == -1)
+static void
+gesture_rotate_cancel_cb (GtkGesture *gesture,
+ GdkEventSequence *sequence,
+ gpointer user_data)
+{
+ GtkImageViewPrivate *priv = gtk_image_view_get_instance_private (user_data);
+ gtk_image_view_set_angle (user_data, priv->gesture_start_angle);
+ priv->in_rotate = FALSE;
+ priv->gesture_start_angle = 0.0;
+
+ priv->anchor_x = -1;
+ priv->anchor_y = -1;
+}
+
+static void
+gesture_rotate_changed_cb (GtkGestureRotate *gesture,
+ double angle,
+ double delta,
+ GtkWidget *widget)
+{
+ GtkImageView *image_view = GTK_IMAGE_VIEW (widget);
+ GtkImageViewPrivate *priv = gtk_image_view_get_instance_private (image_view);
+ State old_state;
+ double new_angle;
+
+ if (!priv->in_rotate)
{
- gtk_gesture_get_bounding_box_center (gesture,
- &priv->anchor_x,
- &priv->anchor_y);
+ priv->in_rotate = TRUE;
+ priv->gesture_start_angle = priv->angle;
}
-}
+ new_angle = priv->gesture_start_angle + RAD_TO_DEG (delta);
+
+ if (new_angle == priv->angle)
+ return;
+
+
+ gtk_image_view_get_current_state (image_view, &old_state);
+
+ /* Don't notify */
+ priv->angle = new_angle;
+ priv->size_valid = FALSE;
+ gtk_image_view_update_adjustments (image_view);
+
+ if (priv->hadjustment && priv->vadjustment)
+ gtk_image_view_fix_anchor (image_view,
+ priv->anchor_x,
+ priv->anchor_y,
+ &old_state);
+
+ // XXX Even if fit_allocation is not set, we still don't need to query a resize
+ // if we are in a scrolledwindow, right?
+ if (priv->fit_allocation)
+ gtk_widget_queue_draw (widget);
+ else
+ gtk_widget_queue_resize (widget);
+}
+/* }}} */
+
static void
gtk_image_view_ensure_gestures (GtkImageView *image_view)
{
@@ -692,7 +696,7 @@ gtk_image_view_ensure_gestures (GtkImageView *image_view)
{
priv->zoom_gesture = gtk_gesture_zoom_new (GTK_WIDGET (image_view));
g_signal_connect (priv->zoom_gesture, "scale-changed",
- (GCallback)gesture_scale_changed_cb, image_view);
+ (GCallback)gesture_zoom_changed_cb, image_view);
g_signal_connect (priv->zoom_gesture, "begin",
(GCallback)gesture_zoom_begin_cb, image_view);
g_signal_connect (priv->zoom_gesture, "end",
@@ -710,7 +714,7 @@ gtk_image_view_ensure_gestures (GtkImageView *image_view)
priv->rotate_gesture = gtk_gesture_rotate_new (GTK_WIDGET (image_view));
/*gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (priv->rotate_gesture),*/
/*GTK_PHASE_CAPTURE);*/
- g_signal_connect (priv->rotate_gesture, "angle-changed", (GCallback)gesture_angle_changed_cb,
image_view);
+ g_signal_connect (priv->rotate_gesture, "angle-changed", (GCallback)gesture_rotate_changed_cb,
image_view);
g_signal_connect (priv->rotate_gesture, "begin", (GCallback)gesture_rotate_begin_cb, image_view);
g_signal_connect (priv->rotate_gesture, "end", (GCallback)gesture_rotate_end_cb, image_view);
g_signal_connect (priv->rotate_gesture, "cancel", (GCallback)gesture_rotate_cancel_cb, image_view);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]