]> Pileus Git - ~andy/gtk/commitdiff
Set the client ID on all displays. (#85713)
authorOwen Taylor <otaylor@redhat.com>
Mon, 30 Sep 2002 19:38:12 +0000 (19:38 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Mon, 30 Sep 2002 19:38:12 +0000 (19:38 +0000)
Mon Sep 30 15:31:57 2002  Owen Taylor  <otaylor@redhat.com>

        * gdk/gdkdisplay.c gdk/x11/gdkdisplay-x11.c
        gdk/gdkinternals.h: Set the client ID on all
        displays. (#85713)

        * gdk/gdkdisplay.h gkd/gdkinternals.h
         gdk/{linux-fb,win32,x11}/gdkmain-{fb,win32,x11}.c
        Privatize gdk_display_set_sm_client_id().

13 files changed:
ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/gdkdisplay.c
gdk/gdkdisplay.h
gdk/gdkinternals.h
gdk/linux-fb/gdkmain-fb.c
gdk/win32/gdkmain-win32.c
gdk/x11/gdkdisplay-x11.c
gdk/x11/gdkmain-x11.c

index 6187ea54b4a23e5a84d2c8f356aa33d4d5f7ad7e..eeb1765648b27c93549285a8deec126b8bd41b7a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+Mon Sep 30 15:31:57 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkdisplay.c gdk/x11/gdkdisplay-x11.c 
+       gdk/gdkinternals.h: Set the client ID on all
+       displays. (#85713)
+
+       * gdk/gdkdisplay.h gkd/gdkinternals.h
+        gdk/{linux-fb,win32,x11}/gdkmain-{fb,win32,x11}.c
+       Privatize gdk_display_set_sm_client_id().
+
 Mon Sep 30 14:46:49 2002  Owen Taylor  <otaylor@redhat.com>
  
        * gtk/gtkbindings.c (gtk_binding_set_new): Initialize
index 6187ea54b4a23e5a84d2c8f356aa33d4d5f7ad7e..eeb1765648b27c93549285a8deec126b8bd41b7a 100644 (file)
@@ -1,3 +1,13 @@
+Mon Sep 30 15:31:57 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkdisplay.c gdk/x11/gdkdisplay-x11.c 
+       gdk/gdkinternals.h: Set the client ID on all
+       displays. (#85713)
+
+       * gdk/gdkdisplay.h gkd/gdkinternals.h
+        gdk/{linux-fb,win32,x11}/gdkmain-{fb,win32,x11}.c
+       Privatize gdk_display_set_sm_client_id().
+
 Mon Sep 30 14:46:49 2002  Owen Taylor  <otaylor@redhat.com>
  
        * gtk/gtkbindings.c (gtk_binding_set_new): Initialize
index 6187ea54b4a23e5a84d2c8f356aa33d4d5f7ad7e..eeb1765648b27c93549285a8deec126b8bd41b7a 100644 (file)
@@ -1,3 +1,13 @@
+Mon Sep 30 15:31:57 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkdisplay.c gdk/x11/gdkdisplay-x11.c 
+       gdk/gdkinternals.h: Set the client ID on all
+       displays. (#85713)
+
+       * gdk/gdkdisplay.h gkd/gdkinternals.h
+        gdk/{linux-fb,win32,x11}/gdkmain-{fb,win32,x11}.c
+       Privatize gdk_display_set_sm_client_id().
+
 Mon Sep 30 14:46:49 2002  Owen Taylor  <otaylor@redhat.com>
  
        * gtk/gtkbindings.c (gtk_binding_set_new): Initialize
index 6187ea54b4a23e5a84d2c8f356aa33d4d5f7ad7e..eeb1765648b27c93549285a8deec126b8bd41b7a 100644 (file)
@@ -1,3 +1,13 @@
+Mon Sep 30 15:31:57 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkdisplay.c gdk/x11/gdkdisplay-x11.c 
+       gdk/gdkinternals.h: Set the client ID on all
+       displays. (#85713)
+
+       * gdk/gdkdisplay.h gkd/gdkinternals.h
+        gdk/{linux-fb,win32,x11}/gdkmain-{fb,win32,x11}.c
+       Privatize gdk_display_set_sm_client_id().
+
 Mon Sep 30 14:46:49 2002  Owen Taylor  <otaylor@redhat.com>
  
        * gtk/gtkbindings.c (gtk_binding_set_new): Initialize
index 6187ea54b4a23e5a84d2c8f356aa33d4d5f7ad7e..eeb1765648b27c93549285a8deec126b8bd41b7a 100644 (file)
@@ -1,3 +1,13 @@
+Mon Sep 30 15:31:57 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkdisplay.c gdk/x11/gdkdisplay-x11.c 
+       gdk/gdkinternals.h: Set the client ID on all
+       displays. (#85713)
+
+       * gdk/gdkdisplay.h gkd/gdkinternals.h
+        gdk/{linux-fb,win32,x11}/gdkmain-{fb,win32,x11}.c
+       Privatize gdk_display_set_sm_client_id().
+
 Mon Sep 30 14:46:49 2002  Owen Taylor  <otaylor@redhat.com>
  
        * gtk/gtkbindings.c (gtk_binding_set_new): Initialize
index 6187ea54b4a23e5a84d2c8f356aa33d4d5f7ad7e..eeb1765648b27c93549285a8deec126b8bd41b7a 100644 (file)
@@ -1,3 +1,13 @@
+Mon Sep 30 15:31:57 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/gdkdisplay.c gdk/x11/gdkdisplay-x11.c 
+       gdk/gdkinternals.h: Set the client ID on all
+       displays. (#85713)
+
+       * gdk/gdkdisplay.h gkd/gdkinternals.h
+        gdk/{linux-fb,win32,x11}/gdkmain-{fb,win32,x11}.c
+       Privatize gdk_display_set_sm_client_id().
+
 Mon Sep 30 14:46:49 2002  Owen Taylor  <otaylor@redhat.com>
  
        * gtk/gtkbindings.c (gtk_binding_set_new): Initialize
index b783eb2ecca02ceb5999d23f5a31424461defe1e..453188268e585f4a8e350d7bc0f8fd7503e9070f 100644 (file)
@@ -41,6 +41,7 @@ static void gdk_display_finalize   (GObject         *object);
 static guint signals[LAST_SIGNAL] = { 0 };
 
 static GObjectClass *parent_class;
+static char *gdk_sm_client_id;
 
 GType
 gdk_display_get_type (void)
@@ -353,6 +354,28 @@ gdk_display_get_core_pointer (GdkDisplay *display)
 void
 gdk_set_sm_client_id (const gchar* sm_client_id)
 {
-  gdk_display_set_sm_client_id (gdk_display_get_default (), sm_client_id);
+  GSList *displays, *tmp_list;
+  
+  g_free (gdk_sm_client_id);
+  gdk_sm_client_id = g_strdup (sm_client_id);
+
+  displays = gdk_display_manager_list_displays (gdk_display_manager_get ());
+  for (tmp_list = displays; tmp_list; tmp_list = tmp_list->next)
+    _gdk_windowing_display_set_sm_client_id (tmp_list->data, sm_client_id);
+
+  g_slist_free (displays);
 }
 
+/**
+ * _gdk_get_sm_client_id:
+ * 
+ * Gets the client ID set with gdk_set_sm_client_id(), if any.
+ * 
+ * Return value: Session ID, or %NULL if gdk_set_sm_client_id()
+ *               has never been called.
+ **/
+const char *
+_gdk_get_sm_client_id (void)
+{
+  return gdk_sm_client_id;
+}
index 49e02cebd0322f352b09c9c92d2c11322f771845..f555517ece61a8560f48502bd006b5a816b82b64 100644 (file)
@@ -109,8 +109,6 @@ void gdk_display_add_client_message_filter (GdkDisplay   *display,
 
 void gdk_display_set_double_click_time (GdkDisplay  *display,
                                        guint        msec);
-void gdk_display_set_sm_client_id      (GdkDisplay  *display,
-                                       const gchar *sm_client_id);
 
 GdkDisplay *gdk_display_get_default (void);
 
index a8703d3326a55658af743c234168a5e7b91002e1..d322e10348d22d04de67da840172595f1bd5be1d 100644 (file)
@@ -235,6 +235,8 @@ void       _gdk_window_clear_update_area (GdkWindow   *window);
 
 void       _gdk_screen_close             (GdkScreen   *screen);
 
+const char *_gdk_get_sm_client_id (void);
+
 /*****************************************
  * Interfaces provided by windowing code *
  *****************************************/
@@ -306,6 +308,9 @@ void _gdk_windowing_window_destroy (GdkWindow *window,
                                    gboolean   recursing,
                                    gboolean   foreign_destroy);
 
+void _gdk_windowing_display_set_sm_client_id (GdkDisplay  *display,
+                                             const gchar *sm_client_id);
+
 /* Implementation types */
 GType _gdk_window_impl_get_type (void) G_GNUC_CONST;
 GType _gdk_pixmap_impl_get_type (void) G_GNUC_CONST;
index 63ad7dce7dc69b72b1c4914998120d76e1ec1a0a..dd252470bc114d59d1c008effeac073ad4a079a4 100644 (file)
@@ -1227,31 +1227,9 @@ gdk_screen_get_height_mm (GdkScreen *screen)
   return 0.5 + gdk_screen_height () * (25.4 / 72.);
 }
 
-/*
- *--------------------------------------------------------------
- * gdk_display_set_sm_client_id
- *
- *   Set the SM_CLIENT_ID property on the WM_CLIENT_LEADER window
- *   so that the window manager can save our state using the
- *   X11R6 ICCCM session management protocol. A NULL value should 
- *   be set following disconnection from the session manager to
- *   remove the SM_CLIENT_ID property.
- *
- * Arguments:
- * 
- *   "sm_client_id" specifies the client id assigned to us by the
- *   session manager or NULL to remove the property.
- *
- * Results:
- *
- * Side effects:
- *
- *--------------------------------------------------------------
- */
-
 void
-gdk_display_set_sm_client_id (GdkDisplay*  display,
-                             const gchar* sm_client_id)
+_gdk_windowing_display_set_sm_client_id (GdkDisplay*  display,
+                                        const gchar* sm_client_id)
 {
 }
 
index ac0f39bb757316cf8f77cb9ac649a277eeb0e29e..f0feada7079482911126a6c390df5b5c6ae7e71f 100644 (file)
@@ -181,8 +181,8 @@ gdk_screen_get_height_mm (GdkScreen *screen)
 }
 
 void
-gdk_display_set_sm_client_id (GdkDisplay  *display,
-                             const gchar *sm_client_id)
+_gdk_windowing_display_set_sm_client_id (GdkDisplay  *display,
+                                        const gchar *sm_client_id)
 {
   g_warning("gdk_set_sm_client_id %s", sm_client_id ? sm_client_id : "NULL");
 }
index 50e73394779476381ff40e97ca8aa30a8d92e25b..4558e3449af088a9ec6c814d4533525ebf9755e0 100644 (file)
@@ -108,6 +108,7 @@ gdk_display_open (const gchar *display_name)
   GdkDisplayX11 *display_x11;
   gint argc;
   gchar **argv;
+  const char *sm_client_id;
   
   XClassHint *class_hint;
   XKeyboardState keyboard_state;
@@ -160,6 +161,10 @@ gdk_display_open (const gchar *display_name)
                      class_hint);
   XFree (class_hint);
 
+  sm_client_id = _gdk_get_sm_client_id ();
+  if (sm_client_id)
+    _gdk_windowing_display_set_sm_client_id (display, sm_client_id);
+
   pid = getpid ();
   XChangeProperty (display_x11->xdisplay,
                   display_x11->leader_window,
index 2a7e49d25da5c0ade93f47f2bbed29800f0c6754..c34eafaadd5796ec60815d07435b2c6aa2158a4b 100644 (file)
@@ -449,24 +449,9 @@ _gdk_xgrab_check_destroy (GdkWindow *window)
      display_x11->keyboard_xgrab_window = NULL;
 }
 
-/**
- * gdk_display_set_sm_client_id:
- * @display: a #GdkDisplay
- * @sm_client_id: the client id assigned by the session manager when the
- *    connection was opened, or %NULL to remove the property.
- * 
- * Sets the <literal>SM_CLIENT_ID</literal> property on the application's leader window
- * so that the window manager can save the application's state using the X11R6 ICCCM
- * session management protocol.
- *
- * See the X Session Management Library documentation for more information on
- * session management and the Inter-Client Communication Conventions Manual
- * (ICCCM) for information on the <literal>WM_CLIENT_LEADER</literal> property. 
- * (Both documents are part of the X Window System distribution.)
- **/
 void
-gdk_display_set_sm_client_id (GdkDisplay  *display,
-                             const gchar *sm_client_id)
+_gdk_windowing_display_set_sm_client_id (GdkDisplay  *display,
+                                        const gchar *sm_client_id)
 {
   GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display);