]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtksocket-x11.c
Display an error when we come to the root.
[~andy/gtk] / gtk / gtksocket-x11.c
index 46d7f5f216a0c70c17c9f6eb05ef3a7bbbd5fb18..9554d67ffcc0b50618f9688aa27354895e4171ed 100644 (file)
 
 #include "x11/gdkx.h"
 
+#ifdef HAVE_XFIXES
+#include <X11/extensions/Xfixes.h>
+#endif
+
 #include "gtkxembed.h"
 #include "gtkalias.h"
 
@@ -97,13 +101,13 @@ _gtk_socket_windowing_size_request (GtkSocket *socket)
     {
       if (hints.flags & PMinSize)
        {
-         socket->request_width = hints.min_width;
-         socket->request_height = hints.min_height;
+         socket->request_width = MAX (hints.min_width, 1);
+         socket->request_height = MAX (hints.min_height, 1);
        }
       else if (hints.flags & PBaseSize)
        {
-         socket->request_width = hints.base_width;
-         socket->request_height = hints.base_height;
+         socket->request_width = MAX (hints.base_width, 1);
+         socket->request_height = MAX (hints.base_height, 1);
        }
     }
   socket->have_size = TRUE;
@@ -263,6 +267,13 @@ _gtk_socket_windowing_embed_get_info (GtkSocket *socket)
 void
 _gtk_socket_windowing_embed_notify (GtkSocket *socket)
 {
+#ifdef HAVE_XFIXES
+  GdkDisplay *display = gtk_widget_get_display (GTK_WIDGET (socket));
+
+  XFixesChangeSaveSet (GDK_DISPLAY_XDISPLAY (display),
+                      GDK_WINDOW_XWINDOW (socket->plug_window),
+                      SetModeInsert, SaveSetRoot, SaveSetUnmap);
+#endif
   _gtk_xembed_send_message (socket->plug_window,
                            XEMBED_EMBEDDED_NOTIFY, 0,
                            GDK_WINDOW_XWINDOW (GTK_WIDGET (socket)->window),