summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2018-01-15 23:24:50 -0500
committerMatthias Clasen <mclasen@redhat.com>2018-01-16 14:14:10 -0500
commit4d31a89ec02c408a5702d0b1db8f7c15ce3f7e15 (patch)
tree5acbe876820a4746cd85349b0dbaf1f633d570d7
parent81b8f0493a1cc09cbc5386e7f4cb8cb6f13db6e3 (diff)
downloadgtk+-4d31a89ec02c408a5702d0b1db8f7c15ce3f7e15.tar.gz
gtk-demo: Stop using ::motion-notify-event in the hypertext demo
We already have a generic ::event handler, just use it for this.
-rw-r--r--demos/gtk-demo/hypertext.c47
1 files changed, 17 insertions, 30 deletions
diff --git a/demos/gtk-demo/hypertext.c b/demos/gtk-demo/hypertext.c
index 0cbaf352ba..bf06118095 100644
--- a/demos/gtk-demo/hypertext.c
+++ b/demos/gtk-demo/hypertext.c
@@ -131,11 +131,15 @@ key_press_event (GtkWidget *text_view,
return FALSE;
}
+static void set_cursor_if_appropriate (GtkTextView *text_view,
+ gint x,
+ gint y);
+
/* Links can also be activated by clicking or tapping.
*/
static gboolean
-event_after (GtkWidget *text_view,
- GdkEvent *ev)
+event_cb (GtkWidget *text_view,
+ GdkEvent *ev)
{
GtkTextIter start, end, iter;
GtkTextBuffer *buffer;
@@ -145,6 +149,11 @@ event_after (GtkWidget *text_view,
type = gdk_event_get_event_type (ev);
+ gdk_event_get_coords (ev, &ex, &ey);
+ gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
+ GTK_TEXT_WINDOW_WIDGET,
+ ex, ey, &x, &y);
+
if (type == GDK_BUTTON_RELEASE)
{
guint button;
@@ -153,14 +162,17 @@ event_after (GtkWidget *text_view,
if (button != GDK_BUTTON_PRIMARY)
return FALSE;
}
+ else if (type == GDK_MOTION_NOTIFY)
+ {
+ set_cursor_if_appropriate (GTK_TEXT_VIEW (text_view), x, y);
+ return FALSE;
+ }
else if (type == GDK_TOUCH_END)
{
}
else
return FALSE;
- gdk_event_get_coords (ev, &ex, &ey);
-
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
/* we shouldn't follow a link if the user has selected something */
@@ -168,10 +180,6 @@ event_after (GtkWidget *text_view,
if (gtk_text_iter_get_offset (&start) != gtk_text_iter_get_offset (&end))
return FALSE;
- gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
- GTK_TEXT_WINDOW_WIDGET,
- ex, ey, &x, &y);
-
if (gtk_text_view_get_iter_at_location (GTK_TEXT_VIEW (text_view), &iter, x, y))
follow_if_link (text_view, &iter);
@@ -223,25 +231,6 @@ set_cursor_if_appropriate (GtkTextView *text_view,
g_slist_free (tags);
}
-/* Update the cursor image if the pointer moved.
- */
-static gboolean
-motion_notify_event (GtkWidget *text_view,
- GdkEventMotion *event)
-{
- gdouble ex, ey;
- gint x, y;
-
- gdk_event_get_coords ((GdkEvent *)event, &ex, &ey);
- gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
- GTK_TEXT_WINDOW_WIDGET,
- ex, ey, &x, &y);
-
- set_cursor_if_appropriate (GTK_TEXT_VIEW (text_view), x, y);
-
- return FALSE;
-}
-
GtkWidget *
do_hypertext (GtkWidget *do_widget)
{
@@ -269,9 +258,7 @@ do_hypertext (GtkWidget *do_widget)
g_signal_connect (view, "key-press-event",
G_CALLBACK (key_press_event), NULL);
g_signal_connect (view, "event",
- G_CALLBACK (event_after), NULL);
- g_signal_connect (view, "motion-notify-event",
- G_CALLBACK (motion_notify_event), NULL);
+ G_CALLBACK (event_cb), NULL);
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));