Merge lp:~bratsche/oif/evince-move-gestures-into-view into lp:~oif-team/oif/evince-gestures-trunk
- evince-move-gestures-into-view
- Merge into evince-gestures-trunk
Proposed by
Cody Russell
Status: | Superseded |
---|---|
Proposed branch: | lp:~bratsche/oif/evince-move-gestures-into-view |
Merge into: | lp:~oif-team/oif/evince-gestures-trunk |
Diff against target: |
570 lines (+234/-164) 6 files modified
configure.ac (+4/-2) libview/ev-view-private.h (+8/-0) libview/ev-view.c (+219/-2) libview/ev-view.h (+1/-1) previewer/ev-previewer-window.c (+1/-1) shell/ev-window.c (+1/-158) |
To merge this branch: | bzr merge lp:~bratsche/oif/evince-move-gestures-into-view |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Open Input Framework Team | Pending | ||
Review via email: mp+43400@code.launchpad.net |
This proposal has been superseded by a proposal from 2011-01-06.
Commit message
Description of the change
This branch requires the following first:
https:/
This moves the gesture logic out of EvWindow and into EvView, as well as simply updating evince to work with the libgrip changes in the other merge request.
To post a comment you must log in.
- 4213. By Cody Russell
-
Set some #define constants for velocity and angle.
Unmerged revisions
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'configure.ac' | |||
2 | --- configure.ac 2010-11-23 14:39:57 +0000 | |||
3 | +++ configure.ac 2010-12-10 22:15:28 +0000 | |||
4 | @@ -154,6 +154,8 @@ | |||
5 | 154 | GNOME_ICON_THEME_REQUIRED=2.17.1 | 154 | GNOME_ICON_THEME_REQUIRED=2.17.1 |
6 | 155 | LIBXML_REQUIRED=2.5.0 | 155 | LIBXML_REQUIRED=2.5.0 |
7 | 156 | 156 | ||
8 | 157 | GRIP_REQUIRED=0.1 | ||
9 | 158 | |||
10 | 157 | dnl Check dependencies | 159 | dnl Check dependencies |
11 | 158 | 160 | ||
12 | 159 | # LIB_CFLAGS for helpers and generic widgets. (libdocument, cut-and-paste) | 161 | # LIB_CFLAGS for helpers and generic widgets. (libdocument, cut-and-paste) |
13 | @@ -165,7 +167,7 @@ | |||
14 | 165 | 167 | ||
15 | 166 | 168 | ||
16 | 167 | PKG_CHECK_MODULES(LIBDOCUMENT, gtk+-$GTK_API_VERSION >= $GTK_REQUIRED gio-2.0 >= $GLIB_REQUIRED) | 169 | PKG_CHECK_MODULES(LIBDOCUMENT, gtk+-$GTK_API_VERSION >= $GTK_REQUIRED gio-2.0 >= $GLIB_REQUIRED) |
18 | 168 | PKG_CHECK_MODULES(LIBVIEW, gtk+-$GTK_API_VERSION >= $GTK_REQUIRED gail$GAIL_API_VERSION >= $GTK_REQUIRED gthread-2.0 gio-2.0 >= $GLIB_REQUIRED) | 170 | PKG_CHECK_MODULES(LIBVIEW, libgrip-0.1 >= $GRIP_REQUIRED gtk+-$GTK_API_VERSION >= $GTK_REQUIRED gail$GAIL_API_VERSION >= $GTK_REQUIRED gthread-2.0 gio-2.0 >= $GLIB_REQUIRED) |
19 | 169 | PKG_CHECK_MODULES(BACKEND, cairo >= $CAIRO_REQUIRED gtk+-$GTK_API_VERSION >= $GTK_REQUIRED) | 171 | PKG_CHECK_MODULES(BACKEND, cairo >= $CAIRO_REQUIRED gtk+-$GTK_API_VERSION >= $GTK_REQUIRED) |
20 | 170 | PKG_CHECK_MODULES(FRONTEND_CORE, gtk+-$GTK_API_VERSION >= $GTK_REQUIRED gthread-2.0 gio-2.0 >= $GLIB_REQUIRED) | 172 | PKG_CHECK_MODULES(FRONTEND_CORE, gtk+-$GTK_API_VERSION >= $GTK_REQUIRED gthread-2.0 gio-2.0 >= $GLIB_REQUIRED) |
21 | 171 | 173 | ||
22 | @@ -193,7 +195,7 @@ | |||
23 | 193 | ;; | 195 | ;; |
24 | 194 | esac | 196 | esac |
25 | 195 | 197 | ||
27 | 196 | PKG_CHECK_MODULES([SHELL_CORE],[libxml-2.0 >= $LIBXML_REQUIRED libgrip-0.1 >= 0.1 gtk+-$GTK_API_VERSION >= $GTK_REQUIRED gio-2.0 >= $GLIB_REQUIRED gthread-2.0 $SHELL_PLATFORM_PKGS]) | 198 | PKG_CHECK_MODULES([SHELL_CORE],[libxml-2.0 >= $LIBXML_REQUIRED libgrip-0.1 >= $GRIP_REQUIRED gtk+-$GTK_API_VERSION >= $GTK_REQUIRED gio-2.0 >= $GLIB_REQUIRED gthread-2.0 $SHELL_PLATFORM_PKGS]) |
28 | 197 | 199 | ||
29 | 198 | # ********* | 200 | # ********* |
30 | 199 | # SM client | 201 | # SM client |
31 | 200 | 202 | ||
32 | === modified file 'libview/ev-view-private.h' | |||
33 | --- libview/ev-view-private.h 2010-09-15 15:05:36 +0000 | |||
34 | +++ libview/ev-view-private.h 2010-12-10 22:15:28 +0000 | |||
35 | @@ -193,6 +193,14 @@ | |||
36 | 193 | 193 | ||
37 | 194 | /* Accessibility */ | 194 | /* Accessibility */ |
38 | 195 | gboolean a11y_enabled; | 195 | gboolean a11y_enabled; |
39 | 196 | |||
40 | 197 | /* Gesture state */ | ||
41 | 198 | gboolean enable_gestures; | ||
42 | 199 | gdouble drag_start_x; | ||
43 | 200 | gdouble drag_start_y; | ||
44 | 201 | gdouble pinch_start_x; | ||
45 | 202 | gdouble pinch_start_y; | ||
46 | 203 | gdouble pinch_start_radius; | ||
47 | 196 | }; | 204 | }; |
48 | 197 | 205 | ||
49 | 198 | struct _EvViewClass { | 206 | struct _EvViewClass { |
50 | 199 | 207 | ||
51 | === modified file 'libview/ev-view.c' | |||
52 | --- libview/ev-view.c 2010-11-30 05:18:17 +0000 | |||
53 | +++ libview/ev-view.c 2010-12-10 22:15:28 +0000 | |||
54 | @@ -28,6 +28,8 @@ | |||
55 | 28 | #include <gtk/gtk.h> | 28 | #include <gtk/gtk.h> |
56 | 29 | #include <gdk/gdkkeysyms.h> | 29 | #include <gdk/gdkkeysyms.h> |
57 | 30 | 30 | ||
58 | 31 | #include <libgrip/gripgesturemanager.h> | ||
59 | 32 | |||
60 | 31 | #include "ev-mapping-list.h" | 33 | #include "ev-mapping-list.h" |
61 | 32 | #include "ev-document-forms.h" | 34 | #include "ev-document-forms.h" |
62 | 33 | #include "ev-document-images.h" | 35 | #include "ev-document-images.h" |
63 | @@ -50,6 +52,11 @@ | |||
64 | 50 | #define EV_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EV_TYPE_VIEW, EvViewClass)) | 52 | #define EV_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EV_TYPE_VIEW, EvViewClass)) |
65 | 51 | 53 | ||
66 | 52 | enum { | 54 | enum { |
67 | 55 | PROP_0, | ||
68 | 56 | PROP_ENABLE_GESTURES | ||
69 | 57 | }; | ||
70 | 58 | |||
71 | 59 | enum { | ||
72 | 53 | SIGNAL_BINDING_ACTIVATED, | 60 | SIGNAL_BINDING_ACTIVATED, |
73 | 54 | SIGNAL_HANDLE_LINK, | 61 | SIGNAL_HANDLE_LINK, |
74 | 55 | SIGNAL_EXTERNAL_LINK, | 62 | SIGNAL_EXTERNAL_LINK, |
75 | @@ -142,6 +149,14 @@ | |||
76 | 142 | static void hide_annotation_windows (EvView *view, | 149 | static void hide_annotation_windows (EvView *view, |
77 | 143 | gint page); | 150 | gint page); |
78 | 144 | /*** GtkWidget implementation ***/ | 151 | /*** GtkWidget implementation ***/ |
79 | 152 | static void ev_view_get_property (GObject *object, | ||
80 | 153 | guint prop_id, | ||
81 | 154 | GValue *value, | ||
82 | 155 | GParamSpec *param_spec); | ||
83 | 156 | static void ev_view_set_property (GObject *object, | ||
84 | 157 | guint prop_id, | ||
85 | 158 | const GValue *value, | ||
86 | 159 | GParamSpec *param_spec); | ||
87 | 145 | static void ev_view_size_request_continuous_dual_page (EvView *view, | 160 | static void ev_view_size_request_continuous_dual_page (EvView *view, |
88 | 146 | GtkRequisition *requisition); | 161 | GtkRequisition *requisition); |
89 | 147 | static void ev_view_size_request_continuous (EvView *view, | 162 | static void ev_view_size_request_continuous (EvView *view, |
90 | @@ -279,6 +294,12 @@ | |||
91 | 279 | gpointer data); | 294 | gpointer data); |
92 | 280 | static void ev_view_update_primary_selection (EvView *ev_view); | 295 | static void ev_view_update_primary_selection (EvView *ev_view); |
93 | 281 | 296 | ||
94 | 297 | /*** Gestures ***/ | ||
95 | 298 | static void ev_gesture_callback (GtkWidget *widget, | ||
96 | 299 | GripTimeType time_type, | ||
97 | 300 | GripGestureEvent *event, | ||
98 | 301 | gpointer user_data); | ||
99 | 302 | |||
100 | 282 | G_DEFINE_TYPE (EvView, ev_view, GTK_TYPE_LAYOUT) | 303 | G_DEFINE_TYPE (EvView, ev_view, GTK_TYPE_LAYOUT) |
101 | 283 | 304 | ||
102 | 284 | /* HeightToPage cache */ | 305 | /* HeightToPage cache */ |
103 | @@ -2976,6 +2997,114 @@ | |||
104 | 2976 | return FALSE; | 2997 | return FALSE; |
105 | 2977 | } | 2998 | } |
106 | 2978 | 2999 | ||
107 | 3000 | /*** Gesture implementation ***/ | ||
108 | 3001 | static void | ||
109 | 3002 | ev_gesture_callback (GtkWidget *widget, | ||
110 | 3003 | GripTimeType time_type, | ||
111 | 3004 | GripGestureEvent *event, | ||
112 | 3005 | gpointer user_data) | ||
113 | 3006 | { | ||
114 | 3007 | EvView *view = EV_VIEW (widget); | ||
115 | 3008 | |||
116 | 3009 | if (time_type == GRIP_TIME_START) { | ||
117 | 3010 | switch (event->type) { | ||
118 | 3011 | case GRIP_GESTURE_DRAG: { | ||
119 | 3012 | GripEventGestureDrag *drag = (GripEventGestureDrag *)event; | ||
120 | 3013 | |||
121 | 3014 | view->drag_start_x = drag->position_x; | ||
122 | 3015 | view->drag_start_y = drag->position_y; | ||
123 | 3016 | |||
124 | 3017 | break; | ||
125 | 3018 | } | ||
126 | 3019 | |||
127 | 3020 | case GRIP_GESTURE_PINCH: { | ||
128 | 3021 | GripEventGesturePinch *pinch = (GripEventGesturePinch *)event; | ||
129 | 3022 | |||
130 | 3023 | view->pinch_start_x = pinch->focus_x; | ||
131 | 3024 | view->pinch_start_y = pinch->focus_y; | ||
132 | 3025 | view->pinch_start_radius = pinch->radius; | ||
133 | 3026 | break; | ||
134 | 3027 | } | ||
135 | 3028 | |||
136 | 3029 | default: | ||
137 | 3030 | break; | ||
138 | 3031 | } | ||
139 | 3032 | } else if (time_type == GRIP_TIME_END) { | ||
140 | 3033 | switch (event->type) { | ||
141 | 3034 | case GRIP_GESTURE_DRAG: { | ||
142 | 3035 | GripEventGestureDrag *drag = (GripEventGestureDrag *)event; | ||
143 | 3036 | |||
144 | 3037 | if (drag->velocity_y >= 1.0 && | ||
145 | 3038 | drag->position_y > view->drag_start_y) { | ||
146 | 3039 | ev_view_previous_page (view); | ||
147 | 3040 | } else if (drag->velocity_y <= -1.0 && | ||
148 | 3041 | drag->position_y < view->drag_start_y) { | ||
149 | 3042 | ev_view_next_page (view); | ||
150 | 3043 | } else if (drag->velocity_x >= 1.0 && | ||
151 | 3044 | drag->position_x > view->drag_start_x) { | ||
152 | 3045 | ev_view_previous_page (view); | ||
153 | 3046 | } else if (drag->velocity_x <= -1.0 && | ||
154 | 3047 | drag->position_x < view->drag_start_x) { | ||
155 | 3048 | ev_view_next_page (view); | ||
156 | 3049 | } | ||
157 | 3050 | |||
158 | 3051 | break; | ||
159 | 3052 | } | ||
160 | 3053 | |||
161 | 3054 | case GRIP_GESTURE_ROTATE: { | ||
162 | 3055 | GripEventGestureRotate *rotate = (GripEventGestureRotate *)event; | ||
163 | 3056 | gint rotation = ev_document_model_get_rotation (view->model); | ||
164 | 3057 | |||
165 | 3058 | if (rotate->angle >= 1.0) { | ||
166 | 3059 | ev_document_model_set_rotation (view->model, | ||
167 | 3060 | rotation + 90); | ||
168 | 3061 | } else if (rotate->angle <= -1.0) { | ||
169 | 3062 | ev_document_model_set_rotation (view->model, | ||
170 | 3063 | rotation - 90); | ||
171 | 3064 | } | ||
172 | 3065 | |||
173 | 3066 | break; | ||
174 | 3067 | } | ||
175 | 3068 | |||
176 | 3069 | default: | ||
177 | 3070 | break; | ||
178 | 3071 | } | ||
179 | 3072 | } else { | ||
180 | 3073 | switch (event->type) { | ||
181 | 3074 | case GRIP_GESTURE_PINCH: { | ||
182 | 3075 | GripEventGesturePinch *pinch = (GripEventGesturePinch *)event; | ||
183 | 3076 | gdouble increment = pinch->radius_delta * 0.01; | ||
184 | 3077 | |||
185 | 3078 | if (increment < 0.0) increment = -increment; | ||
186 | 3079 | increment += 1.0; | ||
187 | 3080 | |||
188 | 3081 | if (pinch->radius_delta < 0.0) { | ||
189 | 3082 | ev_document_model_set_sizing_mode (view->model, EV_SIZING_FREE); | ||
190 | 3083 | ev_view_zoom_out_smooth (view, (1.0 / increment)); | ||
191 | 3084 | } else if (pinch->radius_delta > 0.0) { | ||
192 | 3085 | ev_document_model_set_sizing_mode (view->model, EV_SIZING_FREE); | ||
193 | 3086 | ev_view_zoom_in_smooth (view, increment); | ||
194 | 3087 | } | ||
195 | 3088 | |||
196 | 3089 | break; | ||
197 | 3090 | } | ||
198 | 3091 | |||
199 | 3092 | case GRIP_GESTURE_DRAG: { | ||
200 | 3093 | GripEventGestureDrag *drag = (GripEventGestureDrag *)event; | ||
201 | 3094 | |||
202 | 3095 | if (drag->fingers == 1) { | ||
203 | 3096 | ev_view_drag (view, | ||
204 | 3097 | (gdouble)-drag->delta_x, | ||
205 | 3098 | (gdouble)-drag->delta_y); | ||
206 | 3099 | } | ||
207 | 3100 | } | ||
208 | 3101 | |||
209 | 3102 | default: | ||
210 | 3103 | break; | ||
211 | 3104 | } | ||
212 | 3105 | } | ||
213 | 3106 | } | ||
214 | 3107 | |||
215 | 2979 | /*** GtkWidget implementation ***/ | 3108 | /*** GtkWidget implementation ***/ |
216 | 2980 | 3109 | ||
217 | 2981 | static void | 3110 | static void |
218 | @@ -4622,6 +4751,80 @@ | |||
219 | 4622 | } | 4751 | } |
220 | 4623 | 4752 | ||
221 | 4624 | static void | 4753 | static void |
222 | 4754 | ev_view_get_property (GObject *object, | ||
223 | 4755 | guint prop_id, | ||
224 | 4756 | GValue *value, | ||
225 | 4757 | GParamSpec *param_spec) | ||
226 | 4758 | { | ||
227 | 4759 | EvView *view = EV_VIEW (object); | ||
228 | 4760 | |||
229 | 4761 | switch (prop_id) { | ||
230 | 4762 | case PROP_ENABLE_GESTURES: | ||
231 | 4763 | g_value_set_boolean (value, view->enable_gestures); | ||
232 | 4764 | break; | ||
233 | 4765 | |||
234 | 4766 | default: | ||
235 | 4767 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, | ||
236 | 4768 | prop_id, | ||
237 | 4769 | param_spec); | ||
238 | 4770 | } | ||
239 | 4771 | } | ||
240 | 4772 | |||
241 | 4773 | static void | ||
242 | 4774 | ev_view_set_property (GObject *object, | ||
243 | 4775 | guint prop_id, | ||
244 | 4776 | const GValue *value, | ||
245 | 4777 | GParamSpec *param_spec) | ||
246 | 4778 | { | ||
247 | 4779 | EvView *view = EV_VIEW (object); | ||
248 | 4780 | GtkWidget *widget; | ||
249 | 4781 | GripGestureManager *manager; | ||
250 | 4782 | |||
251 | 4783 | switch (prop_id) { | ||
252 | 4784 | case PROP_ENABLE_GESTURES: | ||
253 | 4785 | view->enable_gestures = g_value_get_boolean (value); | ||
254 | 4786 | |||
255 | 4787 | widget = GTK_WIDGET (view); | ||
256 | 4788 | manager = grip_gesture_manager_get (); | ||
257 | 4789 | |||
258 | 4790 | grip_gesture_manager_register_window (manager, | ||
259 | 4791 | widget, | ||
260 | 4792 | GRIP_GESTURE_PINCH, | ||
261 | 4793 | 2, | ||
262 | 4794 | ev_gesture_callback, | ||
263 | 4795 | NULL, NULL); | ||
264 | 4796 | |||
265 | 4797 | grip_gesture_manager_register_window (manager, | ||
266 | 4798 | widget, | ||
267 | 4799 | GRIP_GESTURE_DRAG, | ||
268 | 4800 | 2, | ||
269 | 4801 | ev_gesture_callback, | ||
270 | 4802 | NULL, NULL); | ||
271 | 4803 | |||
272 | 4804 | grip_gesture_manager_register_window (manager, | ||
273 | 4805 | widget, | ||
274 | 4806 | GRIP_GESTURE_DRAG, | ||
275 | 4807 | 1, | ||
276 | 4808 | ev_gesture_callback, | ||
277 | 4809 | NULL, NULL); | ||
278 | 4810 | |||
279 | 4811 | grip_gesture_manager_register_window (manager, | ||
280 | 4812 | widget, | ||
281 | 4813 | GRIP_GESTURE_ROTATE, | ||
282 | 4814 | 2, | ||
283 | 4815 | ev_gesture_callback, | ||
284 | 4816 | NULL, NULL); | ||
285 | 4817 | |||
286 | 4818 | break; | ||
287 | 4819 | |||
288 | 4820 | default: | ||
289 | 4821 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, | ||
290 | 4822 | prop_id, | ||
291 | 4823 | param_spec); | ||
292 | 4824 | } | ||
293 | 4825 | } | ||
294 | 4826 | |||
295 | 4827 | static void | ||
296 | 4625 | ev_view_class_init (EvViewClass *class) | 4828 | ev_view_class_init (EvViewClass *class) |
297 | 4626 | { | 4829 | { |
298 | 4627 | GObjectClass *object_class = G_OBJECT_CLASS (class); | 4830 | GObjectClass *object_class = G_OBJECT_CLASS (class); |
299 | @@ -4631,6 +4834,8 @@ | |||
300 | 4631 | GtkBindingSet *binding_set; | 4834 | GtkBindingSet *binding_set; |
301 | 4632 | 4835 | ||
302 | 4633 | object_class->finalize = ev_view_finalize; | 4836 | object_class->finalize = ev_view_finalize; |
303 | 4837 | object_class->get_property = ev_view_get_property; | ||
304 | 4838 | object_class->set_property = ev_view_set_property; | ||
305 | 4634 | 4839 | ||
306 | 4635 | widget_class->expose_event = ev_view_expose_event; | 4840 | widget_class->expose_event = ev_view_expose_event; |
307 | 4636 | widget_class->button_press_event = ev_view_button_press_event; | 4841 | widget_class->button_press_event = ev_view_button_press_event; |
308 | @@ -4724,6 +4929,15 @@ | |||
309 | 4724 | G_TYPE_NONE, 0, | 4929 | G_TYPE_NONE, 0, |
310 | 4725 | G_TYPE_NONE); | 4930 | G_TYPE_NONE); |
311 | 4726 | 4931 | ||
312 | 4932 | g_object_class_install_property (object_class, | ||
313 | 4933 | PROP_ENABLE_GESTURES, | ||
314 | 4934 | g_param_spec_boolean ("enable-gestures", | ||
315 | 4935 | "Enable gestures", | ||
316 | 4936 | "Whether to enable gestures", | ||
317 | 4937 | FALSE, | ||
318 | 4938 | G_PARAM_WRITABLE | | ||
319 | 4939 | G_PARAM_CONSTRUCT_ONLY)); | ||
320 | 4940 | |||
321 | 4727 | binding_set = gtk_binding_set_by_class (class); | 4941 | binding_set = gtk_binding_set_by_class (class); |
322 | 4728 | 4942 | ||
323 | 4729 | add_scroll_binding_keypad (binding_set, GDK_Left, 0, GTK_SCROLL_STEP_BACKWARD, TRUE); | 4943 | add_scroll_binding_keypad (binding_set, GDK_Left, 0, GTK_SCROLL_STEP_BACKWARD, TRUE); |
324 | @@ -4775,6 +4989,7 @@ | |||
325 | 4775 | gtk_layout_set_vadjustment (GTK_LAYOUT (view), NULL); | 4989 | gtk_layout_set_vadjustment (GTK_LAYOUT (view), NULL); |
326 | 4776 | } | 4990 | } |
327 | 4777 | 4991 | ||
328 | 4992 | |||
329 | 4778 | /*** Callbacks ***/ | 4993 | /*** Callbacks ***/ |
330 | 4779 | 4994 | ||
331 | 4780 | static void | 4995 | static void |
332 | @@ -4911,11 +5126,13 @@ | |||
333 | 4911 | } | 5126 | } |
334 | 4912 | 5127 | ||
335 | 4913 | GtkWidget* | 5128 | GtkWidget* |
337 | 4914 | ev_view_new (void) | 5129 | ev_view_new (gboolean enable_gestures) |
338 | 4915 | { | 5130 | { |
339 | 4916 | GtkWidget *view; | 5131 | GtkWidget *view; |
340 | 4917 | 5132 | ||
342 | 4918 | view = g_object_new (EV_TYPE_VIEW, NULL); | 5133 | view = g_object_new (EV_TYPE_VIEW, |
343 | 5134 | "enable-gestures", enable_gestures, | ||
344 | 5135 | NULL); | ||
345 | 4919 | 5136 | ||
346 | 4920 | return view; | 5137 | return view; |
347 | 4921 | } | 5138 | } |
348 | 4922 | 5139 | ||
349 | === modified file 'libview/ev-view.h' | |||
350 | --- libview/ev-view.h 2010-11-30 05:18:17 +0000 | |||
351 | +++ libview/ev-view.h 2010-12-10 22:15:28 +0000 | |||
352 | @@ -46,7 +46,7 @@ | |||
353 | 46 | 46 | ||
354 | 47 | GType ev_view_get_type (void) G_GNUC_CONST; | 47 | GType ev_view_get_type (void) G_GNUC_CONST; |
355 | 48 | 48 | ||
357 | 49 | GtkWidget* ev_view_new (void); | 49 | GtkWidget* ev_view_new (gboolean enable_gestures); |
358 | 50 | void ev_view_set_model (EvView *view, | 50 | void ev_view_set_model (EvView *view, |
359 | 51 | EvDocumentModel *model); | 51 | EvDocumentModel *model); |
360 | 52 | void ev_view_set_loading (EvView *view, | 52 | void ev_view_set_loading (EvView *view, |
361 | 53 | 53 | ||
362 | === modified file 'previewer/ev-previewer-window.c' | |||
363 | --- previewer/ev-previewer-window.c 2010-07-26 13:34:18 +0000 | |||
364 | +++ previewer/ev-previewer-window.c 2010-12-10 22:15:28 +0000 | |||
365 | @@ -607,7 +607,7 @@ | |||
366 | 607 | GTK_POLICY_AUTOMATIC, | 607 | GTK_POLICY_AUTOMATIC, |
367 | 608 | GTK_POLICY_AUTOMATIC); | 608 | GTK_POLICY_AUTOMATIC); |
368 | 609 | 609 | ||
370 | 610 | window->view = EV_VIEW (ev_view_new ()); | 610 | window->view = EV_VIEW (ev_view_new (FALSE)); |
371 | 611 | g_signal_connect_object (window->view, "focus_in_event", | 611 | g_signal_connect_object (window->view, "focus_in_event", |
372 | 612 | G_CALLBACK (view_focus_changed), | 612 | G_CALLBACK (view_focus_changed), |
373 | 613 | window, 0); | 613 | window, 0); |
374 | 614 | 614 | ||
375 | === modified file 'shell/ev-window.c' | |||
376 | --- shell/ev-window.c 2010-12-07 08:43:18 +0000 | |||
377 | +++ shell/ev-window.c 2010-12-10 22:15:28 +0000 | |||
378 | @@ -41,8 +41,6 @@ | |||
379 | 41 | #include <gio/gio.h> | 41 | #include <gio/gio.h> |
380 | 42 | #include <gtk/gtk.h> | 42 | #include <gtk/gtk.h> |
381 | 43 | 43 | ||
382 | 44 | #include <libgrip/gripgesturemanager.h> | ||
383 | 45 | |||
384 | 46 | #include "egg-editable-toolbar.h" | 44 | #include "egg-editable-toolbar.h" |
385 | 47 | #include "egg-toolbar-editor.h" | 45 | #include "egg-toolbar-editor.h" |
386 | 48 | #include "egg-toolbars-model.h" | 46 | #include "egg-toolbars-model.h" |
387 | @@ -218,13 +216,6 @@ | |||
388 | 218 | guint dbus_object_id; | 216 | guint dbus_object_id; |
389 | 219 | gchar *dbus_object_path; | 217 | gchar *dbus_object_path; |
390 | 220 | #endif | 218 | #endif |
391 | 221 | |||
392 | 222 | gdouble drag_start_x; | ||
393 | 223 | gdouble drag_start_y; | ||
394 | 224 | |||
395 | 225 | gdouble pinch_start_x; | ||
396 | 226 | gdouble pinch_start_y; | ||
397 | 227 | gdouble pinch_start_radius; | ||
398 | 228 | }; | 219 | }; |
399 | 229 | 220 | ||
400 | 230 | #define EV_WINDOW_GET_PRIVATE(object) \ | 221 | #define EV_WINDOW_GET_PRIVATE(object) \ |
401 | @@ -5433,151 +5424,6 @@ | |||
402 | 5433 | } | 5424 | } |
403 | 5434 | 5425 | ||
404 | 5435 | static void | 5426 | static void |
405 | 5436 | ev_gesture_callback (GtkWindow *window, | ||
406 | 5437 | GripTimeType time_type, | ||
407 | 5438 | GripGestureEvent *event, | ||
408 | 5439 | gpointer user_data) | ||
409 | 5440 | { | ||
410 | 5441 | EvWindowPrivate *priv = EV_WINDOW (window)->priv; | ||
411 | 5442 | |||
412 | 5443 | if (time_type == GRIP_TIME_START) { | ||
413 | 5444 | switch (event->type) { | ||
414 | 5445 | case GRIP_GESTURE_DRAG: { | ||
415 | 5446 | GripEventGestureDrag *drag = (GripEventGestureDrag *)event; | ||
416 | 5447 | |||
417 | 5448 | priv->drag_start_x = drag->position_x; | ||
418 | 5449 | priv->drag_start_y = drag->position_y; | ||
419 | 5450 | |||
420 | 5451 | break; | ||
421 | 5452 | } | ||
422 | 5453 | |||
423 | 5454 | case GRIP_GESTURE_PINCH: { | ||
424 | 5455 | GripEventGesturePinch *pinch = (GripEventGesturePinch *)event; | ||
425 | 5456 | |||
426 | 5457 | priv->pinch_start_x = pinch->focus_x; | ||
427 | 5458 | priv->pinch_start_y = pinch->focus_y; | ||
428 | 5459 | priv->pinch_start_radius = pinch->radius; | ||
429 | 5460 | break; | ||
430 | 5461 | } | ||
431 | 5462 | |||
432 | 5463 | default: | ||
433 | 5464 | break; | ||
434 | 5465 | } | ||
435 | 5466 | } else if (time_type == GRIP_TIME_END) { | ||
436 | 5467 | switch (event->type) { | ||
437 | 5468 | case GRIP_GESTURE_DRAG: { | ||
438 | 5469 | GripEventGestureDrag *drag = (GripEventGestureDrag *)event; | ||
439 | 5470 | |||
440 | 5471 | if (drag->velocity_y >= 1.0 && | ||
441 | 5472 | drag->position_y > priv->drag_start_y) { | ||
442 | 5473 | ev_window_cmd_go_previous_page (NULL, EV_WINDOW (window)); | ||
443 | 5474 | } else if (drag->velocity_y <= -1.0 && | ||
444 | 5475 | drag->position_y < priv->drag_start_y) { | ||
445 | 5476 | ev_window_cmd_go_next_page (NULL, EV_WINDOW (window)); | ||
446 | 5477 | } else if (drag->velocity_x >= 1.0 && | ||
447 | 5478 | drag->position_x > priv->drag_start_x) { | ||
448 | 5479 | ev_window_cmd_go_previous_page (NULL, EV_WINDOW (window)); | ||
449 | 5480 | } else if (drag->velocity_x <= -1.0 && | ||
450 | 5481 | drag->position_x < priv->drag_start_x) { | ||
451 | 5482 | ev_window_cmd_go_next_page (NULL, EV_WINDOW (window)); | ||
452 | 5483 | } | ||
453 | 5484 | |||
454 | 5485 | break; | ||
455 | 5486 | } | ||
456 | 5487 | |||
457 | 5488 | case GRIP_GESTURE_ROTATE: { | ||
458 | 5489 | GripEventGestureRotate *rotate = (GripEventGestureRotate *)event; | ||
459 | 5490 | |||
460 | 5491 | if (rotate->angle >= 1.0) { | ||
461 | 5492 | ev_window_cmd_edit_rotate_right (NULL, EV_WINDOW (window)); | ||
462 | 5493 | } else if (rotate->angle <= -1.0) { | ||
463 | 5494 | ev_window_cmd_edit_rotate_left (NULL, EV_WINDOW (window)); | ||
464 | 5495 | } | ||
465 | 5496 | |||
466 | 5497 | break; | ||
467 | 5498 | } | ||
468 | 5499 | |||
469 | 5500 | default: | ||
470 | 5501 | break; | ||
471 | 5502 | } | ||
472 | 5503 | } else { | ||
473 | 5504 | switch (event->type) { | ||
474 | 5505 | case GRIP_GESTURE_PINCH: { | ||
475 | 5506 | GripEventGesturePinch *pinch = (GripEventGesturePinch *)event; | ||
476 | 5507 | gdouble increment = pinch->radius_delta * 0.01; | ||
477 | 5508 | |||
478 | 5509 | if (increment < 0.0) increment = -increment; | ||
479 | 5510 | increment += 1.0; | ||
480 | 5511 | |||
481 | 5512 | if (pinch->radius_delta < 0.0) { | ||
482 | 5513 | ev_document_model_set_sizing_mode (priv->model, EV_SIZING_FREE); | ||
483 | 5514 | ev_view_zoom_out_smooth (EV_VIEW (priv->view), (1.0 / increment)); | ||
484 | 5515 | } else if (pinch->radius_delta > 0.0) { | ||
485 | 5516 | ev_document_model_set_sizing_mode (priv->model, EV_SIZING_FREE); | ||
486 | 5517 | ev_view_zoom_in_smooth (EV_VIEW (priv->view), increment); | ||
487 | 5518 | } | ||
488 | 5519 | |||
489 | 5520 | break; | ||
490 | 5521 | } | ||
491 | 5522 | |||
492 | 5523 | case GRIP_GESTURE_DRAG: { | ||
493 | 5524 | GripEventGestureDrag *drag = (GripEventGestureDrag *)event; | ||
494 | 5525 | |||
495 | 5526 | if (drag->fingers == 1) { | ||
496 | 5527 | ev_view_drag (EV_VIEW (priv->view), | ||
497 | 5528 | (gdouble)-drag->delta_x, | ||
498 | 5529 | (gdouble)-drag->delta_y); | ||
499 | 5530 | } | ||
500 | 5531 | } | ||
501 | 5532 | |||
502 | 5533 | default: | ||
503 | 5534 | break; | ||
504 | 5535 | } | ||
505 | 5536 | } | ||
506 | 5537 | } | ||
507 | 5538 | |||
508 | 5539 | static void | ||
509 | 5540 | on_window_mapped (GtkWidget *widget) | ||
510 | 5541 | { | ||
511 | 5542 | GtkWindow *window; | ||
512 | 5543 | GripGestureManager *manager; | ||
513 | 5544 | |||
514 | 5545 | window = GTK_WINDOW (widget); | ||
515 | 5546 | |||
516 | 5547 | if (ev_application_get_gestures_enabled (EV_APP)) { | ||
517 | 5548 | manager = grip_gesture_manager_get (); | ||
518 | 5549 | |||
519 | 5550 | grip_gesture_manager_register_window (manager, | ||
520 | 5551 | window, | ||
521 | 5552 | GRIP_GESTURE_PINCH, | ||
522 | 5553 | 2, | ||
523 | 5554 | ev_gesture_callback, | ||
524 | 5555 | NULL, NULL); | ||
525 | 5556 | |||
526 | 5557 | grip_gesture_manager_register_window (manager, | ||
527 | 5558 | window, | ||
528 | 5559 | GRIP_GESTURE_DRAG, | ||
529 | 5560 | 2, | ||
530 | 5561 | ev_gesture_callback, | ||
531 | 5562 | NULL, NULL); | ||
532 | 5563 | |||
533 | 5564 | grip_gesture_manager_register_window (manager, | ||
534 | 5565 | window, | ||
535 | 5566 | GRIP_GESTURE_DRAG, | ||
536 | 5567 | 1, | ||
537 | 5568 | ev_gesture_callback, | ||
538 | 5569 | NULL, NULL); | ||
539 | 5570 | |||
540 | 5571 | grip_gesture_manager_register_window (manager, | ||
541 | 5572 | window, | ||
542 | 5573 | GRIP_GESTURE_ROTATE, | ||
543 | 5574 | 2, | ||
544 | 5575 | ev_gesture_callback, | ||
545 | 5576 | NULL, NULL); | ||
546 | 5577 | } | ||
547 | 5578 | } | ||
548 | 5579 | |||
549 | 5580 | static void | ||
550 | 5581 | ev_window_class_init (EvWindowClass *ev_window_class) | 5427 | ev_window_class_init (EvWindowClass *ev_window_class) |
551 | 5582 | { | 5428 | { |
552 | 5583 | GObjectClass *g_object_class = G_OBJECT_CLASS (ev_window_class); | 5429 | GObjectClass *g_object_class = G_OBJECT_CLASS (ev_window_class); |
553 | @@ -6914,9 +6760,6 @@ | |||
554 | 6914 | g_signal_connect (ev_window, "window_state_event", | 6760 | g_signal_connect (ev_window, "window_state_event", |
555 | 6915 | G_CALLBACK (window_state_event_cb), NULL); | 6761 | G_CALLBACK (window_state_event_cb), NULL); |
556 | 6916 | 6762 | ||
557 | 6917 | g_signal_connect (ev_window, "show", | ||
558 | 6918 | G_CALLBACK (on_window_mapped), NULL); | ||
559 | 6919 | |||
560 | 6920 | ev_window->priv = EV_WINDOW_GET_PRIVATE (ev_window); | 6763 | ev_window->priv = EV_WINDOW_GET_PRIVATE (ev_window); |
561 | 6921 | 6764 | ||
562 | 6922 | #ifdef ENABLE_DBUS | 6765 | #ifdef ENABLE_DBUS |
563 | @@ -7142,7 +6985,7 @@ | |||
564 | 7142 | ev_window->priv->view_box); | 6985 | ev_window->priv->view_box); |
565 | 7143 | gtk_widget_show (ev_window->priv->view_box); | 6986 | gtk_widget_show (ev_window->priv->view_box); |
566 | 7144 | 6987 | ||
568 | 7145 | ev_window->priv->view = ev_view_new (); | 6988 | ev_window->priv->view = ev_view_new (ev_application_get_gestures_enabled (EV_APP)); |
569 | 7146 | ev_view_set_page_cache_size (EV_VIEW (ev_window->priv->view), PAGE_CACHE_SIZE); | 6989 | ev_view_set_page_cache_size (EV_VIEW (ev_window->priv->view), PAGE_CACHE_SIZE); |
570 | 7147 | ev_view_set_model (EV_VIEW (ev_window->priv->view), ev_window->priv->model); | 6990 | ev_view_set_model (EV_VIEW (ev_window->priv->view), ev_window->priv->model); |
571 | 7148 | 6991 |