pidgin/plugins/gestures/stroke-draw.c

Tue, 11 Apr 2023 00:17:15 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Tue, 11 Apr 2023 00:17:15 -0500
changeset 42202
2273647d24b0
parent 42175
4185b4043214
child 42246
3230f1a1fb8f
permissions
-rw-r--r--

Use gtk_widget_set_visible for everything

gtk_widget_show and gtk_widget_hide are deprecated in GTK 4.10. However,
gtk_widget_set_visible has been around forever so we just need to move to that.

I didn't test all of these and there are probably some that can still be
removed, but most of those are in code that is going to get refreshed in the
future so I didn't bother for now.

Testing Done:
I tested the join chat, add chat, and add buddy dialogs, as well as the contact added notification.

Reviewed at https://reviews.imfreedom.org/r/2430/

4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /*
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 GNOME stroke implementation
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 Copyright (c) 2000, 2001 Dan Nicolaescu
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 See the file COPYING for distribution information.
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5 */
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 #include "config.h"
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
8
40669
48dfed6f4f1f Fix Windows builds and tests
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40497
diff changeset
9 #ifdef HAVE_UNISTD_H
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 #include <unistd.h>
40669
48dfed6f4f1f Fix Windows builds and tests
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40497
diff changeset
11 #endif
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 #include <stdlib.h>
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 #include <stdio.h>
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 #include <glib.h>
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 #include <gtk/gtk.h>
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
16 #include <gdk/gdk.h>
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 #include "gstroke.h"
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 #include "gstroke-internal.h"
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
21 static gboolean gstroke_draw_cb(GtkWidget *widget, cairo_t *cr,
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
22 gpointer user_data);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 /*FIXME: Maybe these should be put in a structure, and not static...*/
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 static int mouse_button = 2;
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 static gboolean draw_strokes = FALSE;
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
26
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
27 #define GSTROKE_TIMEOUT_DURATION 10
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
28
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
29 #define GSTROKE_SIGNALS "gstroke_signals"
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
30
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
31 struct gstroke_func_and_data {
9855
7c63808983ad [gaim-migrate @ 10734]
Mark Doliner <markdoliner@pidgin.im>
parents: 9843
diff changeset
32 void (*func)(GtkWidget *, void *);
7c63808983ad [gaim-migrate @ 10734]
Mark Doliner <markdoliner@pidgin.im>
parents: 9843
diff changeset
33 gpointer data;
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
34 };
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
36
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37 /*FIXME: maybe it's better to just make 2 static variables, not a
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
38 structure */
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
39 struct mouse_position {
9855
7c63808983ad [gaim-migrate @ 10734]
Mark Doliner <markdoliner@pidgin.im>
parents: 9843
diff changeset
40 struct s_point last_point;
7c63808983ad [gaim-migrate @ 10734]
Mark Doliner <markdoliner@pidgin.im>
parents: 9843
diff changeset
41 gboolean invalid;
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
42 };
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
43
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
44
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
45 static struct mouse_position last_mouse_position;
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
46 static guint timer_id;
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
47
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
48 static void gstroke_execute (GtkWidget *widget, const gchar *name);
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
49
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
50 static void
35541
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
51 record_stroke_segment(GtkWidget *widget)
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
52 {
35541
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
53 gint x, y;
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
54 struct gstroke_metrics *metrics;
39945
a463a1d03965 Use new GdkSeat API instead of deprecated GdkDevice.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
55 GdkSeat *seat;
35541
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
56 GdkDevice *dev;
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
57
35541
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
58 g_return_if_fail(widget != NULL);
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
59
39945
a463a1d03965 Use new GdkSeat API instead of deprecated GdkDevice.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
60 seat = gdk_display_get_default_seat(gtk_widget_get_display(widget));
a463a1d03965 Use new GdkSeat API instead of deprecated GdkDevice.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
61 dev = gdk_seat_get_pointer(seat);
35541
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
62 gdk_window_get_device_position(gtk_widget_get_window(widget),
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
63 dev, &x, &y, NULL);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
64
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
65 last_mouse_position.invalid = FALSE;
35541
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
66
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
67 if (last_mouse_position.last_point.x != x ||
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
68 last_mouse_position.last_point.y != y)
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
69 {
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
70 last_mouse_position.last_point.x = x;
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
71 last_mouse_position.last_point.y = y;
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
72 metrics = g_object_get_data(G_OBJECT(widget), GSTROKE_METRICS);
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
73 _gstroke_record (x, y, metrics);
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33270
diff changeset
74 }
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
75
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
76 if (gstroke_draw_strokes()) {
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
77 gtk_widget_queue_draw(widget);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
78 }
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
79 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
80
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
81 static gint
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
82 gstroke_timeout (gpointer data)
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
83 {
9855
7c63808983ad [gaim-migrate @ 10734]
Mark Doliner <markdoliner@pidgin.im>
parents: 9843
diff changeset
84 GtkWidget *widget;
7c63808983ad [gaim-migrate @ 10734]
Mark Doliner <markdoliner@pidgin.im>
parents: 9843
diff changeset
85
7c63808983ad [gaim-migrate @ 10734]
Mark Doliner <markdoliner@pidgin.im>
parents: 9843
diff changeset
86 g_return_val_if_fail(data != NULL, FALSE);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
87
9855
7c63808983ad [gaim-migrate @ 10734]
Mark Doliner <markdoliner@pidgin.im>
parents: 9843
diff changeset
88 widget = GTK_WIDGET (data);
7c63808983ad [gaim-migrate @ 10734]
Mark Doliner <markdoliner@pidgin.im>
parents: 9843
diff changeset
89 record_stroke_segment (widget);
7c63808983ad [gaim-migrate @ 10734]
Mark Doliner <markdoliner@pidgin.im>
parents: 9843
diff changeset
90
7c63808983ad [gaim-migrate @ 10734]
Mark Doliner <markdoliner@pidgin.im>
parents: 9843
diff changeset
91 return TRUE;
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
94 static void
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
95 gstroke_cancel(GtkWidget *widget, GdkEvent *event)
9843
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
96 {
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
97 last_mouse_position.invalid = TRUE;
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
98
42175
4185b4043214 Use g_clear_handle_id everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42172
diff changeset
99 g_clear_handle_id(&timer_id, g_source_remove);
9843
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
100
39945
a463a1d03965 Use new GdkSeat API instead of deprecated GdkDevice.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
101 if (event != NULL) {
a463a1d03965 Use new GdkSeat API instead of deprecated GdkDevice.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
102 gdk_seat_ungrab(gdk_event_get_seat(event));
a463a1d03965 Use new GdkSeat API instead of deprecated GdkDevice.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
103 }
9843
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
104
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
105 if (gstroke_draw_strokes()) {
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
106 gtk_widget_queue_draw(widget);
9843
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
107 }
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
108 }
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
109
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
110 static gint
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
111 process_event(GtkWidget *widget, GdkEvent *event, gpointer data)
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
112 {
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
113 static GtkWidget *original_widget = NULL;
5861
9311ed5b8492 [gaim-migrate @ 6292]
Christian Hammond <chipx86@chipx86.com>
parents: 5227
diff changeset
114 static GdkCursor *cursor = NULL;
9311ed5b8492 [gaim-migrate @ 6292]
Christian Hammond <chipx86@chipx86.com>
parents: 5227
diff changeset
115
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
116 switch (event->type) {
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
117 case GDK_BUTTON_PRESS:
9843
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
118 if (event->button.button != gstroke_get_mouse_button()) {
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
119 /* Similar to the bug below catch when any other button is
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
120 * clicked after the middle button is clicked (but possibly
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
121 * not released)
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
122 */
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
123 gstroke_cancel(widget, event);
9843
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
124 original_widget = NULL;
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
125 break;
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
126 }
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
127
41086
631e6cba8635 Fix typos in Pidgin
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40765
diff changeset
128 original_widget = widget; /* remember the widget where
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
129 the stroke started */
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
130
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
131 record_stroke_segment (widget);
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
132
37997
7b62a2153898 Use gdk_cursor_new_for_display over gdk_cursor_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37424
diff changeset
133 if (cursor == NULL) {
7b62a2153898 Use gdk_cursor_new_for_display over gdk_cursor_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37424
diff changeset
134 GdkDisplay *display = gtk_widget_get_display(widget);
7b62a2153898 Use gdk_cursor_new_for_display over gdk_cursor_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37424
diff changeset
135 cursor = gdk_cursor_new_for_display(display, GDK_PENCIL);
7b62a2153898 Use gdk_cursor_new_for_display over gdk_cursor_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37424
diff changeset
136 }
5861
9311ed5b8492 [gaim-migrate @ 6292]
Christian Hammond <chipx86@chipx86.com>
parents: 5227
diff changeset
137
39945
a463a1d03965 Use new GdkSeat API instead of deprecated GdkDevice.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
138 gdk_seat_grab(gdk_event_get_seat(event), gtk_widget_get_window(widget),
a463a1d03965 Use new GdkSeat API instead of deprecated GdkDevice.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
139 GDK_SEAT_CAPABILITY_ALL_POINTING, FALSE, cursor, event,
a463a1d03965 Use new GdkSeat API instead of deprecated GdkDevice.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
140 NULL, NULL);
8555
0f6f88300b00 [gaim-migrate @ 9298]
Nathan Walp <nwalp@pidgin.im>
parents: 7631
diff changeset
141 timer_id = g_timeout_add (GSTROKE_TIMEOUT_DURATION,
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
142 gstroke_timeout, widget);
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
143 return TRUE;
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
144
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
145 case GDK_BUTTON_RELEASE:
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
146 if ((event->button.button != gstroke_get_mouse_button())
4399
c021f4365b91 [gaim-migrate @ 4668]
Christian Hammond <chipx86@chipx86.com>
parents: 4390
diff changeset
147 || (original_widget == NULL)) {
c021f4365b91 [gaim-migrate @ 4668]
Christian Hammond <chipx86@chipx86.com>
parents: 4390
diff changeset
148
9843
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
149 /* Nice bug when you hold down one button and press another. */
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
150 /* We'll just cancel the gesture instead. */
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
151 gstroke_cancel(widget, event);
9843
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
152 original_widget = NULL;
4daa0a6b2dd0 [gaim-migrate @ 10721]
Dave West <kat@users.sourceforge.net>
parents: 8555
diff changeset
153 break;
4399
c021f4365b91 [gaim-migrate @ 4668]
Christian Hammond <chipx86@chipx86.com>
parents: 4390
diff changeset
154 }
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
155
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
156 last_mouse_position.invalid = TRUE;
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
157 original_widget = NULL;
42175
4185b4043214 Use g_clear_handle_id everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42172
diff changeset
158 g_clear_handle_id(&timer_id, g_source_remove);
39945
a463a1d03965 Use new GdkSeat API instead of deprecated GdkDevice.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
159 gdk_seat_ungrab(gdk_event_get_seat(event));
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
160
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
161 {
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
162 GtkWidget *history = data;
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
163 char result[GSTROKE_MAX_SEQUENCE];
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
164 struct gstroke_metrics *metrics;
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
165
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
166 metrics = (struct gstroke_metrics *)g_object_get_data(G_OBJECT (widget),
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
167 GSTROKE_METRICS);
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
168 if (gstroke_draw_strokes()) {
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
169 gtk_widget_queue_draw(widget);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
170 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
171
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
172 _gstroke_canonical(result, metrics);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
173 gstroke_execute(history, result);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
174 }
12204
77be85a65fe8 [gaim-migrate @ 14506]
Richard Laager <rlaager@pidgin.im>
parents: 10814
diff changeset
175 return FALSE;
77be85a65fe8 [gaim-migrate @ 14506]
Richard Laager <rlaager@pidgin.im>
parents: 10814
diff changeset
176
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
177 default:
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
178 break;
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
179 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
180
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
181 return FALSE;
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
182 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
183
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
184 void
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
185 gstroke_set_draw_strokes(gboolean draw)
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
186 {
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
187 draw_strokes = draw;
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
188 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
189
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
190 gboolean
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
191 gstroke_draw_strokes(void)
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
192 {
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
193 return draw_strokes;
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
194 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
195
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
196 void
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
197 gstroke_set_mouse_button(gint button)
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
198 {
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
199 mouse_button = button;
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
200 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
201
7631
0e9e516bb6c3 [gaim-migrate @ 8255]
Nathan Walp <nwalp@pidgin.im>
parents: 5861
diff changeset
202 guint
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
203 gstroke_get_mouse_button(void)
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
204 {
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
205 return mouse_button;
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
206 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
207
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
208 void
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
209 gstroke_enable (GtkWidget *widget)
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
210 {
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
211 GtkWidget *event = gtk_widget_get_parent(widget);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
212 struct gstroke_metrics *metrics = NULL;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
213
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
214 if (GTK_IS_EVENT_BOX(event)) {
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
215 metrics = (struct gstroke_metrics *)g_object_get_data(G_OBJECT(event),
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
216 GSTROKE_METRICS);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
217 }
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
218
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
219 if (metrics == NULL) {
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
220 GtkWidget *parent;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
221
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
222 metrics = g_new0(struct gstroke_metrics, 1);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
223 metrics->pointList = NULL;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
224 metrics->min_x = 10000;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
225 metrics->min_y = 10000;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
226 metrics->max_x = 0;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
227 metrics->max_y = 0;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
228 metrics->point_count = 0;
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
229
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
230 event = gtk_event_box_new();
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
231 gtk_event_box_set_above_child(GTK_EVENT_BOX(event), TRUE);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
232 gtk_widget_set_events(event, GDK_BUTTON_PRESS_MASK |
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
233 GDK_BUTTON_RELEASE_MASK |
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
234 GDK_BUTTON2_MOTION_MASK);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
235 gtk_widget_set_app_paintable(event, TRUE);
42202
2273647d24b0 Use gtk_widget_set_visible for everything
Gary Kramlich <grim@reaperworld.com>
parents: 42175
diff changeset
236 gtk_widget_set_visible(event, TRUE);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
237
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
238 parent = gtk_widget_get_parent(widget);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
239 g_object_ref(widget);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
240 gtk_container_remove(GTK_CONTAINER(parent), widget);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
241 gtk_container_add(GTK_CONTAINER(event), widget);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
242 g_object_unref(widget);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
243 gtk_container_add(GTK_CONTAINER(parent), event);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
244
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
245 g_object_set_data(G_OBJECT(event), GSTROKE_METRICS, metrics);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
246
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
247 g_signal_connect(G_OBJECT(event), "event", G_CALLBACK(process_event),
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
248 widget);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
249 g_signal_connect_after(G_OBJECT(event), "draw",
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
250 G_CALLBACK(gstroke_draw_cb), NULL);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
251 } else {
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
252 _gstroke_init(metrics);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
253 }
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
254
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
255 last_mouse_position.invalid = TRUE;
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
256 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
257
12667
1677da671689 [gaim-migrate @ 15010]
Richard Laager <rlaager@pidgin.im>
parents: 12204
diff changeset
258 void
1677da671689 [gaim-migrate @ 15010]
Richard Laager <rlaager@pidgin.im>
parents: 12204
diff changeset
259 gstroke_disable(GtkWidget *widget)
1677da671689 [gaim-migrate @ 15010]
Richard Laager <rlaager@pidgin.im>
parents: 12204
diff changeset
260 {
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
261 GtkWidget *event = gtk_widget_get_parent(widget);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
262
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
263 g_return_if_fail(GTK_IS_EVENT_BOX(event));
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
264
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
265 g_signal_handlers_disconnect_by_func(G_OBJECT(event),
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
266 G_CALLBACK(process_event), widget);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
267 g_signal_handlers_disconnect_by_func(G_OBJECT(event),
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
268 G_CALLBACK(gstroke_draw_cb), NULL);
12667
1677da671689 [gaim-migrate @ 15010]
Richard Laager <rlaager@pidgin.im>
parents: 12204
diff changeset
269 }
1677da671689 [gaim-migrate @ 15010]
Richard Laager <rlaager@pidgin.im>
parents: 12204
diff changeset
270
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
271 void
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
272 gstroke_signal_connect(GtkWidget *widget, const gchar *name,
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
273 void (*func)(GtkWidget *widget, void *data),
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
274 gpointer data)
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
275 {
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
276 struct gstroke_func_and_data *func_and_data;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
277 GHashTable *hash_table =
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
278 (GHashTable *)g_object_get_data(G_OBJECT(widget), GSTROKE_SIGNALS);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
279
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
280 if (!hash_table) {
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
281 hash_table =
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
282 g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
283 g_object_set_data(G_OBJECT(widget), GSTROKE_SIGNALS, hash_table);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
284 }
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
285
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
286 func_and_data = g_new0(struct gstroke_func_and_data, 1);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
287 func_and_data->func = func;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
288 func_and_data->data = data;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
289 g_hash_table_insert(hash_table, g_strdup(name), func_and_data);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
290 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
291
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
292 static void
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
293 gstroke_execute (GtkWidget *widget, const gchar *name)
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
294 {
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
295
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
296 GHashTable *hash_table =
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
297 (GHashTable*)g_object_get_data(G_OBJECT(widget), GSTROKE_SIGNALS);
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
298
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
299 #if 0
40765
a5381c20e802 Use specific purple_debug_* functions
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40669
diff changeset
300 purple_debug_misc("gestures", "gstroke %s", name);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
301 #endif
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30010
diff changeset
302
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
303 if (hash_table)
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
304 {
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
305 struct gstroke_func_and_data *fd =
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
306 (struct gstroke_func_and_data*)g_hash_table_lookup (hash_table, name);
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
307 if (fd)
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
308 (*fd->func)(widget, fd->data);
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
309 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
310 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
311
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
312 void
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
313 gstroke_cleanup (GtkWidget *widget)
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
314 {
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
315 struct gstroke_metrics *metrics;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
316 GHashTable *hash_table = (GHashTable *)g_object_steal_data(G_OBJECT(widget),
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
317 GSTROKE_SIGNALS);
42172
7c2d151b410d Use g_clear_* helpers where useful
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41086
diff changeset
318 g_clear_pointer(&hash_table, g_hash_table_destroy);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
319
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
320 metrics = (struct gstroke_metrics *)g_object_steal_data(G_OBJECT(widget),
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
321 GSTROKE_METRICS);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
322 g_free(metrics);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
323 }
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
324
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
325 static gboolean
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
326 gstroke_draw_cb(GtkWidget *widget, cairo_t *cr,
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
327 G_GNUC_UNUSED gpointer user_data)
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
328 {
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
329 struct gstroke_metrics *metrics =
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
330 (struct gstroke_metrics *)g_object_get_data(G_OBJECT(widget),
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
331 GSTROKE_METRICS);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
332 GSList *iter = NULL;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
333 p_point point;
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
334
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
335 if (last_mouse_position.invalid) {
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
336 return FALSE;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
337 }
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
338
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
339 if (!metrics) {
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
340 return FALSE;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
341 }
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
342
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
343 iter = metrics->pointList;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
344 if (!iter) {
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
345 return FALSE;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
346 }
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
347
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
348 cairo_save(cr);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
349
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
350 cairo_set_line_width(cr, 2.0);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
351 cairo_set_dash(cr, NULL, 0, 0.0);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
352 cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
353 cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
354
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
355 point = (p_point)iter->data;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
356 iter = iter->next;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
357 cairo_move_to(cr, point->x, point->y);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
358
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
359 while (iter) {
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
360 point = (p_point)iter->data;
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
361 iter = iter->next;
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
362
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
363 cairo_line_to(cr, point->x, point->y);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
364 }
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
365
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
366 cairo_stroke(cr);
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
367
40497
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
368 cairo_restore(cr);
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
369
2f45a03838e9 Fix gestures plugin
Elliott S <quantum.analyst@gmail.com>
parents: 40198
diff changeset
370 return FALSE;
4390
590cb1708f57 [gaim-migrate @ 4656]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
371 }

mercurial