[gtk+/gtk-2-18] Fix _gdk_window_impl_new() for win32



commit 5bd532e3e6ba07233d7cc5e54701b5a4a303a6a8
Author: Hans Breuer <hans breuer org>
Date:   Sun Nov 8 18:23:24 2009 +0100

    Fix _gdk_window_impl_new() for win32
    
    The previous implementation was modifying the passed in window ("private") rather than deriving information from it. Also the type hints are now forwarded like in the X11 implementation instead of ignored.
    
    The effect of the unfinished client-side-window porting was e.g. a crash with Dia's navigation window which happened to create a window with an apparent depth of zero.

 gdk/win32/gdkwindow-win32.c |   14 +++-----------
 1 files changed, 3 insertions(+), 11 deletions(-)
---
diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c
index 8942688..21fc0cd 100644
--- a/gdk/win32/gdkwindow-win32.c
+++ b/gdk/win32/gdkwindow-win32.c
@@ -517,13 +517,9 @@ _gdk_window_impl_new (GdkWindow     *window,
 #endif
   impl->extension_events_selected = FALSE;
 
-  // XXX ?
-  if (attributes->wclass == GDK_INPUT_OUTPUT)
+  if (!private->input_only)
     {
       dwExStyle = 0;
-
-      private->input_only = FALSE;
-      private->depth = visual->depth;
       
       if (attributes_mask & GDK_WA_COLORMAP)
 	{
@@ -543,8 +539,6 @@ _gdk_window_impl_new (GdkWindow     *window,
        * to work well enough for the actual use cases in gtk.
        */
       dwExStyle = WS_EX_TRANSPARENT;
-      private->depth = 0;
-      private->input_only = TRUE;
       draw_impl->colormap = gdk_screen_get_system_colormap (_gdk_screen);
       g_object_ref (draw_impl->colormap);
       GDK_NOTE (MISC, g_print ("... GDK_INPUT_ONLY, system colormap\n"));
@@ -617,8 +611,6 @@ _gdk_window_impl_new (GdkWindow     *window,
   if (!title || !*title)
     title = "";
 
-  private->event_mask = GDK_STRUCTURE_MASK | attributes->event_mask;
-      
   if (attributes_mask & GDK_WA_TYPE_HINT)
     impl->type_hint = attributes->type_hint;
   else
@@ -692,8 +684,8 @@ _gdk_window_impl_new (GdkWindow     *window,
       return;
     }
 
-//  if (!from_set_skip_taskbar_hint && private->window_type == GDK_WINDOW_TEMP)
-//    gdk_window_set_skip_taskbar_hint (window, TRUE);
+  if (attributes_mask & GDK_WA_TYPE_HINT)
+    gdk_window_set_type_hint (window, attributes->type_hint);
 
   gdk_window_set_cursor (window, ((attributes_mask & GDK_WA_CURSOR) ?
 				  (attributes->cursor) :



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]