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