Blob Blame History Raw
From b76206bbdeb710853f585942377badff0a4c1df9 Mon Sep 17 00:00:00 2001
From: Matthias Clasen <mclasen@redhat.com>
Date: Thu, 8 Nov 2012 21:43:31 -0500
Subject: [PATCH] Don't steal focus, optionally

It is somewhat rude to steal focus like this, and it actively
interferes with some use cases for launching yelp in the background.
Add a commandline option --dont-steal-focus, to make those
use cases work.
---
 src/yelp-application.c | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/yelp-application.c b/src/yelp-application.c
index 057cafd..2d004c2 100644
--- a/src/yelp-application.c
+++ b/src/yelp-application.c
@@ -43,6 +43,7 @@
 #define DEFAULT_URI "help:gnome-help"
 
 static gboolean editor_mode = FALSE;
+static gboolean dont_steal_focus = FALSE;
 
 enum {
     READ_LATER_CHANGED,
@@ -63,6 +64,7 @@ option_version_cb (const gchar *option_name,
 
 static const GOptionEntry entries[] = {
     {"editor-mode", 0, 0, G_OPTION_ARG_NONE, &editor_mode, N_("Turn on editor mode"), NULL},
+    {"dont-steal-focus", 0, 0, G_OPTION_ARG_NONE, &dont_steal_focus, N_("Don't steal focus"), NULL},
     { "version", 0, G_OPTION_FLAG_NO_ARG | G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_CALLBACK, option_version_cb, NULL, NULL },
     { NULL }
 };
@@ -472,15 +474,17 @@ application_uri_resolved (YelpUri             *uri,
     if (gdk_window)
         gdk_x11_window_move_to_current_desktop (gdk_window);
 
-    /* Ensure we actually present the window when invoked from the command
-     * line. This is somewhat evil, but the minor evil of Yelp stealing
-     * focus (after you requested it) is outweighed for me by the major
-     * evil of no help window appearing when you click Help.
-     */
-    if (data->timestamp == 0)
-        data->timestamp = gdk_x11_get_server_time (gtk_widget_get_window (GTK_WIDGET (window)));
+    if (!dont_steal_focus) {
+        /* Ensure we actually present the window when invoked from the command
+         * line. This is somewhat evil, but the minor evil of Yelp stealing
+         * focus (after you requested it) is outweighed for me by the major
+         * evil of no help window appearing when you click Help.
+         */
+        if (data->timestamp == 0)
+            data->timestamp = gdk_x11_get_server_time (gtk_widget_get_window (GTK_WIDGET (window)));
 
-    gtk_window_present_with_time (GTK_WINDOW (window), data->timestamp);
+        gtk_window_present_with_time (GTK_WINDOW (window), data->timestamp);
+    }
 
     g_object_unref (uri);
     g_free (data);
-- 
1.7.12.1