]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkplug-win32.c
Hide GtkTreeViewColumn buttons when header_window is not visible
[~andy/gtk] / gtk / gtkplug-win32.c
index bcbc5093a5fc1861cfab6ab9b74d1f79e4233aa4..8b80bf30d3301d35e13cd3f6bb0f5d7879c5ce8c 100644 (file)
@@ -29,6 +29,7 @@
 #include "gtkmarshalers.h"
 #include "gtkplug.h"
 #include "gtkplugprivate.h"
+#include "gtkdebug.h"
 
 #include "win32/gdkwin32.h"
 
@@ -44,19 +45,21 @@ WINUSERAPI HWND WINAPI GetAncestor(HWND,UINT);
 GdkNativeWindow
 _gtk_plug_windowing_get_id (GtkPlug *plug)
 {
-  return (GdkNativeWindow) GDK_WINDOW_HWND (GTK_WIDGET (plug)->window);
+  return (GdkNativeWindow) GDK_WINDOW_HWND (gtk_widget_get_window (GTK_WIDGET (plug)));
 }
 
 void
 _gtk_plug_windowing_realize_toplevel (GtkPlug *plug)
 {
-  if (plug->socket_window)
+  GtkPlugPrivate *priv = plug->priv;
+
+  if (priv->socket_window)
     {
-      _gtk_win32_embed_send (plug->socket_window,
+      _gtk_win32_embed_send (priv->socket_window,
                             GTK_WIN32_EMBED_PARENT_NOTIFY,
-                            (int) GDK_WINDOW_HWND (GTK_WIDGET (plug)->window),
+                            (WPARAM) GDK_WINDOW_HWND (gtk_widget_get_window (GTK_WIDGET (plug))),
                             GTK_WIN32_EMBED_PROTOCOL_VERSION);
-      _gtk_win32_embed_send (plug->socket_window,
+      _gtk_win32_embed_send (priv->socket_window,
                             GTK_WIN32_EMBED_EVENT_PLUG_MAPPED, 0, 0);
     }
 }
@@ -64,8 +67,10 @@ _gtk_plug_windowing_realize_toplevel (GtkPlug *plug)
 void
 _gtk_plug_windowing_map_toplevel (GtkPlug *plug)
 {
-  if (plug->socket_window)
-    _gtk_win32_embed_send (plug->socket_window,
+  GtkPlugPrivate *priv = plug->priv;
+
+  if (priv->socket_window)
+    _gtk_win32_embed_send (priv->socket_window,
                           GTK_WIN32_EMBED_EVENT_PLUG_MAPPED,
                           1, 0);
 }
@@ -73,8 +78,10 @@ _gtk_plug_windowing_map_toplevel (GtkPlug *plug)
 void
 _gtk_plug_windowing_unmap_toplevel (GtkPlug *plug)
 {
-  if (plug->socket_window)
-    _gtk_win32_embed_send (plug->socket_window,
+  GtkPlugPrivate *priv = plug->priv;
+
+  if (priv->socket_window)
+    _gtk_win32_embed_send (priv->socket_window,
                           GTK_WIN32_EMBED_EVENT_PLUG_MAPPED,
                           0, 0);
 }
@@ -82,8 +89,10 @@ _gtk_plug_windowing_unmap_toplevel (GtkPlug *plug)
 void
 _gtk_plug_windowing_set_focus (GtkPlug *plug)
 {
-  if (plug->socket_window)
-    _gtk_win32_embed_send (plug->socket_window,
+  GtkPlugPrivate *priv = plug->priv;
+
+  if (priv->socket_window)
+    _gtk_win32_embed_send (priv->socket_window,
                           GTK_WIN32_EMBED_REQUEST_FOCUS,
                           0, 0);
 }
@@ -93,8 +102,10 @@ _gtk_plug_windowing_add_grabbed_key (GtkPlug        *plug,
                                     guint           accelerator_key,
                                     GdkModifierType accelerator_mods)
 {
-  if (plug->socket_window)
-    _gtk_win32_embed_send (plug->socket_window,
+  GtkPlugPrivate *priv = plug->priv;
+
+  if (priv->socket_window)
+    _gtk_win32_embed_send (priv->socket_window,
                           GTK_WIN32_EMBED_GRAB_KEY,
                           accelerator_key, accelerator_mods);
 }
@@ -104,8 +115,10 @@ _gtk_plug_windowing_remove_grabbed_key (GtkPlug        *plug,
                                        guint           accelerator_key,
                                        GdkModifierType accelerator_mods)
 {
-  if (plug->socket_window)
-    _gtk_win32_embed_send (plug->socket_window,
+  GtkPlugPrivate *priv = plug->priv;
+
+  if (priv->socket_window)
+    _gtk_win32_embed_send (priv->socket_window,
                           GTK_WIN32_EMBED_UNGRAB_KEY,
                           accelerator_key, accelerator_mods);
 }
@@ -114,6 +127,7 @@ void
 _gtk_plug_windowing_focus_to_parent (GtkPlug         *plug,
                                     GtkDirectionType direction)
 {
+  GtkPlugPrivate *priv = plug->priv;
   GtkWin32EmbedMessageType message = GTK_WIN32_EMBED_FOCUS_PREV;
   
   switch (direction)
@@ -130,7 +144,7 @@ _gtk_plug_windowing_focus_to_parent (GtkPlug         *plug,
       break;
     }
   
-  _gtk_win32_embed_send_focus_message (plug->socket_window, message, 0);
+  _gtk_win32_embed_send_focus_message (priv->socket_window, message, 0);
 }
 
 GdkFilterReturn
@@ -139,6 +153,7 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent,
                                 gpointer   data)
 {
   GtkPlug *plug = GTK_PLUG (data);
+  GtkPlugPrivate *priv = plug->priv;
   MSG *msg = (MSG *) gdk_xevent;
   GdkFilterReturn return_val = GDK_FILTER_CONTINUE;
 
@@ -151,26 +166,26 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent,
        * crashes in testsocket.
        */
     case WM_WINDOWPOSCHANGED:
-      if (!plug->same_app)
+      if (!priv->same_app)
        {
          HWND parent = GetAncestor (msg->hwnd, GA_PARENT);
-         gboolean was_embedded = plug->socket_window != NULL;
-         GdkScreen *screen = gdk_drawable_get_screen (event->any.window);
+         gboolean was_embedded = priv->socket_window != NULL;
+         GdkScreen *screen = gdk_window_get_screen (event->any.window);
          GdkDisplay *display = gdk_screen_get_display (screen);
 
-         GTK_NOTE (PLUGSOCKET, g_printerr ("WM_WINDOWPOSCHANGED: hwnd=%p GA_PARENT=%p socket_window=%p\n", msg->hwnd, parent, plug->socket_window));
+         GTK_NOTE (PLUGSOCKET, g_printerr ("WM_WINDOWPOSCHANGED: hwnd=%p GA_PARENT=%p socket_window=%p\n", msg->hwnd, parent, priv->socket_window));
          g_object_ref (plug);
          if (was_embedded)
            {
              /* End of embedding protocol for previous socket */
-             if (parent != GDK_WINDOW_HWND (plug->socket_window))
+             if (parent != GDK_WINDOW_HWND (priv->socket_window))
                {
                  GtkWidget *widget = GTK_WIDGET (plug);
 
                  GTK_NOTE (PLUGSOCKET, g_printerr ("was_embedded, current parent != socket_window\n"));
-                 gdk_window_set_user_data (plug->socket_window, NULL);
-                 g_object_unref (plug->socket_window);
-                 plug->socket_window = NULL;
+                 gdk_window_set_user_data (priv->socket_window, NULL);
+                 g_object_unref (priv->socket_window);
+                 priv->socket_window = NULL;
 
                  /* Emit a delete window, as if the user attempted to
                   * close the toplevel. Only do this if we are being
@@ -196,27 +211,27 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent,
              /* Start of embedding protocol */
 
              GTK_NOTE (PLUGSOCKET, g_printerr ("start of embedding\n"));
-             plug->socket_window = gdk_window_lookup_for_display (display, (GdkNativeWindow) parent);
-             if (plug->socket_window)
+             priv->socket_window = gdk_window_lookup_for_display (display, (GdkNativeWindow) parent);
+             if (priv->socket_window)
                {
                  gpointer user_data = NULL;
 
                  GTK_NOTE (PLUGSOCKET, g_printerr ("already had socket_window\n"));
-                 gdk_window_get_user_data (plug->socket_window, &user_data);
+                 gdk_window_get_user_data (priv->socket_window, &user_data);
 
                  if (user_data)
                    {
                      g_warning (G_STRLOC "Plug reparented unexpectedly into window in the same process");
-                     plug->socket_window = NULL;
+                     priv->socket_window = NULL;
                      break;
                    }
 
-                 g_object_ref (plug->socket_window);
+                 g_object_ref (priv->socket_window);
                }
              else
                {
-                 plug->socket_window = gdk_window_foreign_new_for_display (display, (GdkNativeWindow) parent);
-                 if (!plug->socket_window) /* Already gone */
+                 priv->socket_window = gdk_window_foreign_new_for_display (display, (GdkNativeWindow) parent);
+                 if (!priv->socket_window) /* Already gone */
                    break;
                }
 
@@ -231,9 +246,9 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent,
       break;
 
     case WM_SIZE:
-      if (!plug->same_app && plug->socket_window)
+      if (!priv->same_app && priv->socket_window)
        {
-         _gtk_win32_embed_send (plug->socket_window,
+         _gtk_win32_embed_send (priv->socket_window,
                                 GTK_WIN32_EMBED_PLUG_RESIZED,
                                 0, 0);
        }