summaryrefslogtreecommitdiff
path: root/hw/xwin
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xwin')
-rw-r--r--hw/xwin/man/XWin.man4
-rw-r--r--hw/xwin/winmultiwindowwindow.c6
-rw-r--r--hw/xwin/winmultiwindowwm.c7
-rw-r--r--hw/xwin/winprefs.c4
-rw-r--r--hw/xwin/winprocarg.c11
5 files changed, 22 insertions, 10 deletions
diff --git a/hw/xwin/man/XWin.man b/hw/xwin/man/XWin.man
index b39ac39b1..6b6fbe7e3 100644
--- a/hw/xwin/man/XWin.man
+++ b/hw/xwin/man/XWin.man
@@ -171,11 +171,11 @@ Add the host name to the window title for X applications which are running
on remote hosts, when that information is available and it's useful to do so.
The default is enabled.
.TP 8
-.B \-compositewm
-Experimental.
+.B \-[no]compositewm
Use Composite extension redirection to maintain a bitmap image of each top-level
X window, so window contents which are occluded show correctly in task bar and
task switcher previews.
+The default is enabled.
.SH OPTIONS CONTROLLING WINDOWS INTEGRATION
.TP 8
diff --git a/hw/xwin/winmultiwindowwindow.c b/hw/xwin/winmultiwindowwindow.c
index 7ef792917..7ff598743 100644
--- a/hw/xwin/winmultiwindowwindow.c
+++ b/hw/xwin/winmultiwindowwindow.c
@@ -690,12 +690,6 @@ winCreateWindowsTopLevelWindow(WindowPtr pWin)
/* Adjust the X window to match the window placement we actually got... */
winAdjustXWindow(pWin, hWnd);
- /* Make sure it gets the proper system menu for a WS_POPUP, too */
- GetSystemMenu(hWnd, TRUE);
-
- /* Cause any .XWinrc menus to be added in main WNDPROC */
- PostMessage(hWnd, WM_INIT_SYS_MENU, 0, 0);
-
SetProp(hWnd, WIN_WID_PROP, (HANDLE) (INT_PTR) winGetWindowID(pWin));
/* Flag that this Windows window handles its own activation */
diff --git a/hw/xwin/winmultiwindowwm.c b/hw/xwin/winmultiwindowwm.c
index ea7fc649e..be2caf8d9 100644
--- a/hw/xwin/winmultiwindowwm.c
+++ b/hw/xwin/winmultiwindowwm.c
@@ -991,6 +991,13 @@ winMultiWindowWMProc(void *pArg)
/* Determine the Window style, which determines borders and clipping region... */
UpdateStyle(pWMInfo, pNode->msg.iWindow, &maxmin);
+ /* Make sure it gets the proper system menu for a WS_POPUP, too */
+ GetSystemMenu(pNode->msg.hwndWindow, TRUE);
+
+#define WM_INIT_SYS_MENU (WM_USER + 1001)
+ /* Cause any .XWinrc menus to be added in main WNDPROC */
+ PostMessage(pNode->msg.hwndWindow, WM_INIT_SYS_MENU, 0, 0);
+
/* Display the window without activating it */
{
xcb_get_window_attributes_cookie_t cookie;
diff --git a/hw/xwin/winprefs.c b/hw/xwin/winprefs.c
index c97c88dca..ed1154b90 100644
--- a/hw/xwin/winprefs.c
+++ b/hw/xwin/winprefs.c
@@ -526,8 +526,10 @@ SetupSysMenu(HWND hwnd)
pWin = GetProp(hwnd, WIN_WINDOW_PROP);
sys = GetSystemMenu(hwnd, FALSE);
- if (!sys)
+ if (!sys) {
+ ErrorF("SetupSysMenu: GetSystemMenu() failed for HWND %p\n", hwnd);
return;
+ }
if (pWin) {
/* First see if there's a class match... */
diff --git a/hw/xwin/winprocarg.c b/hw/xwin/winprocarg.c
index 4e8e28361..0f3a89610 100644
--- a/hw/xwin/winprocarg.c
+++ b/hw/xwin/winprocarg.c
@@ -134,7 +134,7 @@ winInitializeScreenDefaults(void)
defaultScreenInfo.fRootless = FALSE;
#ifdef XWIN_MULTIWINDOW
defaultScreenInfo.fMultiWindow = FALSE;
- defaultScreenInfo.fCompositeWM = FALSE;
+ defaultScreenInfo.fCompositeWM = TRUE;
#endif
#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
defaultScreenInfo.fMultiMonitorOverride = FALSE;
@@ -602,6 +602,15 @@ ddxProcessArgument(int argc, char *argv[], int i)
/* Indicate that we have processed this argument */
return 1;
}
+ /*
+ * Look for the '-nocompositewm' argument
+ */
+ if (IS_OPTION("-nocompositewm")) {
+ screenInfoPtr->fCompositeWM = FALSE;
+
+ /* Indicate that we have processed this argument */
+ return 1;
+ }
#endif
/*