summaryrefslogtreecommitdiff
path: root/gtk/gtklabel.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtklabel.c')
-rw-r--r--gtk/gtklabel.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index 77aa220adf..abbf6431ba 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -448,9 +448,11 @@ static void gtk_label_motion (GtkEventControllerMotion *controller,
double x,
double y,
gpointer data);
-static void gtk_label_leave (GtkEventControllerMotion *controller,
+static void gtk_label_pointer (GtkEventControllerMotion *controller,
+ GtkCrossingDirection direction,
+ double x,
+ double y,
GdkCrossingMode mode,
- GdkNotifyType detail,
gpointer data);
static gboolean gtk_label_grab_focus (GtkWidget *widget);
@@ -4857,19 +4859,24 @@ gtk_label_motion (GtkEventControllerMotion *controller,
}
static void
-gtk_label_leave (GtkEventControllerMotion *controller,
- GdkCrossingMode mode,
- GdkNotifyType detail,
- gpointer data)
+gtk_label_pointer (GtkEventControllerMotion *controller,
+ GtkCrossingDirection direction,
+ double x,
+ double y,
+ GdkCrossingMode mode,
+ gpointer data)
{
GtkLabel *label = GTK_LABEL (data);
GtkLabelPrivate *priv = gtk_label_get_instance_private (label);
- if (priv->select_info)
+ if (direction == GTK_CROSSING_OUT)
{
- priv->select_info->active_link = NULL;
- gtk_label_update_cursor (label);
- gtk_widget_queue_draw (GTK_WIDGET (label));
+ if (priv->select_info)
+ {
+ priv->select_info->active_link = NULL;
+ gtk_label_update_cursor (label);
+ gtk_widget_queue_draw (GTK_WIDGET (label));
+ }
}
}
@@ -5015,8 +5022,8 @@ gtk_label_ensure_select_info (GtkLabel *label)
priv->select_info->motion_controller = gtk_event_controller_motion_new ();
g_signal_connect (priv->select_info->motion_controller, "motion",
G_CALLBACK (gtk_label_motion), label);
- g_signal_connect (priv->select_info->motion_controller, "leave",
- G_CALLBACK (gtk_label_leave), label);
+ g_signal_connect (priv->select_info->motion_controller, "pointer-change",
+ G_CALLBACK (gtk_label_pointer), label);
gtk_widget_add_controller (GTK_WIDGET (label), priv->select_info->motion_controller);
priv->select_info->provider = g_object_new (GTK_TYPE_LABEL_CONTENT, NULL);