pidgin/plugins/gestures/stroke-draw.c

changeset 39945
a463a1d03965
parent 37997
7b62a2153898
child 40198
0eac0eaf13c3
equal deleted inserted replaced
39936:69aecf36a4e0 39945:a463a1d03965
55 static void 55 static void
56 record_stroke_segment(GtkWidget *widget) 56 record_stroke_segment(GtkWidget *widget)
57 { 57 {
58 gint x, y; 58 gint x, y;
59 struct gstroke_metrics *metrics; 59 struct gstroke_metrics *metrics;
60 GdkDeviceManager *devmgr; 60 GdkSeat *seat;
61 GdkDevice *dev; 61 GdkDevice *dev;
62 62
63 g_return_if_fail(widget != NULL); 63 g_return_if_fail(widget != NULL);
64 64
65 devmgr = gdk_display_get_device_manager(gtk_widget_get_display(widget)); 65 seat = gdk_display_get_default_seat(gtk_widget_get_display(widget));
66 dev = gdk_device_manager_get_client_pointer(devmgr); 66 dev = gdk_seat_get_pointer(seat);
67 gdk_window_get_device_position(gtk_widget_get_window(widget), 67 gdk_window_get_device_position(gtk_widget_get_window(widget),
68 dev, &x, &y, NULL); 68 dev, &x, &y, NULL);
69 69
70 if (last_mouse_position.invalid) 70 if (last_mouse_position.invalid)
71 last_mouse_position.invalid = FALSE; 71 last_mouse_position.invalid = FALSE;
116 if (timer_id > 0) 116 if (timer_id > 0)
117 g_source_remove (timer_id); 117 g_source_remove (timer_id);
118 118
119 timer_id = 0; 119 timer_id = 0;
120 120
121 if( event != NULL ) 121 if (event != NULL) {
122 gdk_device_ungrab(gdk_event_get_device(event), event->button.time); 122 gdk_seat_ungrab(gdk_event_get_seat(event));
123 }
123 124
124 if (gstroke_draw_strokes() && gstroke_disp != NULL) { 125 if (gstroke_draw_strokes() && gstroke_disp != NULL) {
125 /* get rid of the invisible stroke window */ 126 /* get rid of the invisible stroke window */
126 XUnmapWindow (gstroke_disp, gstroke_window); 127 XUnmapWindow (gstroke_disp, gstroke_window);
127 XFlush (gstroke_disp); 128 XFlush (gstroke_disp);
157 if (cursor == NULL) { 158 if (cursor == NULL) {
158 GdkDisplay *display = gtk_widget_get_display(widget); 159 GdkDisplay *display = gtk_widget_get_display(widget);
159 cursor = gdk_cursor_new_for_display(display, GDK_PENCIL); 160 cursor = gdk_cursor_new_for_display(display, GDK_PENCIL);
160 } 161 }
161 162
162 gdk_device_grab(gdk_event_get_device(event), 163 gdk_seat_grab(gdk_event_get_seat(event), gtk_widget_get_window(widget),
163 gtk_widget_get_window(widget), GDK_OWNERSHIP_WINDOW, 164 GDK_SEAT_CAPABILITY_ALL_POINTING, FALSE, cursor, event,
164 FALSE, GDK_BUTTON_RELEASE_MASK, cursor, 165 NULL, NULL);
165 event->button.time);
166 timer_id = g_timeout_add (GSTROKE_TIMEOUT_DURATION, 166 timer_id = g_timeout_add (GSTROKE_TIMEOUT_DURATION,
167 gstroke_timeout, widget); 167 gstroke_timeout, widget);
168 return TRUE; 168 return TRUE;
169 169
170 case GDK_BUTTON_RELEASE: 170 case GDK_BUTTON_RELEASE:
179 } 179 }
180 180
181 last_mouse_position.invalid = TRUE; 181 last_mouse_position.invalid = TRUE;
182 original_widget = NULL; 182 original_widget = NULL;
183 g_source_remove (timer_id); 183 g_source_remove (timer_id);
184 gdk_device_ungrab(gdk_event_get_device(event), event->button.time); 184 gdk_seat_ungrab(gdk_event_get_seat(event));
185 timer_id = 0; 185 timer_id = 0;
186 186
187 { 187 {
188 char result[GSTROKE_MAX_SEQUENCE]; 188 char result[GSTROKE_MAX_SEQUENCE];
189 struct gstroke_metrics *metrics; 189 struct gstroke_metrics *metrics;

mercurial