Nickolay V. Shmyrev : winex11.drv: Always set window type.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Oct 12 05:46:42 CDT 2006


Module: wine
Branch: master
Commit: 1a1b902e7fe8dd538e40b8532a14c1d22bfcd7af
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1a1b902e7fe8dd538e40b8532a14c1d22bfcd7af

Author: Nickolay V. Shmyrev <nshmyrev at yandex.ru>
Date:   Wed Oct 11 19:32:22 2006 +0400

winex11.drv: Always set window type.

---

 dlls/winex11.drv/window.c      |   17 ++++++++++-------
 dlls/winex11.drv/x11drv.h      |    2 ++
 dlls/winex11.drv/x11drv_main.c |    2 ++
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 04294cf..3992ffb 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -465,6 +465,7 @@ void X11DRV_set_wm_hints( Display *displ
     XClassHint *class_hints;
     XWMHints* wm_hints;
     Atom protocols[3];
+    Atom window_type;
     MwmHints mwm_hints;
     Atom dndVersion = 4;
     int i;
@@ -523,13 +524,15 @@ void X11DRV_set_wm_hints( Display *displ
     XChangeProperty(display, data->whole_window, x11drv_atom(_NET_WM_PID),
                     XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&i, 1);
 
-   /* map WS_EX_TOOLWINDOW to _NET_WM_WINDOW_TYPE_UTILITY */
-   if (ex_style & WS_EX_TOOLWINDOW)
-   {
-      Atom a = x11drv_atom(_NET_WM_WINDOW_TYPE_UTILITY);
-      XChangeProperty(display, data->whole_window, x11drv_atom(_NET_WM_WINDOW_TYPE),
-                      XA_ATOM, 32, PropModeReplace, (unsigned char*)&a, 1);
-   }
+    /* set the WM_WINDOW_TYPE */
+    window_type = x11drv_atom(_NET_WM_WINDOW_TYPE_NORMAL);
+    if (ex_style & WS_EX_TOOLWINDOW) window_type = x11drv_atom(_NET_WM_WINDOW_TYPE_UTILITY);
+    else if (style & WS_THICKFRAME) window_type = x11drv_atom(_NET_WM_WINDOW_TYPE_NORMAL);
+    else if (style & WS_DLGFRAME) window_type = x11drv_atom(_NET_WM_WINDOW_TYPE_DIALOG);
+    else if (ex_style & WS_EX_DLGMODALFRAME) window_type = x11drv_atom(_NET_WM_WINDOW_TYPE_DIALOG);
+
+    XChangeProperty(display, data->whole_window, x11drv_atom(_NET_WM_WINDOW_TYPE),
+		    XA_ATOM, 32, PropModeReplace, (unsigned char*)&window_type, 1);
 
     mwm_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
     mwm_hints.functions = MWM_FUNC_MOVE;
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
index a4eb516..10de07c 100644
--- a/dlls/winex11.drv/x11drv.h
+++ b/dlls/winex11.drv/x11drv.h
@@ -571,6 +571,8 @@ enum x11drv_atoms
     XATOM__NET_WM_STATE,
     XATOM__NET_WM_STATE_FULLSCREEN,
     XATOM__NET_WM_WINDOW_TYPE,
+    XATOM__NET_WM_WINDOW_TYPE_DIALOG,
+    XATOM__NET_WM_WINDOW_TYPE_NORMAL,
     XATOM__NET_WM_WINDOW_TYPE_UTILITY,
     XATOM__XEMBED_INFO,
     XATOM_XdndAware,
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
index 95f9d10..ea50cfb 100644
--- a/dlls/winex11.drv/x11drv_main.c
+++ b/dlls/winex11.drv/x11drv_main.c
@@ -134,6 +134,8 @@ static const char * const atom_names[NB_
     "_NET_WM_STATE",
     "_NET_WM_STATE_FULLSCREEN",
     "_NET_WM_WINDOW_TYPE",
+    "_NET_WM_WINDOW_TYPE_DIALOG",
+    "_NET_WM_WINDOW_TYPE_NORMAL",
     "_NET_WM_WINDOW_TYPE_UTILITY",
     "_XEMBED_INFO",
     "XdndAware",




More information about the wine-cvs mailing list