shell: Export our main window XID in an environment variable

This allows external tools to know that they are being called from
gnome-control-center and look like attached modal dialogs as per
design.

https://bugzilla.gnome.org/show_bug.cgi?id=691854
This commit is contained in:
Rui Matos 2013-01-20 15:17:20 +01:00
parent 0dec96490c
commit ac359b1d62

View file

@ -28,6 +28,7 @@
#include <gio/gdesktopappinfo.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <gdk/gdkx.h>
#include <string.h>
#include <libgd/gd-styled-text-renderer.h>
@ -1316,6 +1317,27 @@ monitors_changed_cb (GdkScreen *screen,
update_small_screen_settings (self);
}
static void
gdk_window_set_cb (GObject *object,
GParamSpec *pspec,
GnomeControlCenter *self)
{
GdkWindow *window;
gchar *str;
if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ()))
return;
window = gtk_widget_get_window (GTK_WIDGET (self->priv->window));
if (!window)
return;
str = g_strdup_printf ("%u", (guint) GDK_WINDOW_XID (window));
g_setenv ("GNOME_CONTROL_CENTER_XID", str, TRUE);
g_free (str);
}
static void
gnome_control_center_init (GnomeControlCenter *self)
{
@ -1358,6 +1380,7 @@ gnome_control_center_init (GnomeControlCenter *self)
g_signal_connect_swapped (priv->window, "delete-event", G_CALLBACK (g_object_unref), self);
g_signal_connect_after (priv->window, "key_press_event",
G_CALLBACK (window_key_press_event), self);
g_signal_connect (priv->window, "notify::window", G_CALLBACK (gdk_window_set_cb), self);
priv->notebook = W (priv->builder, "notebook");