summaryrefslogtreecommitdiff
path: root/gtk/gtkapplication.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2018-01-06 12:11:40 -0500
committerMatthias Clasen <mclasen@redhat.com>2018-01-16 14:14:10 -0500
commitb12371e1b0d47252795266429a320ea1e7458fb0 (patch)
tree5e1f56621fed67dff4abe3014e5159963834e708 /gtk/gtkapplication.c
parent7277d657d9636c00a7f455b6ed61a92536568594 (diff)
downloadgtk+-b12371e1b0d47252795266429a320ea1e7458fb0.tar.gz
application: Stop using ::focus-in-event
We are really interested in the active window, so use that property directly.
Diffstat (limited to 'gtk/gtkapplication.c')
-rw-r--r--gtk/gtkapplication.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/gtk/gtkapplication.c b/gtk/gtkapplication.c
index 50b67de5cd..28f2296d6c 100644
--- a/gtk/gtkapplication.c
+++ b/gtk/gtkapplication.c
@@ -164,14 +164,17 @@ struct _GtkApplicationPrivate
G_DEFINE_TYPE_WITH_PRIVATE (GtkApplication, gtk_application, G_TYPE_APPLICATION)
-static gboolean
-gtk_application_focus_in_event_cb (GtkWindow *window,
- GdkEventFocus *event,
- GtkApplication *application)
+static void
+gtk_application_window_active_cb (GtkWindow *window,
+ GParamSpec *pspec,
+ GtkApplication *application)
{
GtkApplicationPrivate *priv = application->priv;
GList *link;
+ if (!gtk_window_is_active (window))
+ return;
+
/* Keep the window list sorted by most-recently-focused. */
link = g_list_find (priv->windows, window);
if (link != NULL && link != priv->windows)
@@ -184,8 +187,6 @@ gtk_application_focus_in_event_cb (GtkWindow *window,
gtk_application_impl_active_window_changed (application->priv->impl, window);
g_object_notify_by_pspec (G_OBJECT (application), gtk_application_props[PROP_ACTIVE_WINDOW]);
-
- return GDK_EVENT_PROPAGATE;
}
static void
@@ -399,8 +400,8 @@ gtk_application_window_added (GtkApplication *application,
gtk_window_set_application (window, application);
g_application_hold (G_APPLICATION (application));
- g_signal_connect (window, "focus-in-event",
- G_CALLBACK (gtk_application_focus_in_event_cb),
+ g_signal_connect (window, "notify::is-active",
+ G_CALLBACK (gtk_application_window_active_cb),
application);
gtk_application_impl_window_added (priv->impl, window);
@@ -423,7 +424,7 @@ gtk_application_window_removed (GtkApplication *application,
gtk_application_impl_window_removed (priv->impl, window);
g_signal_handlers_disconnect_by_func (window,
- gtk_application_focus_in_event_cb,
+ gtk_application_window_active_cb,
application);
g_application_release (G_APPLICATION (application));