diff options
author | Ernestas Kulik <ernestask@gnome.org> | 2018-05-21 14:30:57 +0300 |
---|---|---|
committer | Ernestas Kulik <ernestask@gnome.org> | 2018-05-28 13:13:56 +0300 |
commit | c38834973c60f39a00c68a97ce40837005f403a6 (patch) | |
tree | fbf2eb5de8235fe93e9f9b3de73472b4212684f9 | |
parent | f692a93ddf4f0514a255d787b8ade43a0092c422 (diff) | |
download | nautilus-c38834973c60f39a00c68a97ce40837005f403a6.tar.gz |
floating-bar: Stop handling ::enter-notify-event
And replace it with a handler for ::event.
-rw-r--r-- | src/nautilus-files-view.c | 2 | ||||
-rw-r--r-- | src/nautilus-floating-bar.c | 26 |
2 files changed, 16 insertions, 12 deletions
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c index 18a176dac..ea99020ff 100644 --- a/src/nautilus-files-view.c +++ b/src/nautilus-files-view.c @@ -9522,7 +9522,7 @@ nautilus_files_view_init (NautilusFilesView *view) gtk_container_add (GTK_CONTAINER (view), priv->overlay); gtk_widget_show (priv->overlay); - /* NautilusFloatingBar listen to its parent's 'enter-notify-event' signal + /* NautilusFloatingBar listen to its parent's 'event' signal * and GtkOverlay doesn't have it enabled by default, so we have to add them * here. */ diff --git a/src/nautilus-floating-bar.c b/src/nautilus-floating-bar.c index 0d8101282..30fbf5779 100644 --- a/src/nautilus-floating-bar.c +++ b/src/nautilus-floating-bar.c @@ -227,27 +227,31 @@ check_pointer_timeout (gpointer user_data) } static gboolean -overlay_enter_notify_cb (GtkWidget *parent, - GdkEventCrossing *event, - gpointer user_data) +overlay_event_cb (GtkWidget *parent, + GdkEvent *event, + gpointer user_data) { + NautilusFloatingBar *self = NAUTILUS_FLOATING_BAR (user_data); GtkWidget *widget = user_data; CheckPointerData *data; gint y_pos; - NautilusFloatingBar *self = NAUTILUS_FLOATING_BAR (widget); + if (gdk_event_get_event_type (event) != GDK_ENTER_NOTIFY) + { + return GDK_EVENT_PROPAGATE; + } if (self->hover_timeout_id != 0) { g_source_remove (self->hover_timeout_id); } - if (event->window != gtk_widget_get_window (widget)) + if (gdk_event_get_window (event) != gtk_widget_get_window (widget)) { return GDK_EVENT_PROPAGATE; } - if (NAUTILUS_FLOATING_BAR (widget)->is_interactive) + if (self->is_interactive) { return GDK_EVENT_PROPAGATE; } @@ -257,7 +261,7 @@ overlay_enter_notify_cb (GtkWidget *parent, data = g_slice_new (CheckPointerData); data->overlay = parent; data->floating_bar = widget; - data->device = gdk_event_get_device ((GdkEvent *) event); + data->device = gdk_event_get_device (event); data->y_down_limit = y_pos; data->y_upper_limit = y_pos + gtk_widget_get_allocated_height (widget); @@ -265,7 +269,7 @@ overlay_enter_notify_cb (GtkWidget *parent, check_pointer_timeout, data, check_pointer_data_free); - g_source_set_name_by_id (self->hover_timeout_id, "[nautilus-floating-bar] overlay_enter_notify_cb"); + g_source_set_name_by_id (self->hover_timeout_id, "[nautilus-floating-bar] overlay_event_cb"); return GDK_EVENT_STOP; } @@ -281,13 +285,13 @@ nautilus_floating_bar_parent_set (GtkWidget *widget, if (old_parent != NULL) { g_signal_handlers_disconnect_by_func (old_parent, - overlay_enter_notify_cb, widget); + overlay_event_cb, widget); } if (parent != NULL) { - g_signal_connect (parent, "enter-notify-event", - G_CALLBACK (overlay_enter_notify_cb), widget); + g_signal_connect (parent, "event", + G_CALLBACK (overlay_event_cb), widget); } } |