]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtksocket-x11.c
Remove GtkObject completely
[~andy/gtk] / gtk / gtksocket-x11.c
index c3f3b5b160c7378739cc9ed0a2085b4a08b806a1..a1a32e229a3aa519a64f1bebc8359abbf05de16b 100644 (file)
 #include "gtksocket.h"
 #include "gtksocketprivate.h"
 #include "gtkdnd.h"
+#include "gtkdebug.h"
 
 #include "x11/gdkx.h"
-#include <X11/Xatom.h>
 
 #ifdef HAVE_XFIXES
 #include <X11/extensions/Xfixes.h>
 #endif
 
 #include "gtkxembed.h"
-#include "gtkalias.h"
 
 static gboolean xembed_get_info     (GdkWindow     *gdk_window,
                                     unsigned long *version,
@@ -58,15 +57,17 @@ static gboolean xembed_get_info     (GdkWindow     *gdk_window,
 GdkNativeWindow
 _gtk_socket_windowing_get_id (GtkSocket *socket)
 {
-  return GDK_WINDOW_XWINDOW (GTK_WIDGET (socket)->window);
+  return GDK_WINDOW_XWINDOW (gtk_widget_get_window (GTK_WIDGET (socket)));
 }
 
 void
 _gtk_socket_windowing_realize_window (GtkSocket *socket)
 {
-  GdkWindow *window = GTK_WIDGET (socket)->window;
+  GdkWindow *window;
   XWindowAttributes xattrs;
 
+  window = gtk_widget_get_window (GTK_WIDGET (socket));
+
   XGetWindowAttributes (GDK_WINDOW_XDISPLAY (window),
                        GDK_WINDOW_XWINDOW (window),
                        &xattrs);
@@ -120,64 +121,7 @@ _gtk_socket_windowing_size_request (GtkSocket *socket)
     }
   socket->have_size = TRUE;
   
-  gdk_error_trap_pop ();
-}
-
-void
-_gtk_socket_windowing_get_natural_size (GtkSocket *socket)
-{
-  GtkSocketPrivate *priv;
-  GdkDisplay *display;
-
-  Atom property, type;
-  int format, status;
-
-  unsigned long nitems, bytes_after;
-  unsigned char *data;
-  gint32 *data_long;
-
-  priv = _gtk_socket_get_private (socket);
-
-  priv->natural_width = 1;
-  priv->natural_height = 1;
-
-  if (gtk_widget_get_mapped (GTK_WIDGET (socket)))
-    {
-      display = gdk_drawable_get_display (socket->plug_window);
-      property = gdk_x11_get_xatom_by_name_for_display (display, "_GTK_NATURAL_SIZE");
-
-      gdk_error_trap_push ();
-      status = XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display),
-                                   GDK_WINDOW_XWINDOW (socket->plug_window),
-                                   property, 0, 2, False, XA_CARDINAL,
-                                   &type, &format, &nitems, &bytes_after,
-                                   &data);
-      gdk_error_trap_pop ();
-
-      priv->have_natural_size = TRUE;
-
-      if (Success != status || !type)
-        return;
-
-      if (type != XA_CARDINAL)
-        {
-          g_warning ("_GTK_NATURAL_SIZE property has wrong type: %d\n", (int)type);
-          return;
-        }
-
-      if (nitems < 2)
-        {
-          g_warning ("_GTK_NATURAL_SIZE too short\n");
-          XFree (data);
-          return;
-        }
-
-      data_long = (gint32*) data;
-      priv->natural_width = MAX (1, data_long[0]);
-      priv->natural_height = MAX (1, data_long[1]);
-
-      XFree (data);
-    }
+  gdk_error_trap_pop_ignored ();
 }
 
 void
@@ -186,7 +130,7 @@ _gtk_socket_windowing_send_key_event (GtkSocket *socket,
                                      gboolean   mask_key_presses)
 {
   XKeyEvent xkey;
-  GdkScreen *screen = gdk_drawable_get_screen (socket->plug_window);
+  GdkScreen *screen = gdk_window_get_screen (socket->plug_window);
 
   memset (&xkey, 0, sizeof (xkey));
   xkey.type = (gdk_event->type == GDK_KEY_PRESS) ? KeyPress : KeyRelease;
@@ -208,8 +152,7 @@ _gtk_socket_windowing_send_key_event (GtkSocket *socket,
              False,
              (mask_key_presses ? KeyPressMask : NoEventMask),
              (XEvent *)&xkey);
-  gdk_display_sync (gdk_screen_get_display (screen));
-  gdk_error_trap_pop ();
+  gdk_error_trap_pop_ignored ();
 }
 
 void
@@ -268,6 +211,7 @@ _gtk_socket_windowing_focus (GtkSocket       *socket,
 void
 _gtk_socket_windowing_send_configure_event (GtkSocket *socket)
 {
+  GtkAllocation allocation;
   XConfigureEvent xconfigure;
   gint x, y;
 
@@ -285,12 +229,13 @@ _gtk_socket_windowing_send_configure_event (GtkSocket *socket)
    */
   gdk_error_trap_push ();
   gdk_window_get_origin (socket->plug_window, &x, &y);
-  gdk_error_trap_pop ();
-                        
+  gdk_error_trap_pop_ignored ();
+
+  gtk_widget_get_allocation (GTK_WIDGET(socket), &allocation);
   xconfigure.x = x;
   xconfigure.y = y;
-  xconfigure.width = GTK_WIDGET(socket)->allocation.width;
-  xconfigure.height = GTK_WIDGET(socket)->allocation.height;
+  xconfigure.width = allocation.width;
+  xconfigure.height = allocation.height;
 
   xconfigure.border_width = 0;
   xconfigure.above = None;
@@ -300,8 +245,7 @@ _gtk_socket_windowing_send_configure_event (GtkSocket *socket)
   XSendEvent (GDK_WINDOW_XDISPLAY (socket->plug_window),
              GDK_WINDOW_XWINDOW (socket->plug_window),
              False, NoEventMask, (XEvent *)&xconfigure);
-  gdk_display_sync (gtk_widget_get_display (GTK_WIDGET (socket)));
-  gdk_error_trap_pop ();
+  gdk_error_trap_pop_ignored ();
 }
 
 void
@@ -343,7 +287,7 @@ _gtk_socket_windowing_embed_notify (GtkSocket *socket)
 #endif
   _gtk_xembed_send_message (socket->plug_window,
                            XEMBED_EMBEDDED_NOTIFY, 0,
-                           GDK_WINDOW_XWINDOW (GTK_WIDGET (socket)->window),
+                           GDK_WINDOW_XWINDOW (gtk_widget_get_window (GTK_WIDGET (socket))),
                            socket->xembed_version);
 }
 
@@ -352,7 +296,7 @@ xembed_get_info (GdkWindow     *window,
                 unsigned long *version,
                 unsigned long *flags)
 {
-  GdkDisplay *display = gdk_drawable_get_display (window);
+  GdkDisplay *display = gdk_window_get_display (window);
   Atom xembed_info_atom = gdk_x11_get_xatom_by_name_for_display (display, "_XEMBED_INFO");
   Atom type;
   int format;
@@ -361,14 +305,14 @@ xembed_get_info (GdkWindow     *window,
   unsigned long *data_long;
   int status;
   
-  gdk_error_trap_push();
+  gdk_error_trap_push ();
   status = XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display),
                               GDK_WINDOW_XWINDOW (window),
                               xembed_info_atom,
                               0, 2, False,
                               xembed_info_atom, &type, &format,
                               &nitems, &bytes_after, &data);
-  gdk_error_trap_pop();
+  gdk_error_trap_pop_ignored ();
 
   if (status != Success)
     return FALSE;              /* Window vanished? */
@@ -630,8 +574,7 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent,
                                         socket->plug_window,
                                         protocol, TRUE);
 
-             gdk_display_sync (display);
-             gdk_error_trap_pop ();
+             gdk_error_trap_pop_ignored ();
              return_val = GDK_FILTER_REMOVE;
            }
          else if (xevent->xproperty.atom == gdk_x11_get_xatom_by_name_for_display (display, "_XEMBED_INFO"))
@@ -651,8 +594,7 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent,
                        {
                          gdk_error_trap_push ();
                          gdk_window_show (socket->plug_window);
-                         gdk_flush ();
-                         gdk_error_trap_pop ();
+                         gdk_error_trap_pop_ignored ();
                          
                          _gtk_socket_unmap_notify (socket);
                        }
@@ -660,18 +602,18 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent,
                }
              return_val = GDK_FILTER_REMOVE;
            }
-          else if (xevent->xproperty.atom == gdk_x11_get_xatom_by_name_for_display (display, "_GTK_NATURAL_SIZE"))
-            {
-              _gtk_socket_windowing_get_natural_size (socket);
-            }
        }
       break;
     case ReparentNotify:
       {
+        GdkWindow *window;
        XReparentEvent *xre = &xevent->xreparent;
 
+        window = gtk_widget_get_window (widget);
+
        GTK_NOTE (PLUGSOCKET, g_message ("GtkSocket - ReparentNotify received"));
-       if (!socket->plug_window && xre->parent == GDK_WINDOW_XWINDOW (widget->window))
+       if (!socket->plug_window &&
+            xre->parent == GDK_WINDOW_XWINDOW (window))
          {
            _gtk_socket_add_window (socket, xre->window, FALSE);
            
@@ -684,7 +626,9 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent,
          }
         else
           {
-            if (socket->plug_window && xre->window == GDK_WINDOW_XWINDOW (socket->plug_window) && xre->parent != GDK_WINDOW_XWINDOW (widget->window))
+            if (socket->plug_window &&
+                xre->window == GDK_WINDOW_XWINDOW (socket->plug_window) &&
+                xre->parent != GDK_WINDOW_XWINDOW (window))
               {
                 gboolean result;