diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2016-10-13 14:20:14 +0100 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2016-11-17 13:15:44 +0000 |
commit | 3ad6ecc736f18fd0d605ec377d0676e4153531b1 (patch) | |
tree | 59ce7435fa45c40d956505183d9a1d2c384feebe | |
parent | b81e7428f00d62a9f4340c181fe5e0313570b787 (diff) |
hw/xwin: Remove mwextwm
This has always been described as 'experimental'
This is pointless on x86_64 as xwinwm isn't available there
We don't think this is useful to anyone
We don't test it
Remove --enable-windowswm configure option
Remove multiwindowextwm stuff from Makefiles
Remove -mwextwm option
Remove -mwextwm from man-page and help
Un-ifdef XWIN_MULTIWINDOWEXTWM
-rw-r--r-- | configure.ac | 12 | ||||
-rw-r--r-- | hw/xwin/InitOutput.c | 5 | ||||
-rw-r--r-- | hw/xwin/Makefile.am | 14 | ||||
-rw-r--r-- | hw/xwin/glx/Makefile.am | 6 | ||||
-rw-r--r-- | hw/xwin/glx/winpriv.c | 23 | ||||
-rw-r--r-- | hw/xwin/man/XWin.man | 5 | ||||
-rw-r--r-- | hw/xwin/win.h | 134 | ||||
-rw-r--r-- | hw/xwin/wincreatewnd.c | 20 | ||||
-rw-r--r-- | hw/xwin/winengine.c | 3 | ||||
-rw-r--r-- | hw/xwin/winglobals.h | 4 | ||||
-rw-r--r-- | hw/xwin/winprocarg.c | 40 | ||||
-rw-r--r-- | hw/xwin/winrandr.c | 3 | ||||
-rw-r--r-- | hw/xwin/winscrinit.c | 54 | ||||
-rw-r--r-- | hw/xwin/wintrayicon.c | 7 | ||||
-rw-r--r-- | hw/xwin/winvalargs.c | 31 | ||||
-rw-r--r-- | hw/xwin/winwin32rootless.c | 965 | ||||
-rw-r--r-- | hw/xwin/winwin32rootlesswindow.c | 420 | ||||
-rw-r--r-- | hw/xwin/winwin32rootlesswndproc.c | 1081 | ||||
-rw-r--r-- | hw/xwin/winwindowswm.c | 596 | ||||
-rw-r--r-- | hw/xwin/winwndproc.c | 71 | ||||
-rw-r--r-- | test/Makefile.am | 5 |
21 files changed, 30 insertions, 3469 deletions
diff --git a/configure.ac b/configure.ac index 3f5ca5397..0e30f406f 100644 --- a/configure.ac +++ b/configure.ac @@ -642,7 +642,6 @@ AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build AC_ARG_ENABLE(vgahw, AS_HELP_STRING([--enable-vgahw], [Build Xorg with vga access (default: enabled)]), [VGAHW=$enableval], [VGAHW=yes]) AC_ARG_ENABLE(vbe, AS_HELP_STRING([--enable-vbe], [Build Xorg with VBE module (default: enabled)]), [VBE=$enableval], [VBE=yes]) AC_ARG_ENABLE(int10-module, AS_HELP_STRING([--enable-int10-module], [Build Xorg with int10 module (default: enabled)]), [INT10MODULE=$enableval], [INT10MODULE=yes]) -AC_ARG_ENABLE(windowswm, AS_HELP_STRING([--enable-windowswm], [Build XWin with WindowsWM extension (default: no)]), [WINDOWSWM=$enableval], [WINDOWSWM=no]) AC_ARG_ENABLE(windowsdri, AS_HELP_STRING([--enable-windowsdri], [Build XWin with WindowsDRI extension (default: auto)]), [WINDOWSDRI=$enableval], [WINDOWSDRI=auto]) AC_ARG_ENABLE(libdrm, AS_HELP_STRING([--enable-libdrm], [Build Xorg with libdrm support (default: enabled)]), [DRM=$enableval],[DRM=yes]) AC_ARG_ENABLE(clientids, AS_HELP_STRING([--disable-clientids], [Build Xorg with client ID tracking (default: enabled)]), [CLIENTIDS=$enableval], [CLIENTIDS=yes]) @@ -813,7 +812,6 @@ DGAPROTO="xf86dgaproto >= 2.0.99.1" GLPROTO="glproto >= 1.4.17" DMXPROTO="dmxproto >= 2.2.99.1" VIDMODEPROTO="xf86vidmodeproto >= 2.2.99.1" -WINDOWSWMPROTO="windowswmproto" APPLEWMPROTO="applewmproto >= 1.4" LIBXSHMFENCE="xshmfence >= 1.1" @@ -2198,15 +2196,6 @@ if test "x$XWIN" = xyes; then PKG_CHECK_MODULES([XWINMODULES],[x11 xau xdmcp xfixes x11-xcb xcb-aux xcb-composite xcb-image xcb-ewmh xcb-icccm]) - if test "x$WINDOWSWM" = xauto; then - PKG_CHECK_EXISTS($WINDOWSWMPROTO, [WINDOWSWM=yes], [WINDOWSWM=no]) - fi - if test "x$WINDOWSWM" = xyes ; then - PKG_CHECK_MODULES(WINDOWSWM, $WINDOWSWMPROTO) - XWINMODULES_CFLAGS="$XWINMODULES_CFLAGS $WINDOWSWM_CFLAGS" - AC_DEFINE(ROOTLESS,1,[Build Rootless code]) - fi - if test "x$WINDOWSDRI" = xauto; then PKG_CHECK_EXISTS([windowsdriproto], [WINDOWSDRI=yes], [WINDOWSDRI=no]) fi @@ -2264,7 +2253,6 @@ dnl XWin requires OpenGL spec files in order to generate wrapper code for native fi AM_CONDITIONAL(XWIN, [test "x$XWIN" = xyes]) AM_CONDITIONAL(XWIN_MULTIWINDOW, [test "x$XWIN" = xyes]) -AM_CONDITIONAL(XWIN_MULTIWINDOWEXTWM, [test "x$XWIN" = xyes && test "x$WINDOWSWM" = xyes]) AM_CONDITIONAL(XWIN_CLIPBOARD, [test "x$XWIN" = xyes]) AM_CONDITIONAL(XWIN_GLX_WINDOWS, [test "x$XWIN" = xyes && test "x$GLX" = xyes]) AM_CONDITIONAL(XWIN_WINDOWS_DRI, [test "x$XWIN" = xyes && test "x$WINDOWSDRI" = xyes]) diff --git a/hw/xwin/InitOutput.c b/hw/xwin/InitOutput.c index 63dcef21b..17709e79c 100644 --- a/hw/xwin/InitOutput.c +++ b/hw/xwin/InitOutput.c @@ -820,11 +820,6 @@ winUseMsg(void) ErrorF("-multiwindow\n" "\tRun the server in multi-window mode.\n"); #endif -#ifdef XWIN_MULTIWINDOWEXTWM - ErrorF("-mwextwm\n" - "\tRun the server in multi-window external window manager mode.\n"); -#endif - ErrorF("-nodecoration\n" "\tDo not draw a window border, title bar, etc. Windowed\n" "\tmode only.\n"); diff --git a/hw/xwin/Makefile.am b/hw/xwin/Makefile.am index b4b05fad8..d6be668c1 100644 --- a/hw/xwin/Makefile.am +++ b/hw/xwin/Makefile.am @@ -36,16 +36,6 @@ MULTIWINDOW_SYS_LIBS = -lshlwapi -lole32 MULTIWINDOW_LIBS = $(top_builddir)/hw/xwin/wmutil/libXWinWMUtil.la endif -if XWIN_MULTIWINDOWEXTWM -SRCS_MULTIWINDOWEXTWM = \ - winwin32rootless.c \ - winwin32rootlesswindow.c \ - winwin32rootlesswndproc.c \ - winwindowswm.c -DEFS_MULTIWINDOWEXTWM = -DXWIN_MULTIWINDOWEXTWM -MULTIWINDOWEXTWM_LIBS = $(top_builddir)/miext/rootless/librootless.la -endif - if XWIN_RANDR SRCS_RANDR = \ winrandr.c @@ -114,7 +104,6 @@ SRCS = InitInput.c \ $(top_srcdir)/mi/miinitext.c \ $(SRCS_CLIPBOARD) \ $(SRCS_MULTIWINDOW) \ - $(SRCS_MULTIWINDOWEXTWM) \ $(SRCS_NATIVEGDI) \ $(SRCS_PRIMARYFB) \ $(SRCS_RANDR) \ @@ -123,7 +112,6 @@ SRCS = InitInput.c \ DEFS = $(DEFS_CLIPBOARD) \ $(DEFS_GLX_WINDOWS) \ $(DEFS_MULTIWINDOW) \ - $(DEFS_MULTIWINDOWEXTWM) \ $(DEFS_NATIVEGDI) \ $(DEFS_PRIMARYFB) \ $(DEFS_RANDR) \ @@ -142,7 +130,6 @@ XWIN_LIBS += \ XWin_DEPENDENCIES = \ $(MULTIWINDOW_LIBS) \ - $(MULTIWINDOWEXTWM_LIBS) \ $(XWIN_GLX_LIBS) \ $(XWIN_LIBS) \ $(CLIPBOARD_LIBS) \ @@ -151,7 +138,6 @@ XWin_DEPENDENCIES = \ XWin_LDADD = \ $(MULTIWINDOW_LIBS) \ - $(MULTIWINDOWEXTWM_LIBS) \ $(XWIN_GLX_LIBS) \ $(XWIN_LIBS) \ $(CLIPBOARD_LIBS) \ diff --git a/hw/xwin/glx/Makefile.am b/hw/xwin/glx/Makefile.am index 599ec37cc..ffbeb2ab9 100644 --- a/hw/xwin/glx/Makefile.am +++ b/hw/xwin/glx/Makefile.am @@ -24,15 +24,11 @@ if XWIN_MULTIWINDOW DEFS_MULTIWINDOW = -DXWIN_MULTIWINDOW endif -if XWIN_MULTIWINDOWEXTWM -DEFS_MULTIWINDOWEXTWM = -DXWIN_MULTIWINDOWEXTWM -endif - if XWIN_GLX_WINDOWS DEFS_GLX_WINDOWS = -DXWIN_GLX_WINDOWS endif -DEFS = $(DEFS_MULTIWINDOW) $(DEFS_MULTIWINDOWEXTWM) $(DEFS_GLX_WINDOWS) +DEFS = $(DEFS_MULTIWINDOW) $(DEFS_GLX_WINDOWS) AM_CPPFLAGS = -I$(top_srcdir)/miext/rootless diff --git a/hw/xwin/glx/winpriv.c b/hw/xwin/glx/winpriv.c index b34ed249e..024e25310 100644 --- a/hw/xwin/glx/winpriv.c +++ b/hw/xwin/glx/winpriv.c @@ -100,24 +100,6 @@ winGetWindowInfo(WindowPtr pWin) return hwnd; } #endif -#ifdef XWIN_MULTIWINDOWEXTWM - /* check for multiwindow external wm mode */ - if (pScreenInfo->fMWExtWM) { - win32RootlessWindowPtr pRLWinPriv - = (win32RootlessWindowPtr) RootlessFrameForWindow(pWin, FALSE); - - if (pRLWinPriv == NULL) { - ErrorF("winGetWindowInfo: window has no privates\n"); - return hwnd; - } - - if (pRLWinPriv->hWnd != NULL) { - /* copy window handle */ - hwnd = pRLWinPriv->hWnd; - } - return hwnd; - } -#endif } else { ScreenPtr pScreen = g_ScreenInfo[0].pScreen; @@ -147,11 +129,6 @@ winCheckScreenAiglxIsSupported(ScreenPtr pScreen) return TRUE; #endif -#ifdef XWIN_MULTIWINDOWEXTWM - if (pScreenInfo->fMWExtWM) - return TRUE; -#endif - return FALSE; } diff --git a/hw/xwin/man/XWin.man b/hw/xwin/man/XWin.man index 115adb9fb..631c5fe07 100644 --- a/hw/xwin/man/XWin.man +++ b/hw/xwin/man/XWin.man @@ -52,11 +52,6 @@ Also start the integrated \fIWindows\fP-based window manager. Run the server in rootless mode. The X server works on a window covering the whole screen but the root window is hidden from view. -.TP 8 -.B \-mwextwm -Experimental. -The mode combines \fB\-rootless\fP mode drawing with native \fIWindows\fP -window frames managed by the experimental external window manager \fIxwinwm\fP. .PP \fBNOTE:\fP \fI-multiwindow\fP mode uses its own internal window manager. All other modes require an external window manager in order to move, resize, and perform other diff --git a/hw/xwin/win.h b/hw/xwin/win.h index 8a47a8aeb..74bf0a02e 100644 --- a/hw/xwin/win.h +++ b/hw/xwin/win.h @@ -127,7 +127,7 @@ #include <stdio.h> #include <errno.h> -#if defined(XWIN_MULTIWINDOWEXTWM) || defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW) +#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW) #define HANDLE void * #include <pthread.h> #undef HANDLE @@ -393,15 +393,10 @@ typedef struct { #endif Bool fFullScreen; Bool fDecoration; -#ifdef XWIN_MULTIWINDOWEXTWM - Bool fMWExtWM; -#endif Bool fRootless; #ifdef XWIN_MULTIWINDOW Bool fMultiWindow; Bool fCompositeWM; -#endif -#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM) Bool fMultiMonitorOverride; #endif Bool fMultipleMonitors; @@ -476,21 +471,11 @@ typedef struct _winPrivScreenRec { LPDIRECTDRAWCLIPPER pddcPrimary; BOOL fRetryCreateSurface; -#ifdef XWIN_MULTIWINDOWEXTWM - /* Privates used by multi-window external window manager */ - RootlessFrameID widTop; - Bool fRestacking; -#endif - #ifdef XWIN_MULTIWINDOW /* Privates used by multi-window */ pthread_t ptWMProc; pthread_t ptXMsgProc; void *pWMInfo; -#endif - -#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM) - /* Privates used by both multi-window and rootless */ Bool fRootWindowShown; #endif @@ -546,24 +531,6 @@ typedef struct _winPrivScreenRec { Bool fNativeGlActive; } winPrivScreenRec; -#ifdef XWIN_MULTIWINDOWEXTWM -typedef struct { - RootlessWindowPtr pFrame; - HWND hWnd; - int dwWidthBytes; - BITMAPINFOHEADER *pbmihShadow; - HBITMAP hbmpShadow; - HDC hdcShadow; - HDC hdcScreen; - BOOL fResized; - BOOL fRestackingNow; - BOOL fClose; - BOOL fMovingOrSizing; - BOOL fDestroyed; //for debug - char *pfb; -} win32RootlessWindowRec, *win32RootlessWindowPtr; -#endif - typedef struct { void *value; XID id; @@ -1019,105 +986,6 @@ winHandleIconMessage(HWND hwnd, UINT message, LRESULT CALLBACK winWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); -#ifdef XWIN_MULTIWINDOWEXTWM -/* - * winwin32rootless.c - */ - -Bool - -winMWExtWMCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen, - int newX, int newY, RegionPtr pShape); - -void - winMWExtWMDestroyFrame(RootlessFrameID wid); - -void - -winMWExtWMMoveFrame(RootlessFrameID wid, ScreenPtr pScreen, int newX, int newY); - -void - -winMWExtWMResizeFrame(RootlessFrameID wid, ScreenPtr pScreen, - int newX, int newY, unsigned int newW, unsigned int newH, - unsigned int gravity); - -void - winMWExtWMRestackFrame(RootlessFrameID wid, RootlessFrameID nextWid); - -void - winMWExtWMReshapeFrame(RootlessFrameID wid, RegionPtr pShape); - -void - winMWExtWMUnmapFrame(RootlessFrameID wid); - -void - -winMWExtWMStartDrawing(RootlessFrameID wid, char **pixelData, int *bytesPerRow); - -void - winMWExtWMStopDrawing(RootlessFrameID wid, Bool flush); - -void - winMWExtWMUpdateRegion(RootlessFrameID wid, RegionPtr pDamage); - -void - -winMWExtWMDamageRects(RootlessFrameID wid, int count, const BoxRec * rects, - int shift_x, int shift_y); - -void - winMWExtWMRootlessSwitchWindow(RootlessWindowPtr pFrame, WindowPtr oldWin); - -void - -winMWExtWMCopyBytes(unsigned int width, unsigned int height, - const void *src, unsigned int srcRowBytes, - void *dst, unsigned int dstRowBytes); - -void - -winMWExtWMCopyWindow(RootlessFrameID wid, int dstNrects, - const BoxRec * dstRects, int dx, int dy); -#endif - -#ifdef XWIN_MULTIWINDOWEXTWM -/* - * winwin32rootlesswindow.c - */ - -void - winMWExtWMReorderWindows(ScreenPtr pScreen); - -void - winMWExtWMMoveXWindow(WindowPtr pWin, int x, int y); - -void - winMWExtWMResizeXWindow(WindowPtr pWin, int w, int h); - -void - winMWExtWMMoveResizeXWindow(WindowPtr pWin, int x, int y, int w, int h); - -void - -winMWExtWMUpdateWindowDecoration(win32RootlessWindowPtr pRLWinPriv, - winScreenInfoPtr pScreenInfo); - -wBOOL CALLBACK winMWExtWMDecorateWindow(HWND hwnd, LPARAM lParam); - -void - winMWExtWMRestackWindows(ScreenPtr pScreen); -#endif - -#ifdef XWIN_MULTIWINDOWEXTWM -/* - * winwin32rootlesswndproc.c - */ - -LRESULT CALLBACK -winMWExtWMWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); -#endif - /* * winwindowswm.c */ diff --git a/hw/xwin/wincreatewnd.c b/hw/xwin/wincreatewnd.c index ac663b9f4..c0421010d 100644 --- a/hw/xwin/wincreatewnd.c +++ b/hw/xwin/wincreatewnd.c @@ -146,9 +146,6 @@ winCreateBoundingWindowWindowed(ScreenPtr pScreen) /* Decorated or undecorated window */ if (pScreenInfo->fDecoration -#ifdef XWIN_MULTIWINDOWEXTWM - && !pScreenInfo->fMWExtWM -#endif && !pScreenInfo->fRootless #ifdef XWIN_MULTIWINDOW && !pScreenInfo->fMultiWindow @@ -204,9 +201,6 @@ winCreateBoundingWindowWindowed(ScreenPtr pScreen) /* Clean up the scrollbars flag, if necessary */ if ((!pScreenInfo->fDecoration -#ifdef XWIN_MULTIWINDOWEXTWM - || pScreenInfo->fMWExtWM -#endif || pScreenInfo->fRootless #ifdef XWIN_MULTIWINDOW || pScreenInfo->fMultiWindow @@ -227,9 +221,6 @@ winCreateBoundingWindowWindowed(ScreenPtr pScreen) /* Adjust the window width and height for borders and title bar */ if (pScreenInfo->fDecoration -#ifdef XWIN_MULTIWINDOWEXTWM - && !pScreenInfo->fMWExtWM -#endif && !pScreenInfo->fRootless #ifdef XWIN_MULTIWINDOW && !pScreenInfo->fMultiWindow @@ -278,9 +269,6 @@ winCreateBoundingWindowWindowed(ScreenPtr pScreen) /* Make sure window is no bigger than work area */ if (TRUE -#ifdef XWIN_MULTIWINDOWEXTWM - && !pScreenInfo->fMWExtWM -#endif #ifdef XWIN_MULTIWINDOW && !pScreenInfo->fMultiWindow #endif @@ -415,14 +403,11 @@ winCreateBoundingWindowWindowed(ScreenPtr pScreen) /* Show the window */ if (FALSE -#ifdef XWIN_MULTIWINDOWEXTWM - || pScreenInfo->fMWExtWM -#endif #ifdef XWIN_MULTIWINDOW || pScreenInfo->fMultiWindow #endif ) { -#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM) +#ifdef XWIN_MULTIWINDOW pScreenPriv->fRootWindowShown = FALSE; #endif ShowWindow(*phwnd, SW_HIDE); @@ -436,9 +421,6 @@ winCreateBoundingWindowWindowed(ScreenPtr pScreen) /* Attempt to bring our window to the top of the display */ if (TRUE -#ifdef XWIN_MULTIWINDOWEXTWM - && !pScreenInfo->fMWExtWM -#endif && !pScreenInfo->fRootless #ifdef XWIN_MULTIWINDOW && !pScreenInfo->fMultiWindow diff --git a/hw/xwin/winengine.c b/hw/xwin/winengine.c index 104eba3c1..86be52fb4 100644 --- a/hw/xwin/winengine.c +++ b/hw/xwin/winengine.c @@ -149,9 +149,6 @@ winSetEngine(ScreenPtr pScreen) /* ShadowGDI is the only engine that supports Multi Window Mode */ if (FALSE -#ifdef XWIN_MULTIWINDOWEXTWM - || pScreenInfo->fMWExtWM -#endif #ifdef XWIN_MULTIWINDOW || pScreenInfo->fMultiWindow #endif diff --git a/hw/xwin/winglobals.h b/hw/xwin/winglobals.h index a20f266c2..fcf5e7844 100644 --- a/hw/xwin/winglobals.h +++ b/hw/xwin/winglobals.h @@ -87,10 +87,6 @@ extern DWORD g_dwCurrentThreadID; extern Bool g_fKeyboardHookLL; extern Bool g_fButton[3]; -#ifdef XWIN_MULTIWINDOWEXTWM -extern Bool g_fNoConfigureWindow; -#endif - extern pthread_mutex_t g_pmTerminating; #endif /* WINGLOBALS_H */ diff --git a/hw/xwin/winprocarg.c b/hw/xwin/winprocarg.c index a00c2f9bf..3a06c3f05 100644 --- a/hw/xwin/winprocarg.c +++ b/hw/xwin/winprocarg.c @@ -129,15 +129,10 @@ winInitializeScreenDefaults(void) defaultScreenInfo.pfb = NULL; defaultScreenInfo.fFullScreen = FALSE; defaultScreenInfo.fDecoration = TRUE; -#ifdef XWIN_MULTIWINDOWEXTWM - defaultScreenInfo.fMWExtWM = FALSE; -#endif defaultScreenInfo.fRootless = FALSE; #ifdef XWIN_MULTIWINDOW defaultScreenInfo.fMultiWindow = FALSE; defaultScreenInfo.fCompositeWM = TRUE; -#endif -#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM) defaultScreenInfo.fMultiMonitorOverride = FALSE; #endif defaultScreenInfo.fMultipleMonitors = FALSE; @@ -538,7 +533,7 @@ ddxProcessArgument(int argc, char *argv[], int i) * Look for the '-fullscreen' argument */ if (IS_OPTION("-fullscreen")) { -#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM) +#ifdef XWIN_MULTIWINDOW if (!screenInfoPtr->fMultiMonitorOverride) screenInfoPtr->fMultipleMonitors = FALSE; #endif @@ -562,7 +557,7 @@ ddxProcessArgument(int argc, char *argv[], int i) * Look for the '-nodecoration' argument */ if (IS_OPTION("-nodecoration")) { -#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM) +#ifdef XWIN_MULTIWINDOW if (!screenInfoPtr->fMultiMonitorOverride) screenInfoPtr->fMultipleMonitors = FALSE; #endif @@ -572,34 +567,11 @@ ddxProcessArgument(int argc, char *argv[], int i) return 1; } -#ifdef XWIN_MULTIWINDOWEXTWM - /* - * Look for the '-mwextwm' argument - */ - if (IS_OPTION("-mwextwm")) { - if (!screenInfoPtr->fMultiMonitorOverride) - screenInfoPtr->fMultipleMonitors = TRUE; - screenInfoPtr->fMWExtWM = TRUE; - - /* Indicate that we have processed this argument */ - return 1; - } - /* - * Look for the '-internalwm' argument - */ - if (IS_OPTION("-internalwm")) { - ErrorF("Ignoring obsolete -internalwm option\n"); - /* Ignored, but we still accept the arg for backwards compatibility */ - /* Indicate that we have processed this argument */ - return 1; - } -#endif - /* * Look for the '-rootless' argument */ if (IS_OPTION("-rootless")) { -#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM) +#ifdef XWIN_MULTIWINDOW if (!screenInfoPtr->fMultiMonitorOverride) screenInfoPtr->fMultipleMonitors = FALSE; #endif @@ -614,7 +586,7 @@ ddxProcessArgument(int argc, char *argv[], int i) * Look for the '-multiwindow' argument */ if (IS_OPTION("-multiwindow")) { -#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM) +#ifdef XWIN_MULTIWINDOW if (!screenInfoPtr->fMultiMonitorOverride) screenInfoPtr->fMultipleMonitors = TRUE; #endif @@ -649,7 +621,7 @@ ddxProcessArgument(int argc, char *argv[], int i) */ if (IS_OPTION("-multiplemonitors") || IS_OPTION("-multimonitors")) { -#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM) +#ifdef XWIN_MULTIWINDOW screenInfoPtr->fMultiMonitorOverride = TRUE; #endif screenInfoPtr->fMultipleMonitors = TRUE; @@ -663,7 +635,7 @@ ddxProcessArgument(int argc, char *argv[], int i) */ if (IS_OPTION("-nomultiplemonitors") || IS_OPTION("-nomultimonitors")) { -#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM) +#ifdef XWIN_MULTIWINDOW screenInfoPtr->fMultiMonitorOverride = TRUE; #endif screenInfoPtr->fMultipleMonitors = FALSE; diff --git a/hw/xwin/winrandr.c b/hw/xwin/winrandr.c index 1560199c1..1c1047a45 100644 --- a/hw/xwin/winrandr.c +++ b/hw/xwin/winrandr.c @@ -170,9 +170,6 @@ winRandRScreenSetSize(ScreenPtr pScreen, resize the native display size */ if (FALSE -#ifdef XWIN_MULTIWINDOWEXTWM - || pScreenInfo->fMWExtWM -#endif || pScreenInfo->fRootless #ifdef XWIN_MULTIWINDOW || pScreenInfo->fMultiWindow diff --git a/hw/xwin/winscrinit.c b/hw/xwin/winscrinit.c index b839eaf1c..88c170cd3 100644 --- a/hw/xwin/winscrinit.c +++ b/hw/xwin/winscrinit.c @@ -38,31 +38,6 @@ #include "win.h" #include "winmsg.h" -#ifdef XWIN_MULTIWINDOWEXTWM -static RootlessFrameProcsRec winMWExtWMProcs = { - winMWExtWMCreateFrame, - winMWExtWMDestroyFrame, - - winMWExtWMMoveFrame, - winMWExtWMResizeFrame, - winMWExtWMRestackFrame, - winMWExtWMReshapeFrame, - winMWExtWMUnmapFrame, - - winMWExtWMStartDrawing, - winMWExtWMStopDrawing, - winMWExtWMUpdateRegion, - winMWExtWMDamageRects, - winMWExtWMRootlessSwitchWindow, - NULL, //winMWExtWMDoReorderWindow, - NULL, //winMWExtWMHideWindow, - NULL, //winMWExtWMUpdateColorMap, - - NULL, //winMWExtWMCopyBytes, - winMWExtWMCopyWindow -}; -#endif - /* * Prototypes */ @@ -386,11 +361,7 @@ winFinishScreenInitFB(int i, ScreenPtr pScreen, int argc, char **argv) /* Initialize the shadow framebuffer layer */ if ((pScreenInfo->dwEngine == WIN_SERVER_SHADOW_GDI - || pScreenInfo->dwEngine == WIN_SERVER_SHADOW_DDNL) -#ifdef XWIN_MULTIWINDOWEXTWM - && !pScreenInfo->fMWExtWM -#endif - ) { + || pScreenInfo->dwEngine == WIN_SERVER_SHADOW_DDNL)) { #if CYGDEBUG winDebug("winFinishScreenInitFB - Calling shadowSetup ()\n"); #endif @@ -405,23 +376,6 @@ winFinishScreenInitFB(int i, ScreenPtr pScreen, int argc, char **argv) pScreen->CreateScreenResources = winCreateScreenResources; } -#ifdef XWIN_MULTIWINDOWEXTWM - /* Handle multi-window external window manager mode */ - if (pScreenInfo->fMWExtWM) { - winDebug("winScreenInit - MultiWindowExtWM - Calling RootlessInit\n"); - - RootlessInit(pScreen, &winMWExtWMProcs); - - winDebug("winScreenInit - MultiWindowExtWM - RootlessInit returned\n"); - - rootless_CopyBytes_threshold = 0; - /* FIXME: How many? Profiling needed? */ - rootless_CopyWindow_threshold = 1; - - winWindowsWMExtensionInit(); - } -#endif - /* Handle rootless mode */ if (pScreenInfo->fRootless) { /* Define the WRAP macro temporarily for local use */ @@ -525,11 +479,7 @@ winFinishScreenInitFB(int i, ScreenPtr pScreen, int argc, char **argv) pScreenPriv->fServerStarted = FALSE; #endif -#ifdef XWIN_MULTIWINDOWEXTWM - pScreenPriv->fRestacking = FALSE; -#endif - -#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM) +#ifdef XWIN_MULTIWINDOW if (FALSE #ifdef XWIN_MULTIWINDOW || pScreenInfo->fMultiWindow diff --git a/hw/xwin/wintrayicon.c b/hw/xwin/wintrayicon.c index 6acc0d712..adfc52817 100644 --- a/hw/xwin/wintrayicon.c +++ b/hw/xwin/wintrayicon.c @@ -111,7 +111,7 @@ LRESULT winHandleIconMessage(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, winPrivScreenPtr pScreenPriv) { -#if defined(XWIN_MULTIWINDOWEXTWM) || defined(XWIN_MULTIWINDOW) +#ifdef XWIN_MULTIWINDOW winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; #endif @@ -119,11 +119,6 @@ winHandleIconMessage(HWND hwnd, UINT message, case WM_LBUTTONUP: /* Restack and bring all windows to top */ SetForegroundWindow (pScreenPriv->hwndScreen); - -#ifdef XWIN_MULTIWINDOWEXTWM - if (pScreenInfo->fMWExtWM) - winMWExtWMRestackWindows(pScreenInfo->pScreen); -#endif break; case WM_LBUTTONDBLCLK: diff --git a/hw/xwin/winvalargs.c b/hw/xwin/winvalargs.c index 615acb496..2a6574c48 100644 --- a/hw/xwin/winvalargs.c +++ b/hw/xwin/winvalargs.c @@ -80,7 +80,7 @@ winValidateArgs(void) for (i = 0; i < g_iNumScreens; ++i) { /* * Check for any combination of - * -multiwindow, -mwextwm, and -rootless. + * -multiwindow and -rootless. */ { int iCount = 0; @@ -90,10 +90,7 @@ winValidateArgs(void) if (g_ScreenInfo[i].fMultiWindow) ++iCount; #endif -#ifdef XWIN_MULTIWINDOWEXTWM - if (g_ScreenInfo[i].fMWExtWM) - ++iCount; -#endif + if (g_ScreenInfo[i].fRootless) ++iCount; @@ -103,57 +100,47 @@ winValidateArgs(void) /* Fail if two or more conflicting options */ if (iCount > 1) { - ErrorF("winValidateArgs - Only one of -multiwindow, -mwextwm, " + ErrorF("winValidateArgs - Only one of -multiwindow " "and -rootless can be specific at a time.\n"); return FALSE; } } - /* Check for -multiwindow or -mwextwm and Xdmcp */ + /* Check for -multiwindow and Xdmcp */ /* allow xdmcp if screen 0 is normal. */ if (g_fXdmcpEnabled && !fHasNormalScreen0 && (FALSE #ifdef XWIN_MULTIWINDOW || g_ScreenInfo[i]. fMultiWindow #endif -#ifdef XWIN_MULTIWINDOWEXTWM - || g_ScreenInfo[i]. - fMWExtWM -#endif ) ) { ErrorF("winValidateArgs - Xdmcp (-query, -broadcast, or -indirect) " - "is invalid with -multiwindow or -mwextwm.\n"); + "is invalid with -multiwindow.\n"); return FALSE; } - /* Check for -multiwindow, -mwextwm, or -rootless and -fullscreen */ + /* Check for -multiwindow or -rootless and -fullscreen */ if (g_ScreenInfo[i].fFullScreen && (FALSE #ifdef XWIN_MULTIWINDOW || g_ScreenInfo[i].fMultiWindow #endif -#ifdef XWIN_MULTIWINDOWEXTWM - || g_ScreenInfo[i].fMWExtWM -#endif || g_ScreenInfo[i].fRootless) ) { ErrorF("winValidateArgs - -fullscreen is invalid with " - "-multiwindow, -mwextwm, or -rootless.\n"); + "-multiwindow or -rootless.\n"); return FALSE; } - /* Check for -multiwindow, -mwextwm, or -rootless and -nodecoration */ + /* Check for -multiwindow or -rootless and -nodecoration */ if (!g_ScreenInfo[i].fDecoration && (FALSE #ifdef XWIN_MULTIWINDOW || g_ScreenInfo[i].fMultiWindow #endif -#ifdef XWIN_MULTIWINDOWEXTWM - || g_ScreenInfo[i].fMWExtWM -#endif || g_ScreenInfo[i].fRootless) ) { ErrorF("winValidateArgs - -nodecoration is invalid with " - "-multiwindow, -mwextwm, or -rootless.\n"); + "-multiwindow or -rootless.\n"); return FALSE; } diff --git a/hw/xwin/winwin32rootless.c b/hw/xwin/winwin32rootless.c deleted file mode 100644 index c4be96ef3..000000000 --- a/hw/xwin/winwin32rootless.c +++ /dev/null @@ -1,965 +0,0 @@ -/* - *Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved. - * - *Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - *"Software"), to deal in the Software without restriction, including - *without limitation the rights to use, copy, modify, merge, publish, - *distribute, sublicense, and/or sell copies of the Software, and to - *permit persons to whom the Software is furnished to do so, subject to - *the following conditions: - * - *The above copyright notice and this permission notice shall be - *included in all copies or substantial portions of the Software. - * - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - *EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - *MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - *NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR - *ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - *CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - *WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - *Except as contained in this notice, the name of the XFree86 Project - *shall not be used in advertising or otherwise to promote the sale, use - *or other dealings in this Software without prior written authorization - *from the XFree86 Project. - * - * Authors: Kensuke Matsuzaki - * Earle F. Philhower, III - * Harold L Hunt II - */ -/* - * Look at hw/darwin/quartz/xpr/xprFrame.c and hw/darwin/quartz/cr/crFrame.c - */ -#ifdef HAVE_XWIN_CONFIG_H -#include <xwin-config.h> -#endif -#include "win.h" -#include <winuser.h> -#define _WINDOWSWM_SERVER_ -#include <X11/extensions/windowswmstr.h> -#include "winmultiwindowclass.h" -#include "winmultiwindowicons.h" -#include <X11/Xatom.h> - -/* - * Constant defines - */ - -#ifndef ULW_COLORKEY -#define ULW_COLORKEY 0x00000001 -#endif -#ifndef ULW_ALPHA -#define ULW_ALPHA 0x00000002 -#endif -#ifndef ULW_OPAQUE -#define ULW_OPAQUE 0x00000004 -#endif -#define AC_SRC_ALPHA 0x01 - -/* - * Local function - */ - -DEFINE_ATOM_HELPER(AtmWindowsWmNativeHwnd, WINDOWSWM_NATIVE_HWND) -static void -winMWExtWMSetNativeProperty(RootlessWindowPtr pFrame); - -/* - * Global variables - */ - -Bool g_fNoConfigureWindow = FALSE; - -/* - * Internal function to get the DIB format that is compatible with the screen - * Fixme: Share code with winshadgdi.c - */ - -static -Bool -winMWExtWMQueryDIBFormat(win32RootlessWindowPtr pRLWinPriv, - BITMAPINFOHEADER * pbmih) -{ - HBITMAP hbmp; - -#if CYGMULTIWINDOW_DEBUG - LPDWORD pdw = NULL; -#endif - - /* Create a memory bitmap compatible with the screen */ - hbmp = CreateCompatibleBitmap(pRLWinPriv->hdcScreen, 1, 1); - if (hbmp == NULL) { - ErrorF("winMWExtWMQueryDIBFormat - CreateCompatibleBitmap failed\n"); - return FALSE; - } - - /* Initialize our bitmap info header */ - ZeroMemory(pbmih, sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)); - pbmih->biSize = sizeof(BITMAPINFOHEADER); - - /* Get the biBitCount */ - if (!GetDIBits(pRLWinPriv->hdcScreen, - hbmp, 0, 1, NULL, (BITMAPINFO *) pbmih, DIB_RGB_COLORS)) { - ErrorF("winMWExtWMQueryDIBFormat - First call to GetDIBits failed\n"); - DeleteObject(hbmp); - return FALSE; - } - -#if CYGMULTIWINDOW_DEBUG - /* Get a pointer to bitfields */ - pdw = (DWORD *) ((CARD8 *) pbmih + sizeof(BITMAPINFOHEADER)); - - winDebug("winMWExtWMQueryDIBFormat - First call masks: %08x %08x %08x\n", - (unsigned int) pdw[0], (unsigned int) pdw[1], - (unsigned int) pdw[2]); -#endif - - /* Get optimal color table, or the optimal bitfields */ - if (!GetDIBits(pRLWinPriv->hdcScreen, - hbmp, 0, 1, NULL, (BITMAPINFO *) pbmih, DIB_RGB_COLORS)) { - ErrorF("winMWExtWMQueryDIBFormat - Second call to GetDIBits " - "failed\n"); - DeleteObject(hbmp); - return FALSE; - } - - /* Free memory */ - DeleteObject(hbmp); - - return TRUE; -} - -static HRGN -winMWExtWMCreateRgnFromRegion(RegionPtr pShape) -{ - int nRects; - BoxPtr pRects, pEnd; - HRGN hRgn, hRgnRect; - - if (pShape == NULL) - return NULL; - - nRects = RegionNumRects(pShape); - pRects = RegionRects(pShape); - - hRgn = CreateRectRgn(0, 0, 0, 0); - if (hRgn == NULL) { - ErrorF("winReshape - Initial CreateRectRgn (%d, %d, %d, %d) " - "failed: %d\n", 0, 0, 0, 0, (int) GetLastError()); - } - - /* Loop through all rectangles in the X region */ - for (pEnd = pRects + nRects; pRects < pEnd; pRects++) { - /* Create a Windows region for the X rectangle */ - hRgnRect = CreateRectRgn(pRects->x1, - pRects->y1, pRects->x2, pRects->y2); - if (hRgnRect == NULL) { - ErrorF("winReshape - Loop CreateRectRgn (%d, %d, %d, %d) " - "failed: %d\n", - pRects->x1, - pRects->y1, pRects->x2, pRects->y2, (int) GetLastError()); - } - - /* Merge the Windows region with the accumulated region */ - if (CombineRgn(hRgn, hRgn, hRgnRect, RGN_OR) == ERROR) { - ErrorF("winReshape - CombineRgn () failed: %d\n", - (int) GetLastError()); - } - - /* Delete the temporary Windows region */ - DeleteObject(hRgnRect); - } - - return hRgn; -} - -static void -InitWin32RootlessEngine(win32RootlessWindowPtr pRLWinPriv) -{ - pRLWinPriv->hdcScreen = GetDC(pRLWinPriv->hWnd); - pRLWinPriv->hdcShadow = CreateCompatibleDC(pRLWinPriv->hdcScreen); - pRLWinPriv->hbmpShadow = NULL; - - /* Allocate bitmap info header */ - pRLWinPriv->pbmihShadow = - malloc(sizeof(BITMAPINFOHEADER) - + 256 * sizeof(RGBQUAD)); - if (pRLWinPriv->pbmihShadow == NULL) { - ErrorF("InitWin32RootlessEngine - malloc () failed\n"); - return; - } - - /* Query the screen format */ - winMWExtWMQueryDIBFormat(pRLWinPriv, pRLWinPriv->pbmihShadow); -} - -Bool -winMWExtWMCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen, - int newX, int newY, RegionPtr pShape) -{ -#define CLASS_NAME_LENGTH 512 - Bool fResult = TRUE; - win32RootlessWindowPtr pRLWinPriv; - WNDCLASSEX wc; - char pszClass[CLASS_NAME_LENGTH], pszWindowID[12]; - HICON hIcon; - HICON hIconSmall; - char *res_name, *res_class, *res_role; - static int s_iWindowID = 0; - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMCreateFrame %d %d - %d %d\n", - newX, newY, pFrame->width, pFrame->height); -#endif - - pRLWinPriv = malloc(sizeof(win32RootlessWindowRec)); - pRLWinPriv->pFrame = pFrame; - pRLWinPriv->pfb = NULL; - pRLWinPriv->hbmpShadow = NULL; - pRLWinPriv->hdcShadow = NULL; - pRLWinPriv->hdcScreen = NULL; - pRLWinPriv->pbmihShadow = NULL; - pRLWinPriv->fResized = TRUE; - pRLWinPriv->fClose = FALSE; - pRLWinPriv->fRestackingNow = FALSE; - pRLWinPriv->fDestroyed = FALSE; - pRLWinPriv->fMovingOrSizing = FALSE; - - // Store the implementation private frame ID - pFrame->wid = (RootlessFrameID) pRLWinPriv; - - winSelectIcons(&hIcon, &hIconSmall); - - /* Set standard class name prefix so we can identify window easily */ - strncpy(pszClass, WINDOW_CLASS_X, sizeof(pszClass)); - - if (winMultiWindowGetClassHint(pFrame->win, &res_name, &res_class)) { - strncat(pszClass, "-", 1); - strncat(pszClass, res_name, CLASS_NAME_LENGTH - strlen(pszClass)); - strncat(pszClass, "-", 1); - strncat(pszClass, res_class, CLASS_NAME_LENGTH - strlen(pszClass)); - - /* Check if a window class is provided by the WM_WINDOW_ROLE property, - * if not use the WM_CLASS information. - * For further information see: - * http://tronche.com/gui/x/icccm/sec-5.html - */ - if (winMultiWindowGetWindowRole(pFrame->win, &res_role)) { - strcat(pszClass, "-"); - strcat(pszClass, res_role); - free(res_role); - } - - free(res_name); - free(res_class); - } - - /* Add incrementing window ID to make unique class name */ - snprintf(pszWindowID, sizeof(pszWindowID), "-%x", s_iWindowID++); - pszWindowID[sizeof(pszWindowID) - 1] = 0; - strcat(pszClass, pszWindowID); - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMCreateFrame - Creating class: %s\n", pszClass); -#endif - - /* Setup our window class */ - wc.cbSize = sizeof(wc); - wc.style = CS_HREDRAW | CS_VREDRAW; - wc.lpfnWndProc = winMWExtWMWindowProc; - wc.cbClsExtra = 0; - wc.cbWndExtra = 0; - wc.hInstance = g_hInstance; - wc.hIcon = hIcon; - wc.hIconSm = hIconSmall; - wc.hCursor = 0; - wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); - wc.lpszMenuName = NULL; - wc.lpszClassName = pszClass; - RegisterClassEx(&wc); - - /* Create the window */ - g_fNoConfigureWindow = TRUE; - pRLWinPriv->hWnd = CreateWindowExA(WS_EX_TOOLWINDOW, /* Extended styles */ - pszClass, /* Class name */ - WINDOW_TITLE_X, /* Window name */ - WS_POPUP | WS_CLIPCHILDREN, newX, /* Horizontal position */ - newY, /* Vertical position */ - pFrame->width, /* Right edge */ - pFrame->height, /* Bottom edge */ - (HWND) NULL, /* No parent or owner window */ - (HMENU) NULL, /* No menu */ - GetModuleHandle(NULL), /* Instance handle */ - pRLWinPriv); /* ScreenPrivates */ - if (pRLWinPriv->hWnd == NULL) { - ErrorF("winMWExtWMCreateFrame - CreateWindowExA () failed: %d\n", - (int) GetLastError()); - fResult = FALSE; - } - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMCreateFrame - ShowWindow\n"); -#endif - - //ShowWindow (pRLWinPriv->hWnd, SW_SHOWNOACTIVATE); - g_fNoConfigureWindow = FALSE; - - if (pShape != NULL) { - winMWExtWMReshapeFrame(pFrame->wid, pShape); - } - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMCreateFrame - (%p) %p\n", - pFrame->wid, pRLWinPriv->hWnd); -#if 0 - { - WindowPtr pWin2 = NULL; - win32RootlessWindowPtr pRLWinPriv2 = NULL; - - /* Check if the Windows window property for our X window pointer is valid */ - if ((pWin2 = - (WindowPtr) GetProp(pRLWinPriv->hWnd, WIN_WINDOW_PROP)) != NULL) { - pRLWinPriv2 = - (win32RootlessWindowPtr) RootlessFrameForWindow(pWin2, FALSE); - } - winDebug("winMWExtWMCreateFrame2 (%08x) %08x\n", - pRLWinPriv2, pRLWinPriv2->hWnd); - if (pRLWinPriv != pRLWinPriv2 || pRLWinPriv->hWnd != pRLWinPriv2->hWnd) { - winDebug("Error param missmatch\n"); - } - } -#endif -#endif - - winMWExtWMSetNativeProperty(pFrame); - - return fResult; -} - -void -winMWExtWMDestroyFrame(RootlessFrameID wid) -{ - win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid; - HICON hIcon; - HICON hIconSm; - HMODULE hInstance; - int iReturn; - char pszClass[CLASS_NAME_LENGTH]; - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMDestroyFrame (%p) %p\n", - pRLWinPriv, pRLWinPriv->hWnd); -#if 0 - { - WindowPtr pWin2 = NULL; - win32RootlessWindowPtr pRLWinPriv2 = NULL; - - /* Check if the Windows window property for our X window pointer is valid */ - if ((pWin2 = - (WindowPtr) GetProp(pRLWinPriv->hWnd, WIN_WINDOW_PROP)) != NULL) { - pRLWinPriv2 = - (win32RootlessWindowPtr) RootlessFrameForWindow(pWin2, FALSE); - } - winDebug("winMWExtWMDestroyFrame2 (%08x) %08x\n", - pRLWinPriv2, pRLWinPriv2->hWnd); - if (pRLWinPriv != pRLWinPriv2 || pRLWinPriv->hWnd != pRLWinPriv2->hWnd) { - winDebug("Error param missmatch\n"); - *(int *) 0 = 1; //raise exseption - } - } -#endif -#endif - - /* Store the info we need to destroy after this window is gone */ - hInstance = (HINSTANCE) GetClassLongPtr(pRLWinPriv->hWnd, GCLP_HMODULE); - hIcon = (HICON) SendMessage(pRLWinPriv->hWnd, WM_GETICON, ICON_BIG, 0); - hIconSm = (HICON) SendMessage(pRLWinPriv->hWnd, WM_GETICON, ICON_SMALL, 0); - iReturn = GetClassName(pRLWinPriv->hWnd, pszClass, CLASS_NAME_LENGTH); - - pRLWinPriv->fClose = TRUE; - pRLWinPriv->fDestroyed = TRUE; - - /* Destroy the Windows window */ - DestroyWindow(pRLWinPriv->hWnd); - - /* Only if we were able to get the name */ - if (iReturn) { -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMDestroyFrame - Unregistering %s: ", pszClass); -#endif - iReturn = UnregisterClass(pszClass, hInstance); - } - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMDestroyFramew - Deleting Icon\n"); -#endif - - winDestroyIcon(hIcon); - winDestroyIcon(hIconSm); - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMDestroyFrame - done\n"); -#endif -} - -void -winMWExtWMMoveFrame(RootlessFrameID wid, ScreenPtr pScreen, int iNewX, - int iNewY) -{ - win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid; - RECT rcNew; - DWORD dwExStyle; - DWORD dwStyle; - int iX, iY, iWidth, iHeight; - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMMoveFrame (%p) (%d %d)\n", pRLWinPriv, iNewX, - iNewY); -#endif - - /* Get the Windows window style and extended style */ - dwExStyle = GetWindowLongPtr(pRLWinPriv->hWnd, GWL_EXSTYLE); - dwStyle = GetWindowLongPtr(pRLWinPriv->hWnd, GWL_STYLE); - - /* Get the X and Y location of the X window */ - iX = iNewX + GetSystemMetrics(SM_XVIRTUALSCREEN); - iY = iNewY + GetSystemMetrics(SM_YVIRTUALSCREEN); - - /* Get the height and width of the X window */ - iWidth = pRLWinPriv->pFrame->width; - iHeight = pRLWinPriv->pFrame->height; - - /* Store the origin, height, and width in a rectangle structure */ - SetRect(&rcNew, iX, iY, iX + iWidth, iY + iHeight); - -#ifdef CYGMULTIWINDOW_DEBUG - winDebug("\tWindow {%d, %d, %d, %d}, {%d, %d}\n", - (int)rcNew.left, (int)rcNew.top, (int)rcNew.right, (int)rcNew.bottom, - (int)(rcNew.right - rcNew.left), (int)(rcNew.bottom - rcNew.top)); -#endif - /* - * Calculate the required size of the Windows window rectangle, - * given the size of the Windows window client area. - */ - AdjustWindowRectEx(&rcNew, dwStyle, FALSE, dwExStyle); - -#ifdef CYGMULTIWINDOW_DEBUG - winDebug("\tAdjusted {%d, %d, %d, %d}, {%d, %d}\n", - (int)rcNew.left, (int)rcNew.top, (int)rcNew.right, (int)rcNew.bottom, - (int)(rcNew.right - rcNew.left), (int)(rcNew.bottom - rcNew.top)); -#endif - g_fNoConfigureWindow = TRUE; - SetWindowPos(pRLWinPriv->hWnd, NULL, rcNew.left, rcNew.top, 0, 0, - SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER); - g_fNoConfigureWindow = FALSE; -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMMoveFrame (%p) done\n", pRLWinPriv); -#endif -} - -void -winMWExtWMResizeFrame(RootlessFrameID wid, ScreenPtr pScreen, - int iNewX, int iNewY, - unsigned int uiNewWidth, unsigned int uiNewHeight, - unsigned int uiGravity) -{ - win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid; - RECT rcNew; - RECT rcOld; - DWORD dwExStyle; - DWORD dwStyle; - int iX, iY; - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMResizeFrame (%p) (%d %d)-(%d %d)\n", - pRLWinPriv, iNewX, iNewY, uiNewWidth, uiNewHeight); -#endif - - pRLWinPriv->fResized = TRUE; - - /* Get the Windows window style and extended style */ - dwExStyle = GetWindowLongPtr(pRLWinPriv->hWnd, GWL_EXSTYLE); - dwStyle = GetWindowLongPtr(pRLWinPriv->hWnd, GWL_STYLE); - - /* Get the X and Y location of the X window */ - iX = iNewX + GetSystemMetrics(SM_XVIRTUALSCREEN); - iY = iNewY + GetSystemMetrics(SM_YVIRTUALSCREEN); - - /* Store the origin, height, and width in a rectangle structure */ - SetRect(&rcNew, iX, iY, iX + uiNewWidth, iY + uiNewHeight); - - /* - * Calculate the required size of the Windows window rectangle, - * given the size of the Windows window client area. - */ - AdjustWindowRectEx(&rcNew, dwStyle, FALSE, dwExStyle); - - /* Get a rectangle describing the old Windows window */ - GetWindowRect(pRLWinPriv->hWnd, &rcOld); - - /* Check if the old rectangle and new rectangle are the same */ - if (!EqualRect(&rcNew, &rcOld)) { - - g_fNoConfigureWindow = TRUE; - MoveWindow(pRLWinPriv->hWnd, - rcNew.left, rcNew.top, - rcNew.right - rcNew.left, rcNew.bottom - rcNew.top, TRUE); - g_fNoConfigureWindow = FALSE; - } -} - -void -winMWExtWMRestackFrame(RootlessFrameID wid, RootlessFrameID nextWid) -{ - win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid; - win32RootlessWindowPtr pRLNextWinPriv = (win32RootlessWindowPtr) nextWid; - - winScreenPriv(pRLWinPriv->pFrame->win->drawable.pScreen); - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMRestackFrame (%p)\n", pRLWinPriv); -#endif - - if (pScreenPriv && pScreenPriv->fRestacking) - return; - - pRLWinPriv->fRestackingNow = TRUE; - - /* Show window */ - if (!IsWindowVisible(pRLWinPriv->hWnd)) - ShowWindow(pRLWinPriv->hWnd, SW_SHOWNOACTIVATE); - - if (pRLNextWinPriv == NULL) { -#if CYGMULTIWINDOW_DEBUG - winDebug("Win %p is top\n", pRLWinPriv); -#endif - pScreenPriv->widTop = wid; - SetWindowPos(pRLWinPriv->hWnd, HWND_TOP, - 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); - } - else { - /* using general wm like twm, wmaker etc. - Interleave X window and Windows window will cause problem. */ - SetWindowPos(pRLWinPriv->hWnd, pRLNextWinPriv->hWnd, - 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); - } -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMRestackFrame - done (%p)\n", pRLWinPriv); -#endif - - pRLWinPriv->fRestackingNow = FALSE; -} - -void -winMWExtWMReshapeFrame(RootlessFrameID wid, RegionPtr pShape) -{ - win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid; - HRGN hRgn, hRgnWindow, hRgnClient; - RECT rcWindow, rcClient; - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMReshapeFrame (%p)\n", pRLWinPriv); -#endif - - hRgn = winMWExtWMCreateRgnFromRegion(pShape); - - /* Create region for non-client area */ - GetWindowRect(pRLWinPriv->hWnd, &rcWindow); - GetClientRect(pRLWinPriv->hWnd, &rcClient); - MapWindowPoints(pRLWinPriv->hWnd, HWND_DESKTOP, (LPPOINT) &rcClient, 2); - OffsetRgn(hRgn, rcClient.left - rcWindow.left, rcClient.top - rcWindow.top); - OffsetRect(&rcClient, -rcWindow.left, -rcWindow.top); - OffsetRect(&rcWindow, -rcWindow.left, -rcWindow.top); - hRgnWindow = CreateRectRgnIndirect(&rcWindow); - hRgnClient = CreateRectRgnIndirect(&rcClient); - CombineRgn(hRgnWindow, hRgnWindow, hRgnClient, RGN_DIFF); - CombineRgn(hRgn, hRgnWindow, hRgn, RGN_OR); - - SetWindowRgn(pRLWinPriv->hWnd, hRgn, TRUE); - - DeleteObject(hRgnWindow); - DeleteObject(hRgnClient); -} - -void -winMWExtWMUnmapFrame(RootlessFrameID wid) -{ - win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid; - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMUnmapFrame (%p)\n", pRLWinPriv); -#endif - - g_fNoConfigureWindow = TRUE; - //ShowWindow (pRLWinPriv->hWnd, SW_MINIMIZE); - ShowWindow(pRLWinPriv->hWnd, SW_HIDE); - g_fNoConfigureWindow = FALSE; -} - -/* - * Fixme: Code sharing with winshadgdi.c and other engine support - */ -void -winMWExtWMStartDrawing(RootlessFrameID wid, char **pixelData, int *bytesPerRow) -{ - win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid; - winPrivScreenPtr pScreenPriv = NULL; - winScreenInfo *pScreenInfo = NULL; - ScreenPtr pScreen = NULL; - DIBSECTION dibsection; - Bool fReturn = TRUE; - HDC hdcNew; - HBITMAP hbmpNew; - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMStartDrawing (%p) %08x\n", pRLWinPriv, - pRLWinPriv->fDestroyed); -#endif - - if (!pRLWinPriv->fDestroyed) { - pScreen = pRLWinPriv->pFrame->win->drawable.pScreen; - if (pScreen) - pScreenPriv = winGetScreenPriv(pScreen); - if (pScreenPriv) - pScreenInfo = pScreenPriv->pScreenInfo; - -#if CYGMULTIWINDOW_DEBUG - winDebug("\tpScreenPriv %p\n", pScreenPriv); - winDebug("\tpScreenInfo %p\n", pScreenInfo); - winDebug("\t(%d, %d)\n", (int) pRLWinPriv->pFrame->width, - (int) pRLWinPriv->pFrame->height); -#endif - if (pRLWinPriv->hdcScreen == NULL) { - InitWin32RootlessEngine(pRLWinPriv); - } - - if (pRLWinPriv->fResized) { - /* width * bpp must be multiple of 4 to match 32bit alignment */ - int stridesize; - int misalignment; - - pRLWinPriv->pbmihShadow->biWidth = pRLWinPriv->pFrame->width; - pRLWinPriv->pbmihShadow->biHeight = -pRLWinPriv->pFrame->height; - - stridesize = pRLWinPriv->pFrame->width * (pScreenInfo->dwBPP >> 3); - misalignment = stridesize & 3; - if (misalignment != 0) { - stridesize += 4 - misalignment; - pRLWinPriv->pbmihShadow->biWidth = - stridesize / (pScreenInfo->dwBPP >> 3); - winDebug("\tresizing to %d (was %d)\n", - (int)pRLWinPriv->pbmihShadow->biWidth, - pRLWinPriv->pFrame->width); - } - - hdcNew = CreateCompatibleDC(pRLWinPriv->hdcScreen); - /* Create a DI shadow bitmap with a bit pointer */ - hbmpNew = CreateDIBSection(pRLWinPriv->hdcScreen, - (BITMAPINFO *) pRLWinPriv->pbmihShadow, - DIB_RGB_COLORS, - (VOID **) &pRLWinPriv->pfb, NULL, 0); - if (hbmpNew == NULL || pRLWinPriv->pfb == NULL) { - ErrorF("winMWExtWMStartDrawing - CreateDIBSection failed\n"); - //return FALSE; - } - else { -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMStartDrawing - Shadow buffer allocated\n"); -#endif - } - - /* Get information about the bitmap that was allocated */ - GetObject(hbmpNew, sizeof(dibsection), &dibsection); - -#if CYGMULTIWINDOW_DEBUG - /* Print information about bitmap allocated */ - winDebug("winMWExtWMStartDrawing - Dibsection width: %d height: %d " - "depth: %d size image: %d\n", - (unsigned int) dibsection.dsBmih.biWidth, - (unsigned int) dibsection.dsBmih.biHeight, - (unsigned int) dibsection.dsBmih.biBitCount, - (unsigned int) dibsection.dsBmih.biSizeImage); -#endif - - /* Select the shadow bitmap into the shadow DC */ - SelectObject(hdcNew, hbmpNew); - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMStartDrawing - Attempting a shadow blit\n"); -#endif - - /* Blit from the old shadow to the new shadow */ - fReturn = BitBlt(hdcNew, - 0, 0, - pRLWinPriv->pFrame->width, - pRLWinPriv->pFrame->height, pRLWinPriv->hdcShadow, - 0, 0, SRCCOPY); - if (fReturn) { -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMStartDrawing - Shadow blit success\n"); -#endif - } - else { - ErrorF("winMWExtWMStartDrawing - Shadow blit failure\n"); - } - - /* Look for height weirdness */ - if (dibsection.dsBmih.biHeight < 0) { - /* FIXME: Figure out why biHeight is sometimes negative */ - ErrorF("winMWExtWMStartDrawing - WEIRDNESS - " - "biHeight still negative: %d\n", - (int) dibsection.dsBmih.biHeight); - ErrorF("winMWExtWMStartDrawing - WEIRDNESS - " - "Flipping biHeight sign\n"); - dibsection.dsBmih.biHeight = -dibsection.dsBmih.biHeight; - } - - pRLWinPriv->dwWidthBytes = dibsection.dsBm.bmWidthBytes; - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMStartDrawing - bytesPerRow: %d\n", - (unsigned int) dibsection.dsBm.bmWidthBytes); -#endif - - /* Free the old shadow bitmap */ - DeleteObject(pRLWinPriv->hdcShadow); - DeleteObject(pRLWinPriv->hbmpShadow); - - pRLWinPriv->hdcShadow = hdcNew; - pRLWinPriv->hbmpShadow = hbmpNew; - - pRLWinPriv->fResized = FALSE; -#if CYGMULTIWINDOW_DEBUG && FALSE - winDebug("winMWExtWMStartDrawing - 0x%08x %d\n", - (unsigned int) pRLWinPriv->pfb, - (unsigned int) dibsection.dsBm.bmWidthBytes); -#endif - } - } - else { - ErrorF("winMWExtWMStartDrawing - Already window was destroyed \n"); - } -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMStartDrawing - done (%p) %p %d\n", - pRLWinPriv, - pRLWinPriv->pfb, - (unsigned int) pRLWinPriv->dwWidthBytes); -#endif - *pixelData = pRLWinPriv->pfb; - *bytesPerRow = pRLWinPriv->dwWidthBytes; -} - -void -winMWExtWMStopDrawing(RootlessFrameID wid, Bool fFlush) -{ -#if 0 - win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid; - BLENDFUNCTION bfBlend; - SIZE szWin; - POINT ptSrc; - -#if CYGMULTIWINDOW_DEBUG || TRUE - winDebug("winMWExtWMStopDrawing (%08x)\n", pRLWinPriv); -#endif - szWin.cx = pRLWinPriv->dwWidth; - szWin.cy = pRLWinPriv->dwHeight; - ptSrc.x = 0; - ptSrc.y = 0; - bfBlend.BlendOp = AC_SRC_OVER; - bfBlend.BlendFlags = 0; - bfBlend.SourceConstantAlpha = 255; - bfBlend.AlphaFormat = AC_SRC_ALPHA; - - if (!UpdateLayeredWindow(pRLWinPriv->hWnd, - NULL, NULL, &szWin, - pRLWinPriv->hdcShadow, &ptSrc, - 0, &bfBlend, ULW_ALPHA)) { - ErrorF("winMWExtWMStopDrawing - UpdateLayeredWindow failed\n"); - } -#endif -} - -void -winMWExtWMUpdateRegion(RootlessFrameID wid, RegionPtr pDamage) -{ - win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid; - -#if 0 - BLENDFUNCTION bfBlend; - SIZE szWin; - POINT ptSrc; -#endif -#if CYGMULTIWINDOW_DEBUG && 0 - winDebug("winMWExtWMUpdateRegion (%08x)\n", pRLWinPriv); -#endif -#if 0 - szWin.cx = pRLWinPriv->dwWidth; - szWin.cy = pRLWinPriv->dwHeight; - ptSrc.x = 0; - ptSrc.y = 0; - bfBlend.BlendOp = AC_SRC_OVER; - bfBlend.BlendFlags = 0; - bfBlend.SourceConstantAlpha = 255; - bfBlend.AlphaFormat = AC_SRC_ALPHA; - - if (!UpdateLayeredWindow(pRLWinPriv->hWnd, - NULL, NULL, &szWin, - pRLWinPriv->hdcShadow, &ptSrc, - 0, &bfBlend, ULW_ALPHA)) { - LPVOID lpMsgBuf; - - /* Display a fancy error message */ - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - GetLastError(), - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &lpMsgBuf, 0, NULL); - - ErrorF("winMWExtWMUpdateRegion - UpdateLayeredWindow failed: %s\n", - (LPSTR) lpMsgBuf); - LocalFree(lpMsgBuf); - } -#endif - if (!g_fNoConfigureWindow) - UpdateWindow(pRLWinPriv->hWnd); -} - -void -winMWExtWMDamageRects(RootlessFrameID wid, int nCount, const BoxRec * pRects, - int shift_x, int shift_y) -{ - win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid; - const BoxRec *pEnd; - -#if CYGMULTIWINDOW_DEBUG && 0 - winDebug("winMWExtWMDamageRects (%08x, %d, %08x, %d, %d)\n", - pRLWinPriv, nCount, pRects, shift_x, shift_y); -#endif - - for (pEnd = pRects + nCount; pRects < pEnd; pRects++) { - RECT rcDmg; - - rcDmg.left = pRects->x1 + shift_x; - rcDmg.top = pRects->y1 + shift_y; - rcDmg.right = pRects->x2 + shift_x; - rcDmg.bottom = pRects->y2 + shift_y; - - InvalidateRect(pRLWinPriv->hWnd, &rcDmg, FALSE); - } -} - -void -winMWExtWMRootlessSwitchWindow(RootlessWindowPtr pFrame, WindowPtr oldWin) -{ - win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) pFrame->wid; - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMRootlessSwitchWindow (%p) %p\n", - pRLWinPriv, pRLWinPriv->hWnd); -#endif - pRLWinPriv->pFrame = pFrame; - pRLWinPriv->fResized = TRUE; - - /* Set the window extended style flags */ - SetWindowLongPtr(pRLWinPriv->hWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW); - - /* Set the window standard style flags */ - SetWindowLongPtr(pRLWinPriv->hWnd, GWL_STYLE, WS_POPUP | WS_CLIPCHILDREN); - - DeleteProperty(serverClient, oldWin, AtmWindowsWmNativeHwnd()); - winMWExtWMSetNativeProperty(pFrame); -#if CYGMULTIWINDOW_DEBUG -#if 0 - { - WindowPtr pWin2 = NULL; - win32RootlessWindowPtr pRLWinPriv2 = NULL; - - /* Check if the Windows window property for our X window pointer is valid */ - if ((pWin2 = - (WindowPtr) GetProp(pRLWinPriv->hWnd, WIN_WINDOW_PROP)) != NULL) { - pRLWinPriv2 = - (win32RootlessWindowPtr) RootlessFrameForWindow(pWin2, FALSE); - } - winDebug("winMWExtWMSwitchFrame2 (%08x) %08x\n", - pRLWinPriv2, pRLWinPriv2->hWnd); - if (pRLWinPriv != pRLWinPriv2 || pRLWinPriv->hWnd != pRLWinPriv2->hWnd) { - winDebug("Error param missmatch\n"); - } - } -#endif -#endif -} - -void -winMWExtWMCopyBytes(unsigned int width, unsigned int height, - const void *src, unsigned int srcRowBytes, - void *dst, unsigned int dstRowBytes) -{ -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMCopyBytes - Not implemented\n"); -#endif -} - -void -winMWExtWMCopyWindow(RootlessFrameID wid, int nDstRects, - const BoxRec * pDstRects, int nDx, int nDy) -{ - win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) wid; - const BoxRec *pEnd; - RECT rcDmg; - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMCopyWindow (%p, %d, %p, %d, %d)\n", - pRLWinPriv, nDstRects, pDstRects, nDx, nDy); -#endif - - for (pEnd = pDstRects + nDstRects; pDstRects < pEnd; pDstRects++) { -#if CYGMULTIWINDOW_DEBUG - winDebug("BitBlt (%d, %d, %d, %d) (%d, %d)\n", - pDstRects->x1, pDstRects->y1, - pDstRects->x2 - pDstRects->x1, - pDstRects->y2 - pDstRects->y1, - pDstRects->x1 + nDx, pDstRects->y1 + nDy); -#endif - - if (!BitBlt(pRLWinPriv->hdcShadow, - pDstRects->x1, pDstRects->y1, - pDstRects->x2 - pDstRects->x1, - pDstRects->y2 - pDstRects->y1, - pRLWinPriv->hdcShadow, - pDstRects->x1 + nDx, pDstRects->y1 + nDy, SRCCOPY)) { - ErrorF("winMWExtWMCopyWindow - BitBlt failed.\n"); - } - - rcDmg.left = pDstRects->x1; - rcDmg.top = pDstRects->y1; - rcDmg.right = pDstRects->x2; - rcDmg.bottom = pDstRects->y2; - - InvalidateRect(pRLWinPriv->hWnd, &rcDmg, FALSE); - } -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMCopyWindow - done\n"); -#endif -} - -/* - * winMWExtWMSetNativeProperty - */ - -static void -winMWExtWMSetNativeProperty(RootlessWindowPtr pFrame) -{ - win32RootlessWindowPtr pRLWinPriv = (win32RootlessWindowPtr) pFrame->wid; - long lData; - - /* FIXME: move this to WindowsWM extension */ - - lData = (long) pRLWinPriv->hWnd; - dixChangeWindowProperty(serverClient, pFrame->win, AtmWindowsWmNativeHwnd(), - XA_INTEGER, 32, PropModeReplace, 1, &lData, TRUE); -} diff --git a/hw/xwin/winwin32rootlesswindow.c b/hw/xwin/winwin32rootlesswindow.c deleted file mode 100644 index 1acb95f69..000000000 --- a/hw/xwin/winwin32rootlesswindow.c +++ /dev/null @@ -1,420 +0,0 @@ -/* - *Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved. - * - *Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - *"Software"), to deal in the Software without restriction, including - *without limitation the rights to use, copy, modify, merge, publish, - *distribute, sublicense, and/or sell copies of the Software, and to - *permit persons to whom the Software is furnished to do so, subject to - *the following conditions: - * - *The above copyright notice and this permission notice shall be - *included in all copies or substantial portions of the Software. - * - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - *EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - *MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - *NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR - *ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - *CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - *WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - *Except as contained in this notice, the name of the XFree86 Project - *shall not be used in advertising or otherwise to promote the sale, use - *or other dealings in this Software without prior written authorization - *from the XFree86 Project. - * - * Authors: Kensuke Matsuzaki - * Earle F. Philhower, III - * Harold L Hunt II - */ - -#ifdef HAVE_XWIN_CONFIG_H -#include <xwin-config.h> -#endif -#include "win.h" -#include "winprefs.h" - -#if 0 -/* - * winMWExtWMReorderWindows - */ - -void -winMWExtWMReorderWindows(ScreenPtr pScreen) -{ - winScreenPriv(pScreen); - HWND hwnd = NULL; - win32RootlessWindowPtr pRLWin = NULL; - win32RootlessWindowPtr pRLWinSib = NULL; - DWORD dwCurrentProcessID = GetCurrentProcessId(); - DWORD dwWindowProcessID = 0; - XID vlist[2]; - -#if CYGMULTIWINDOW_DEBUG && FALSE - winDebug("winMWExtWMReorderWindows\n"); -#endif - - pScreenPriv->fRestacking = TRUE; - - if (pScreenPriv->fWindowOrderChanged) { -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMReorderWindows - Need to restack\n"); -#endif - hwnd = GetTopWindow(NULL); - - while (hwnd) { - GetWindowThreadProcessId(hwnd, &dwWindowProcessID); - - if ((dwWindowProcessID == dwCurrentProcessID) - && GetProp(hwnd, WIN_WINDOW_PROP)) { - pRLWinSib = pRLWin; - pRLWin = - (win32RootlessWindowPtr) GetProp(hwnd, WIN_WINDOW_PROP); - - if (pRLWinSib) { - vlist[0] = pRLWinSib->pFrame->win->drawable.id; - vlist[1] = Below; - - ConfigureWindow(pRLWin->pFrame->win, - CWSibling | CWStackMode, vlist, - wClient(pRLWin->pFrame->win)); - } - else { - /* 1st window - raise to the top */ - vlist[0] = Above; - - ConfigureWindow(pRLWin->pFrame->win, CWStackMode, - vlist, wClient(pRLWin->pFrame->win)); - } - } - hwnd = GetNextWindow(hwnd, GW_HWNDNEXT); - } - } - - pScreenPriv->fRestacking = FALSE; - pScreenPriv->fWindowOrderChanged = FALSE; -} -#endif - -/* - * winMWExtWMMoveXWindow - */ - -void -winMWExtWMMoveXWindow(WindowPtr pWin, int x, int y) -{ - CARD32 *vlist = malloc(sizeof(CARD32) * 2); - - vlist[0] = x; - vlist[1] = y; - ConfigureWindow(pWin, CWX | CWY, vlist, wClient(pWin)); - free(vlist); -} - -/* - * winMWExtWMResizeXWindow - */ - -void -winMWExtWMResizeXWindow(WindowPtr pWin, int w, int h) -{ - CARD32 *vlist = malloc(sizeof(CARD32) * 2); - - vlist[0] = w; - vlist[1] = h; - ConfigureWindow(pWin, CWWidth | CWHeight, vlist, wClient(pWin)); - free(vlist); -} - -/* - * winMWExtWMMoveResizeXWindow - */ - -void -winMWExtWMMoveResizeXWindow(WindowPtr pWin, int x, int y, int w, int h) -{ - CARD32 *vlist = malloc(sizeof(long) * 4); - - vlist[0] = x; - vlist[1] = y; - vlist[2] = w; - vlist[3] = h; - - ConfigureWindow(pWin, CWX | CWY | CWWidth | CWHeight, vlist, wClient(pWin)); - free(vlist); -} - -/* - - - * winMWExtWMDecorateWindow - Update window style. Called by EnumWindows. - */ - -wBOOL CALLBACK -winMWExtWMDecorateWindow(HWND hwnd, LPARAM lParam) -{ - win32RootlessWindowPtr pRLWinPriv = NULL; - ScreenPtr pScreen = NULL; - winPrivScreenPtr pScreenPriv = NULL; - winScreenInfo *pScreenInfo = NULL; - - /* Check if the Windows window property for our X window pointer is valid */ - if ((pRLWinPriv = - (win32RootlessWindowPtr) GetProp(hwnd, WIN_WINDOW_PROP)) != NULL) { - if (pRLWinPriv != NULL && pRLWinPriv->pFrame != NULL && - pRLWinPriv->pFrame->win != NULL) - pScreen = pRLWinPriv->pFrame->win->drawable.pScreen; - if (pScreen) - pScreenPriv = winGetScreenPriv(pScreen); - if (pScreenPriv) - pScreenInfo = pScreenPriv->pScreenInfo; - if (pRLWinPriv && pScreenInfo) - winMWExtWMUpdateWindowDecoration(pRLWinPriv, pScreenInfo); - } - return TRUE; -} - -/* - * winMWExtWMUpdateWindowDecoration - Update window style. - */ - -void -winMWExtWMUpdateWindowDecoration(win32RootlessWindowPtr pRLWinPriv, - winScreenInfoPtr pScreenInfo) -{ - Bool fDecorate = FALSE; - DWORD dwExStyle = 0; - WINDOWPLACEMENT wndPlace; - UINT showCmd = 0; - - wndPlace.length = sizeof(WINDOWPLACEMENT); - - /* Get current window placement */ - GetWindowPlacement(pRLWinPriv->hWnd, &wndPlace); - -#if 0 - if (wndPlace.showCmd == SW_HIDE) - return; //showCmd = SWP_HIDEWINDOW; - else - showCmd = SWP_SHOWWINDOW; -#else - if (wndPlace.showCmd == SW_HIDE) - return; - - if (IsWindowVisible(pRLWinPriv->hWnd)) - showCmd = SWP_SHOWWINDOW; -#endif - - showCmd |= SWP_NOMOVE | SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOZORDER; - - winDebug("winMWExtWMUpdateWindowDecoration %p %s\n", - pRLWinPriv, fDecorate ? "Decorate" : "Bare"); - - /* Get the extended window style information */ - dwExStyle = GetWindowLongPtr(pRLWinPriv->hWnd, GWL_EXSTYLE); - - if (fDecorate) { - RECT rcNew; - int iDx, iDy; - winWMMessageRec wmMsg; - - winScreenPriv(pScreenInfo->pScreen); - - /* */ - if (!(dwExStyle & WS_EX_APPWINDOW)) { - winDebug("\tBare=>Decorate\n"); - /* Setup a rectangle with the X window position and size */ - SetRect(&rcNew, - pRLWinPriv->pFrame->x, - pRLWinPriv->pFrame->y, - pRLWinPriv->pFrame->x + pRLWinPriv->pFrame->width, - pRLWinPriv->pFrame->y + pRLWinPriv->pFrame->height); - -#ifdef CYGMULTIWINDOW_DEBUG - winDebug("\tWindow extend {%d, %d, %d, %d}, {%d, %d}\n", - (int)rcNew.left, (int)rcNew.top, (int)rcNew.right, (int)rcNew.bottom, - (int)(rcNew.right - rcNew.left), (int)(rcNew.bottom - rcNew.top)); -#endif - /* */ - AdjustWindowRectEx(&rcNew, - WS_POPUP | WS_SIZEBOX | WS_OVERLAPPEDWINDOW, - FALSE, WS_EX_APPWINDOW); - -#ifdef CYGMULTIWINDOW_DEBUG - winDebug("\tAdjusted {%d, %d, %d, %d}, {%d, %d}\n", - (int)rcNew.left, (int)rcNew.top, (int)rcNew.right, (int)rcNew.bottom, - (int)(rcNew.right - rcNew.left), (int)(rcNew.bottom - rcNew.top)); -#endif - /* Calculate position deltas */ - iDx = pRLWinPriv->pFrame->x - rcNew.left; - iDy = pRLWinPriv->pFrame->y - rcNew.top; - - /* Calculate new rectangle */ - rcNew.left += iDx; - rcNew.right += iDx; - rcNew.top += iDy; - rcNew.bottom += iDy; - - /* Set the window extended style flags */ - SetWindowLongPtr(pRLWinPriv->hWnd, GWL_EXSTYLE, WS_EX_APPWINDOW); - - /* Set the window standard style flags */ - SetWindowLongPtr(pRLWinPriv->hWnd, GWL_STYLE, - WS_POPUP | WS_SIZEBOX | WS_OVERLAPPEDWINDOW); - -#ifdef CYGMULTIWINDOW_DEBUG - winDebug("\tWindowStyle: %08x %08x\n", - (int)(WS_POPUP | WS_SIZEBOX | WS_OVERLAPPEDWINDOW), - (int)(WS_EX_APPWINDOW)); -#endif - /* Position the Windows window */ -#ifdef CYGMULTIWINDOW_DEBUG - winDebug("\tMoved {%d, %d, %d, %d}, {%d, %d}\n", - (int)rcNew.left, (int)rcNew.top, (int)rcNew.right, (int)rcNew.bottom, - (int)(rcNew.right - rcNew.left), (int)(rcNew.bottom - rcNew.top)); -#endif - SetWindowPos(pRLWinPriv->hWnd, NULL, - rcNew.left, rcNew.top, - rcNew.right - rcNew.left, rcNew.bottom - rcNew.top, - showCmd); - - wmMsg.hwndWindow = pRLWinPriv->hWnd; - wmMsg.iWindow = (Window) pRLWinPriv->pFrame->win->drawable.id; - wmMsg.msg = WM_WM_NAME_EVENT; - winSendMessageToWM(pScreenPriv->pWMInfo, &wmMsg); - - winMWExtWMReshapeFrame((RootlessFrameID) pRLWinPriv, - wBoundingShape(pRLWinPriv->pFrame->win)); - } - } - else { - RECT rcNew; - - /* */ - if (dwExStyle & WS_EX_APPWINDOW) { - winDebug("\tDecorate=>Bare\n"); - /* Setup a rectangle with the X window position and size */ - SetRect(&rcNew, - pRLWinPriv->pFrame->x, - pRLWinPriv->pFrame->y, - pRLWinPriv->pFrame->x + pRLWinPriv->pFrame->width, - pRLWinPriv->pFrame->y + pRLWinPriv->pFrame->height); -#if 0 - /* */ - AdjustWindowRectEx(&rcNew, - WS_POPUP | WS_CLIPCHILDREN, - FALSE, WS_EX_TOOLWINDOW); - - /* Calculate position deltas */ - iDx = pRLWinPriv->pFrame->x - rcNew.left; - iDy = pRLWinPriv->pFrame->y - rcNew.top; - - /* Calculate new rectangle */ - rcNew.left += iDx; - rcNew.right += iDx; - rcNew.top += iDy; - rcNew.bottom += iDy; -#endif - - /* Hide window temporary to remove from taskbar. */ - ShowWindow(pRLWinPriv->hWnd, SW_HIDE); - - /* Set the window extended style flags */ - SetWindowLongPtr(pRLWinPriv->hWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW); - - /* Set the window standard style flags */ - SetWindowLongPtr(pRLWinPriv->hWnd, GWL_STYLE, - WS_POPUP | WS_CLIPCHILDREN); - - /* Position the Windows window */ - SetWindowPos(pRLWinPriv->hWnd, NULL, - rcNew.left, rcNew.top, - rcNew.right - rcNew.left, rcNew.bottom - rcNew.top, - showCmd); - - winMWExtWMReshapeFrame((RootlessFrameID) pRLWinPriv, - wBoundingShape(pRLWinPriv->pFrame->win)); - } - } -} - -/* - * winMWExtWMRestackWindows - */ - -void -winMWExtWMRestackWindows(ScreenPtr pScreen) -{ - winScreenPriv(pScreen); - WindowPtr pRoot = pScreen->root; - WindowPtr pWin = NULL; - WindowPtr pWinPrev = NULL; - win32RootlessWindowPtr pRLWin = NULL; - win32RootlessWindowPtr pRLWinPrev = NULL; - int nWindow = 0; - HDWP hWinPosInfo = NULL; - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMRestackWindows\n"); -#endif - - pScreenPriv->fRestacking = TRUE; - - if (pRoot != NULL) { - for (pWin = pRoot->firstChild; pWin; pWin = pWin->nextSib) - nWindow++; - - hWinPosInfo = BeginDeferWindowPos(nWindow); - - for (pWin = pRoot->firstChild; pWin; pWin = pWin->nextSib) { - if (pWin->realized) { - UINT uFlags; - - pRLWin = - (win32RootlessWindowPtr) RootlessFrameForWindow(pWin, - FALSE); - if (pRLWin == NULL) - continue; - - if (pWinPrev) - pRLWinPrev = - (win32RootlessWindowPtr) - RootlessFrameForWindow(pWinPrev, FALSE); - - uFlags = SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW; - if (pRLWinPrev != NULL) - uFlags |= SWP_NOACTIVATE; - -#if CYGMULTIWINDOW_DEBUG - winDebug - ("winMWExtWMRestackWindows - DeferWindowPos (%p, %p)\n", - pRLWin->hWnd, pRLWinPrev ? pRLWinPrev->hWnd : HWND_TOP); -#endif - hWinPosInfo = DeferWindowPos(hWinPosInfo, pRLWin->hWnd, - pRLWinPrev ? pRLWinPrev-> - hWnd : HWND_TOP, 0, 0, 0, 0, - uFlags); - if (hWinPosInfo == NULL) { - ErrorF - ("winMWExtWMRestackWindows - DeferWindowPos () failed: %d\n", - (int) GetLastError()); - return; - } - pWinPrev = pWin; - } - } - if (!EndDeferWindowPos(hWinPosInfo)) { - ErrorF - ("winMWExtWMRestackWindows - EndDeferWindowPos () failed: %d\n", - (int) GetLastError()); - return; - } - } - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMRestackWindows - done\n"); -#endif - pScreenPriv->fRestacking = FALSE; -} diff --git a/hw/xwin/winwin32rootlesswndproc.c b/hw/xwin/winwin32rootlesswndproc.c deleted file mode 100644 index 85c9cbf22..000000000 --- a/hw/xwin/winwin32rootlesswndproc.c +++ /dev/null @@ -1,1081 +0,0 @@ -/* - *Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved. - * - *Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - *"Software"), to deal in the Software without restriction, including - *without limitation the rights to use, copy, modify, merge, publish, - *distribute, sublicense, and/or sell copies of the Software, and to - *permit persons to whom the Software is furnished to do so, subject to - *the following conditions: - * - *The above copyright notice and this permission notice shall be - *included in all copies or substantial portions of the Software. - * - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - *EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - *MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - *NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR - *ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - *CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - *WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - *Except as contained in this notice, the name of the XFree86 Project - *shall not be used in advertising or otherwise to promote the sale, use - *or other dealings in this Software without prior written authorization - *from the XFree86 Project. - * - * Authors: Kensuke Matsuzaki - * Earle F. Philhower, III - * Harold L Hunt II - */ -#ifdef HAVE_XWIN_CONFIG_H -#include <xwin-config.h> -#endif -#include "win.h" -#include <winuser.h> -#define _WINDOWSWM_SERVER_ -#include <X11/extensions/windowswmstr.h> -#include "dixevents.h" -#include "propertyst.h" -#include <X11/Xatom.h> -#include "winmultiwindowclass.h" -#include "winmsg.h" -#include "inputstr.h" -#include "wmutil/keyboard.h" - -/* - * Constant defines - */ - -#define MOUSE_ACTIVATE_DEFAULT TRUE -#define RAISE_ON_CLICK_DEFAULT FALSE - -/* - * Local globals - */ - -static UINT_PTR g_uipMousePollingTimerID = 0; - -/* - * Local function - */ - -DEFINE_ATOM_HELPER(AtmWindowsWMMouseActivate, WINDOWSWM_MOUSE_ACTIVATE) -/* DEFINE_ATOM_HELPER(AtmWindowsWMClientWindow, WINDOWSWM_CLIENT_WINDOW) */ - -/* - * ConstrainSize - Taken from TWM sources - Respects hints for sizing - */ -#define makemult(a,b) ((b==1) ? (a) : (((int)((a)/(b))) * (b)) ) -static void -ConstrainSize(WinXSizeHints hints, int *widthp, int *heightp) -{ - int minWidth, minHeight, maxWidth, maxHeight, xinc, yinc, delta; - int baseWidth, baseHeight; - int dwidth = *widthp, dheight = *heightp; - - if (hints.flags & PMinSize) { - minWidth = hints.min_width; - minHeight = hints.min_height; - } - else if (hints.flags & PBaseSize) { - minWidth = hints.base_width; - minHeight = hints.base_height; - } - else - minWidth = minHeight = 1; - - if (hints.flags & PBaseSize) { - baseWidth = hints.base_width; - baseHeight = hints.base_height; - } - else if (hints.flags & PMinSize) { - baseWidth = hints.min_width; - baseHeight = hints.min_height; - } - else - baseWidth = baseHeight = 0; - - if (hints.flags & PMaxSize) { - maxWidth = hints.max_width; - maxHeight = hints.max_height; - } - else { - maxWidth = MAXINT; - maxHeight = MAXINT; - } - - if (hints.flags & PResizeInc) { - xinc = hints.width_inc; - yinc = hints.height_inc; - } - else - xinc = yinc = 1; - - /* - * First, clamp to min and max values - */ - if (dwidth < minWidth) - dwidth = minWidth; - if (dheight < minHeight) - dheight = minHeight; - - if (dwidth > maxWidth) - dwidth = maxWidth; - if (dheight > maxHeight) - dheight = maxHeight; - - /* - * Second, fit to base + N * inc - */ - dwidth = ((dwidth - baseWidth) / xinc * xinc) + baseWidth; - dheight = ((dheight - baseHeight) / yinc * yinc) + baseHeight; - - /* - * Third, adjust for aspect ratio - */ - - /* - * The math looks like this: - * - * minAspectX dwidth maxAspectX - * ---------- <= ------- <= ---------- - * minAspectY dheight maxAspectY - * - * If that is multiplied out, then the width and height are - * invalid in the following situations: - * - * minAspectX * dheight > minAspectY * dwidth - * maxAspectX * dheight < maxAspectY * dwidth - * - */ - - if (hints.flags & PAspect) { - if (hints.min_aspect.x * dheight > hints.min_aspect.y * dwidth) { - delta = - makemult(hints.min_aspect.x * dheight / hints.min_aspect.y - - dwidth, xinc); - if (dwidth + delta <= maxWidth) - dwidth += delta; - else { - delta = - makemult(dheight - - dwidth * hints.min_aspect.y / hints.min_aspect.x, - yinc); - if (dheight - delta >= minHeight) - dheight -= delta; - } - } - - if (hints.max_aspect.x * dheight < hints.max_aspect.y * dwidth) { - delta = - makemult(dwidth * hints.max_aspect.y / hints.max_aspect.x - - dheight, yinc); - if (dheight + delta <= maxHeight) - dheight += delta; - else { - delta = - makemult(dwidth - - hints.max_aspect.x * dheight / hints.max_aspect.y, - xinc); - if (dwidth - delta >= minWidth) - dwidth -= delta; - } - } - } - - /* Return computed values */ - *widthp = dwidth; - *heightp = dheight; -} - -#undef makemult - -/* - * ValidateSizing - Ensures size request respects hints - */ -static int -ValidateSizing(HWND hwnd, WindowPtr pWin, WPARAM wParam, LPARAM lParam) -{ - WinXSizeHints sizeHints; - RECT *rect; - int iWidth, iHeight, iTopBorder; - POINT pt; - - /* Invalid input checking */ - if (pWin == NULL || lParam == 0) { - ErrorF("Invalid input checking\n"); - return FALSE; - } - - /* No size hints, no checking */ - if (!winMultiWindowGetWMNormalHints(pWin, &sizeHints)) { - ErrorF("No size hints, no checking\n"); - return FALSE; - } - - /* Avoid divide-by-zero */ - if (sizeHints.flags & PResizeInc) { - if (sizeHints.width_inc == 0) - sizeHints.width_inc = 1; - if (sizeHints.height_inc == 0) - sizeHints.height_inc = 1; - } - - rect = (RECT *) lParam; - - iWidth = rect->right - rect->left; - iHeight = rect->bottom - rect->top; - - /* Get title bar height, there must be an easier way?! */ - pt.x = pt.y = 0; - ClientToScreen(hwnd, &pt); - iTopBorder = pt.y - rect->top; - - /* Now remove size of any borders */ - iWidth -= 2 * GetSystemMetrics(SM_CXSIZEFRAME); - iHeight -= GetSystemMetrics(SM_CYSIZEFRAME) + iTopBorder; - - /* Constrain the size to legal values */ - ConstrainSize(sizeHints, &iWidth, &iHeight); - - /* Add back the borders */ - iWidth += 2 * GetSystemMetrics(SM_CXSIZEFRAME); - iHeight += GetSystemMetrics(SM_CYSIZEFRAME) + iTopBorder; - - /* Adjust size according to where we're dragging from */ - switch (wParam) { - case WMSZ_TOP: - case WMSZ_TOPRIGHT: - case WMSZ_BOTTOM: - case WMSZ_BOTTOMRIGHT: - case WMSZ_RIGHT: - rect->right = rect->left + iWidth; - break; - default: - rect->left = rect->right - iWidth; - break; - } - switch (wParam) { - case WMSZ_BOTTOM: - case WMSZ_BOTTOMRIGHT: - case WMSZ_BOTTOMLEFT: - case WMSZ_RIGHT: - case WMSZ_LEFT: - rect->bottom = rect->top + iHeight; - break; - default: - rect->top = rect->bottom - iHeight; - break; - } - return TRUE; -} - -/* - * IsMouseActive - */ - -static Bool -IsMouseActive(WindowPtr pWin) -{ - - struct _Window *pwin; - struct _Property *prop; - - /* XXX We're getting inputInfo.poniter here, but this might be really wrong. - * Which pointer's current window do we want? */ - WindowPtr pRoot = GetCurrentRootWindow(inputInfo.pointer); - - if (!pWin) { - ErrorF("IsMouseActive - pWin was NULL use default value:%d\n", - MOUSE_ACTIVATE_DEFAULT); - return MOUSE_ACTIVATE_DEFAULT; - } - - pwin = (struct _Window *) pWin; - - if (pwin->optional) - prop = (struct _Property *) pwin->optional->userProps; - else - prop = NULL; - - while (prop) { - if (prop->propertyName == AtmWindowsWMMouseActivate() - && prop->type == XA_INTEGER && prop->format == 32) { - return *(int *) prop->data; - } - else - prop = prop->next; - } - - if (pWin != pRoot) { - return IsMouseActive(pRoot); - } - else { -#if CYGMULTIWINDOW_DEBUG - winDebug("IsMouseActive - no prop use default value:%d\n", - MOUSE_ACTIVATE_DEFAULT); -#endif - return MOUSE_ACTIVATE_DEFAULT; - } -} - -/* - * winMWExtWMWindowProc - Window procedure - */ - -LRESULT CALLBACK -winMWExtWMWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - WindowPtr pWin = NULL; - win32RootlessWindowPtr pRLWinPriv = NULL; - ScreenPtr pScreen = NULL; - winPrivScreenPtr pScreenPriv = NULL; - winScreenInfo *pScreenInfo = NULL; - HWND hwndScreen = NULL; - POINT ptMouse; - static Bool s_fTracking = FALSE; - HDC hdcUpdate; - PAINTSTRUCT ps; - LPWINDOWPOS pWinPos = NULL; - RECT rcClient; - - /* Check if the Windows window property for our X window pointer is valid */ - if ((pRLWinPriv = - (win32RootlessWindowPtr) GetProp(hwnd, WIN_WINDOW_PROP)) != NULL) { - pWin = pRLWinPriv->pFrame->win; - pScreen = pWin->drawable.pScreen; - if (pScreen) - pScreenPriv = winGetScreenPriv(pScreen); - if (pScreenPriv) - pScreenInfo = pScreenPriv->pScreenInfo; - if (pScreenPriv) - hwndScreen = pScreenPriv->hwndScreen; - -#if CYGDEBUG - winDebugWin32Message("winMWExtWMWindowProc", hwnd, message, wParam, - lParam); - - winDebug("\thWnd %p\n", hwnd); - winDebug("\tpScreenPriv %p\n", pScreenPriv); - winDebug("\tpScreenInfo %p\n", pScreenInfo); - winDebug("\thwndScreen %p\n", hwndScreen); - winDebug("winMWExtWMWindowProc (%p) %08x %08x %08x\n", - pRLWinPriv, message, (int)wParam, (int)lParam); -#endif - } - /* Branch on message type */ - switch (message) { - case WM_CREATE: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_CREATE\n"); -#endif - /* */ - SetProp(hwnd, - WIN_WINDOW_PROP, - (HANDLE) ((LPCREATESTRUCT) lParam)->lpCreateParams); - return 0; - - case WM_CLOSE: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_CLOSE %d\n", pRLWinPriv->fClose); -#endif - /* Tell window-manager to close window */ - if (pRLWinPriv->fClose) { - DestroyWindow(hwnd); - } - else { - winWindowsWMSendEvent(WindowsWMControllerNotify, - WindowsWMControllerNotifyMask, - 1, - WindowsWMCloseWindow, - pWin->drawable.id, 0, 0, 0, 0); - } - return 0; - - case WM_DESTROY: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_DESTROY\n"); -#endif - /* Free the shaodw DC; which allows the bitmap to be freed */ - DeleteDC(pRLWinPriv->hdcShadow); - pRLWinPriv->hdcShadow = NULL; - - /* Free the shadow bitmap */ - DeleteObject(pRLWinPriv->hbmpShadow); - pRLWinPriv->hbmpShadow = NULL; - - /* Free the screen DC */ - ReleaseDC(pRLWinPriv->hWnd, pRLWinPriv->hdcScreen); - pRLWinPriv->hdcScreen = NULL; - - /* Free shadow buffer info header */ - free(pRLWinPriv->pbmihShadow); - pRLWinPriv->pbmihShadow = NULL; - - pRLWinPriv->fResized = FALSE; - pRLWinPriv->pfb = NULL; - free(pRLWinPriv); - RemoveProp(hwnd, WIN_WINDOW_PROP); - break; - - case WM_MOUSEMOVE: -#if CYGMULTIWINDOW_DEBUG && 0 - winDebug("winMWExtWMWindowProc - WM_MOUSEMOVE\n"); -#endif - /* Unpack the client area mouse coordinates */ - ptMouse.x = GET_X_LPARAM(lParam); - ptMouse.y = GET_Y_LPARAM(lParam); - - /* Translate the client area mouse coordinates to screen coordinates */ - ClientToScreen(hwnd, &ptMouse); - - /* Screen Coords from (-X, -Y) -> Root Window (0, 0) */ - ptMouse.x -= GetSystemMetrics(SM_XVIRTUALSCREEN); - ptMouse.y -= GetSystemMetrics(SM_YVIRTUALSCREEN); - - /* We can't do anything without privates */ - if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput) - break; - - /* Has the mouse pointer crossed screens? */ - if (pScreen != miPointerGetScreen(inputInfo.pointer)) - miPointerSetScreen(inputInfo.pointer, pScreenInfo->dwScreen, - ptMouse.x - pScreenInfo->dwXOffset, - ptMouse.y - pScreenInfo->dwYOffset); - - /* Are we tracking yet? */ - if (!s_fTracking) { - TRACKMOUSEEVENT tme; - - /* Setup data structure */ - ZeroMemory(&tme, sizeof(tme)); - tme.cbSize = sizeof(tme); - tme.dwFlags = TME_LEAVE; - tme.hwndTrack = hwnd; - - /* Call the tracking function */ - if (!TrackMouseEvent(&tme)) - ErrorF("winMWExtWMWindowProc - TrackMouseEvent failed\n"); - - /* Flag that we are tracking now */ - s_fTracking = TRUE; - } - - /* Kill the timer used to poll mouse events */ - if (g_uipMousePollingTimerID != 0) { - KillTimer(pScreenPriv->hwndScreen, WIN_POLLING_MOUSE_TIMER_ID); - g_uipMousePollingTimerID = 0; - } - - /* Deliver absolute cursor position to X Server */ - winEnqueueMotion(ptMouse.x - pScreenInfo->dwXOffset, - ptMouse.y - pScreenInfo->dwYOffset); - - return 0; - - case WM_NCMOUSEMOVE: -#if CYGMULTIWINDOW_DEBUG && 0 - winDebug("winMWExtWMWindowProc - WM_NCMOUSEMOVE\n"); -#endif - /* - * We break instead of returning 0 since we need to call - * DefWindowProc to get the mouse cursor changes - * and min/max/close button highlighting in Windows XP. - * The Platform SDK says that you should return 0 if you - * process this message, but it fails to mention that you - * will give up any default functionality if you do return 0. - */ - - /* We can't do anything without privates */ - if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput) - break; - - /* - * Timer to poll mouse events. This is needed to make - * programs like xeyes follow the mouse properly. - */ - if (g_uipMousePollingTimerID == 0) - g_uipMousePollingTimerID = SetTimer(pScreenPriv->hwndScreen, - WIN_POLLING_MOUSE_TIMER_ID, - MOUSE_POLLING_INTERVAL, NULL); - break; - - case WM_MOUSELEAVE: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_MOUSELEAVE\n"); -#endif - /* Mouse has left our client area */ - - /* Flag that we are no longer tracking */ - s_fTracking = FALSE; - - /* - * Timer to poll mouse events. This is needed to make - * programs like xeyes follow the mouse properly. - */ - if (g_uipMousePollingTimerID == 0) - g_uipMousePollingTimerID = SetTimer(pScreenPriv->hwndScreen, - WIN_POLLING_MOUSE_TIMER_ID, - MOUSE_POLLING_INTERVAL, NULL); - return 0; - - case WM_LBUTTONDBLCLK: - case WM_LBUTTONDOWN: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_LBUTTONDBLCLK\n"); -#endif - if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput) - break; - SetCapture(hwnd); - return winMouseButtonsHandle(pScreen, ButtonPress, Button1, wParam); - - case WM_LBUTTONUP: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_LBUTTONUP\n"); -#endif - if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput) - break; - ReleaseCapture(); - return winMouseButtonsHandle(pScreen, ButtonRelease, Button1, wParam); - - case WM_MBUTTONDBLCLK: - case WM_MBUTTONDOWN: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_MBUTTONDBLCLK\n"); -#endif - if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput) - break; - SetCapture(hwnd); - return winMouseButtonsHandle(pScreen, ButtonPress, Button2, wParam); - - case WM_MBUTTONUP: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_MBUTTONUP\n"); -#endif - if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput) - break; - ReleaseCapture(); - return winMouseButtonsHandle(pScreen, ButtonRelease, Button2, wParam); - - case WM_RBUTTONDBLCLK: - case WM_RBUTTONDOWN: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_RBUTTONDBLCLK\n"); -#endif - if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput) - break; - SetCapture(hwnd); - return winMouseButtonsHandle(pScreen, ButtonPress, Button3, wParam); - - case WM_RBUTTONUP: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_RBUTTONUP\n"); -#endif - if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput) - break; - ReleaseCapture(); - return winMouseButtonsHandle(pScreen, ButtonRelease, Button3, wParam); - - case WM_XBUTTONDBLCLK: - case WM_XBUTTONDOWN: - if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput) - break; - SetCapture(hwnd); - return winMouseButtonsHandle(pScreen, ButtonPress, HIWORD(wParam) + 7, - wParam); - case WM_XBUTTONUP: - if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput) - break; - ReleaseCapture(); - return winMouseButtonsHandle(pScreen, ButtonRelease, HIWORD(wParam) + 7, - wParam); - - case WM_MOUSEWHEEL: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_MOUSEWHEEL\n"); -#endif - - /* Pass the message to the root window */ - SendMessage(hwndScreen, message, wParam, lParam); - return 0; - - case WM_MOUSEHWHEEL: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_MOUSEHWHEEL\n"); -#endif - - /* Pass the message to the root window */ - SendMessage(hwndScreen, message, wParam, lParam); - return 0; - - case WM_MOUSEACTIVATE: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_MOUSEACTIVATE\n"); -#endif - if (!IsMouseActive(pWin)) - return MA_NOACTIVATE; - - break; - - case WM_KILLFOCUS: - /* Pop any pressed keys since we are losing keyboard focus */ - winKeybdReleaseKeys(); - return 0; - - case WM_SYSDEADCHAR: - case WM_DEADCHAR: - /* - * NOTE: We do nothing with WM_*CHAR messages, - * nor does the root window, so we can just toss these messages. - */ - return 0; - - case WM_SYSKEYDOWN: - case WM_KEYDOWN: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_*KEYDOWN\n"); -#endif - - /* - * Don't pass Alt-F4 key combo to root window, - * let Windows translate to WM_CLOSE and close this top-level window. - * - * NOTE: We purposely don't check the fUseWinKillKey setting because - * it should only apply to the key handling for the root window, - * not for top-level window-manager windows. - * - * ALSO NOTE: We do pass Ctrl-Alt-Backspace to the root window - * because that is a key combo that no X app should be expecting to - * receive, since it has historically been used to shutdown the X server. - * Passing Ctrl-Alt-Backspace to the root window preserves that - * behavior, assuming that -unixkill has been passed as a parameter. - */ - if (wParam == VK_F4 && (GetKeyState(VK_MENU) & 0x8000)) - break; - - /* Pass the message to the root window */ - SendMessage(hwndScreen, message, wParam, lParam); - return 0; - - case WM_SYSKEYUP: - case WM_KEYUP: - -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_*KEYUP\n"); -#endif - - /* Pass the message to the root window */ - SendMessage(hwndScreen, message, wParam, lParam); - return 0; - - case WM_HOTKEY: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_HOTKEY\n"); -#endif - - /* Pass the message to the root window */ - SendMessage(hwndScreen, message, wParam, lParam); - return 0; - - case WM_ERASEBKGND: -#if CYGDEBUG - winDebug("winMWExtWMWindowProc - WM_ERASEBKGND\n"); -#endif - /* - * Pretend that we did erase the background but we don't care, - * since we repaint the entire region anyhow - * This avoids some flickering when resizing. - */ - return TRUE; - - case WM_PAINT: - - /* BeginPaint gives us an hdc that clips to the invalidated region */ - hdcUpdate = BeginPaint(hwnd, &ps); - - /* Try to copy from the shadow buffer */ - if (!BitBlt(hdcUpdate, - ps.rcPaint.left, ps.rcPaint.top, - ps.rcPaint.right - ps.rcPaint.left, - ps.rcPaint.bottom - ps.rcPaint.top, - pRLWinPriv->hdcShadow, - ps.rcPaint.left, ps.rcPaint.top, SRCCOPY)) { - LPVOID lpMsgBuf; - - /* Display a fancy error message */ - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - GetLastError(), - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &lpMsgBuf, 0, NULL); - - ErrorF("winMWExtWMWindowProc - BitBlt failed: %s\n", - (LPSTR) lpMsgBuf); - LocalFree(lpMsgBuf); - } - - /* EndPaint frees the DC */ - EndPaint(hwnd, &ps); - break; - - case WM_ACTIVATE: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_ACTIVATE\n"); -#endif - if (LOWORD(wParam) != WA_INACTIVE) { - winWindowsWMSendEvent(WindowsWMControllerNotify, - WindowsWMControllerNotifyMask, - 1, - WindowsWMActivateWindow, - pWin->drawable.id, 0, 0, 0, 0); - } - return 0; - -#if 1 - case WM_WINDOWPOSCHANGING: - pWinPos = (LPWINDOWPOS) lParam; - if (!(pWinPos->flags & SWP_NOZORDER)) { - if (pRLWinPriv->fRestackingNow || pScreenPriv->fRestacking) { -#if CYGMULTIWINDOW_DEBUG - winDebug("Win %p is now restacking.\n", - pRLWinPriv); -#endif - break; - } - -#if CYGMULTIWINDOW_DEBUG - winDebug("Win %p forbid to change z order (%p).\n", - pRLWinPriv, - pWinPos->hwndInsertAfter); -#endif - pWinPos->flags |= SWP_NOZORDER; - } - break; -#endif - - case WM_MOVE: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_MOVE\n"); -#endif - if (g_fNoConfigureWindow) - break; -#if 0 - /* Bail if Windows window is not actually moving */ - if (pRLWinPriv->dwX == (short) LOWORD(lParam) - && pRLWinPriv->dwY == (short) HIWORD(lParam)) - break; - - /* Also bail if we're maximizing, we'll do the whole thing in WM_SIZE */ - { - WINDOWPLACEMENT windPlace; - - windPlace.length = sizeof(WINDOWPLACEMENT); - - /* Get current window placement */ - GetWindowPlacement(hwnd, &windPlace); - - /* Bail if maximizing */ - if (windPlace.showCmd == SW_MAXIMIZE - || windPlace.showCmd == SW_SHOWMAXIMIZED) - break; - } -#endif - -#if CYGMULTIWINDOW_DEBUG - winDebug("\t(%d, %d)\n", (short) LOWORD(lParam), - (short) HIWORD(lParam)); -#endif - if (!pRLWinPriv->fMovingOrSizing) { - winMWExtWMMoveXWindow(pWin, (LOWORD(lParam) - wBorderWidth(pWin) - - GetSystemMetrics(SM_XVIRTUALSCREEN)), - (HIWORD(lParam) - wBorderWidth(pWin) - - GetSystemMetrics(SM_YVIRTUALSCREEN))); - } - return 0; - - case WM_SHOWWINDOW: -#if CYGMULTIWINDOW_DEBUG || TRUE - winDebug("winMWExtWMWindowProc - WM_SHOWWINDOW\n"); -#endif - /* Bail out if the window is being hidden */ - if (!wParam) - return 0; - - winMWExtWMUpdateWindowDecoration(pRLWinPriv, pScreenInfo); - - break; - - case WM_SIZING: - /* Need to legalize the size according to WM_NORMAL_HINTS */ - /* for applications like xterm */ - return ValidateSizing(hwnd, pWin, wParam, lParam); - - case WM_WINDOWPOSCHANGED: - { - pWinPos = (LPWINDOWPOS) lParam; -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_WINDOWPOSCHANGED\n"); - winDebug("\tflags: %s%s%s%s%s%s%s%s%s%s%s%s\n", - (pWinPos->flags & SWP_DRAWFRAME) ? "SWP_DRAWFRAME " : "", - (pWinPos->flags & SWP_FRAMECHANGED) ? "SWP_FRAMECHANGED " : "", - (pWinPos->flags & SWP_HIDEWINDOW) ? "SWP_HIDEWINDOW " : "", - (pWinPos->flags & SWP_NOACTIVATE) ? "SWP_NOACTIVATE " : "", - (pWinPos->flags & SWP_NOCOPYBITS) ? "SWP_NOCOPYBITS " : "", - (pWinPos->flags & SWP_NOMOVE) ? "SWP_NOMOVE " : "", - (pWinPos-> - flags & SWP_NOOWNERZORDER) ? "SWP_NOOWNERZORDER " : "", - (pWinPos->flags & SWP_NOSIZE) ? "SWP_NOSIZE " : "", - (pWinPos->flags & SWP_NOREDRAW) ? "SWP_NOREDRAW " : "", - (pWinPos-> - flags & SWP_NOSENDCHANGING) ? "SWP_NOSENDCHANGING " : "", - (pWinPos->flags & SWP_NOZORDER) ? "SWP_NOZORDER " : "", - (pWinPos->flags & SWP_SHOWWINDOW) ? "SWP_SHOWWINDOW " : ""); - winDebug("\tno_configure: %s\n", (g_fNoConfigureWindow ? "Yes" : "No")); - winDebug("\textend: (%d, %d, %d, %d)\n", - pWinPos->x, pWinPos->y, pWinPos->cx, pWinPos->cy); - -#endif - if (pWinPos->flags & SWP_HIDEWINDOW) - break; - - if (!(pWinPos->flags & SWP_NOSIZE)) { - if (IsIconic(hwnd)) { -#if CYGMULTIWINDOW_DEBUG - winDebug("\tIconic -> MINIMIZED\n"); -#endif - - winWindowsWMSendEvent(WindowsWMControllerNotify, - WindowsWMControllerNotifyMask, - 1, - WindowsWMMinimizeWindow, - pWin->drawable.id, 0, 0, 0, 0); - } - else if (IsZoomed(hwnd)) { -#if CYGMULTIWINDOW_DEBUG - winDebug("\tZoomed -> MAXIMIZED\n"); -#endif - winWindowsWMSendEvent(WindowsWMControllerNotify, - WindowsWMControllerNotifyMask, - 1, - WindowsWMMaximizeWindow, - pWin->drawable.id, 0, 0, 0, 0); - } - else { -#if CYGMULTIWINDOW_DEBUG - winDebug("\tnone -> RESTORED\n"); -#endif - winWindowsWMSendEvent(WindowsWMControllerNotify, - WindowsWMControllerNotifyMask, - 1, - WindowsWMRestoreWindow, - pWin->drawable.id, 0, 0, 0, 0); - } - } - if (!g_fNoConfigureWindow) { - - if (!pRLWinPriv->fMovingOrSizing - /*&& (pWinPos->flags & SWP_SHOWWINDOW) */ ) { - GetClientRect(hwnd, &rcClient); - MapWindowPoints(hwnd, HWND_DESKTOP, (LPPOINT) &rcClient, 2); - - if (!(pWinPos->flags & SWP_NOMOVE) - && !(pWinPos->flags & SWP_NOSIZE)) { -#if CYGMULTIWINDOW_DEBUG - winDebug("\tmove & resize\n"); -#endif - - winMWExtWMMoveResizeXWindow(pWin, - rcClient.left - - wBorderWidth(pWin) - - - GetSystemMetrics - (SM_XVIRTUALSCREEN), - rcClient.top - - wBorderWidth(pWin) - - - GetSystemMetrics - (SM_YVIRTUALSCREEN), - rcClient.right - rcClient.left - - wBorderWidth(pWin) * 2, - rcClient.bottom - rcClient.top - - wBorderWidth(pWin) * 2); - } - else if (!(pWinPos->flags & SWP_NOMOVE)) { -#if CYGMULTIWINDOW_DEBUG - winDebug("\tmove\n"); -#endif - - winMWExtWMMoveResizeXWindow(pWin, - rcClient.left - - wBorderWidth(pWin) - - - GetSystemMetrics - (SM_XVIRTUALSCREEN), - rcClient.top - - wBorderWidth(pWin) - - - GetSystemMetrics - (SM_YVIRTUALSCREEN), - rcClient.right - rcClient.left - - wBorderWidth(pWin) * 2, - rcClient.bottom - rcClient.top - - wBorderWidth(pWin) * 2); - } - else if (!(pWinPos->flags & SWP_NOMOVE)) { -#if CYGMULTIWINDOW_DEBUG - winDebug("\tmove\n"); -#endif - - winMWExtWMMoveXWindow(pWin, - rcClient.left - wBorderWidth(pWin) - - GetSystemMetrics(SM_XVIRTUALSCREEN), - rcClient.top - wBorderWidth(pWin) - - - GetSystemMetrics(SM_YVIRTUALSCREEN)); - } - else if (!(pWinPos->flags & SWP_NOSIZE)) { -#if CYGMULTIWINDOW_DEBUG - winDebug("\tresize\n"); -#endif - - winMWExtWMResizeXWindow(pWin, - rcClient.right - rcClient.left - - wBorderWidth(pWin) * 2, - rcClient.bottom - rcClient.top - - wBorderWidth(pWin) * 2); - } - } - } - } -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_WINDOWPOSCHANGED - done.\n"); -#endif - return 0; - - case WM_SIZE: - /* see dix/window.c */ - /* FIXME: Maximize/Restore? */ -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_SIZE\n"); -#endif -#if CYGMULTIWINDOW_DEBUG - winDebug("\t(%d, %d) %d\n", (short) LOWORD(lParam), - (short) HIWORD(lParam), g_fNoConfigureWindow); -#endif - if (g_fNoConfigureWindow) - break; - - /* Branch on type of resizing occurring */ - switch (wParam) { - case SIZE_MINIMIZED: -#if CYGMULTIWINDOW_DEBUG - winDebug("\tSIZE_MINIMIZED\n"); -#endif - - winWindowsWMSendEvent(WindowsWMControllerNotify, - WindowsWMControllerNotifyMask, - 1, - WindowsWMMinimizeWindow, - pWin->drawable.id, - 0, 0, LOWORD(lParam), HIWORD(lParam)); - break; - - case SIZE_RESTORED: -#if CYGMULTIWINDOW_DEBUG - winDebug("\tSIZE_RESTORED\n"); -#endif - winWindowsWMSendEvent(WindowsWMControllerNotify, - WindowsWMControllerNotifyMask, - 1, - WindowsWMRestoreWindow, - pWin->drawable.id, - 0, 0, LOWORD(lParam), HIWORD(lParam)); - break; - - case SIZE_MAXIMIZED: -#if CYGMULTIWINDOW_DEBUG - winDebug("\tSIZE_MAXIMIZED\n"); -#endif - winWindowsWMSendEvent(WindowsWMControllerNotify, - WindowsWMControllerNotifyMask, - 1, - WindowsWMMaximizeWindow, - pWin->drawable.id, - 0, 0, LOWORD(lParam), HIWORD(lParam)); - break; - } - - /* Perform the resize and notify the X client */ - if (!pRLWinPriv->fMovingOrSizing) { - winMWExtWMResizeXWindow(pWin, (short) LOWORD(lParam) - - wBorderWidth(pWin) * 2, - (short) HIWORD(lParam) - - wBorderWidth(pWin) * 2); - } - break; - - case WM_ACTIVATEAPP: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_ACTIVATEAPP\n"); -#endif - if (wParam) { - winWindowsWMSendEvent(WindowsWMActivationNotify, - WindowsWMActivationNotifyMask, - 1, - WindowsWMIsActive, - pWin->drawable.id, 0, 0, 0, 0); - } - else { - winWindowsWMSendEvent(WindowsWMActivationNotify, - WindowsWMActivationNotifyMask, - 1, - WindowsWMIsInactive, - pWin->drawable.id, 0, 0, 0, 0); - } - break; - - case WM_SETCURSOR: - if (LOWORD(lParam) == HTCLIENT) { - if (!g_fSoftwareCursor) - SetCursor(pScreenPriv->cursor.handle); - return TRUE; - } - break; - - case WM_ENTERSIZEMOVE: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_ENTERSIZEMOVE\n"); -#endif - pRLWinPriv->fMovingOrSizing = TRUE; - break; - - case WM_EXITSIZEMOVE: -#if CYGMULTIWINDOW_DEBUG - winDebug("winMWExtWMWindowProc - WM_EXITSIZEMOVE\n"); -#endif - pRLWinPriv->fMovingOrSizing = FALSE; - - GetClientRect(hwnd, &rcClient); - - MapWindowPoints(hwnd, HWND_DESKTOP, (LPPOINT) &rcClient, 2); - - winMWExtWMMoveResizeXWindow(pWin, rcClient.left - wBorderWidth(pWin) - - GetSystemMetrics(SM_XVIRTUALSCREEN), - rcClient.top - wBorderWidth(pWin) - - GetSystemMetrics(SM_YVIRTUALSCREEN), - rcClient.right - rcClient.left - - wBorderWidth(pWin) * 2, - rcClient.bottom - rcClient.top - - wBorderWidth(pWin) * 2); - break; - - default: - break; - } - - return DefWindowProc(hwnd, message, wParam, lParam); -} diff --git a/hw/xwin/winwindowswm.c b/hw/xwin/winwindowswm.c deleted file mode 100644 index b9399fae3..000000000 --- a/hw/xwin/winwindowswm.c +++ /dev/null @@ -1,596 +0,0 @@ -/* WindowsWM extension is based on AppleWM extension */ -/************************************************************************** - -Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved. -Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sub license, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice (including the -next paragraph) shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -**************************************************************************/ - -#ifdef HAVE_XWIN_CONFIG_H -#include <xwin-config.h> -#endif -#include "win.h" - -#include "misc.h" -#include "dixstruct.h" -#include "extnsionst.h" -#include "colormapst.h" -#include "cursorstr.h" -#include "scrnintstr.h" -#include "servermd.h" -#include "swaprep.h" -#define _WINDOWSWM_SERVER_ -#include <X11/extensions/windowswmstr.h> -#include "protocol-versions.h" - -static int WMErrorBase; -static unsigned char WMReqCode = 0; -static int WMEventBase = 0; - -static RESTYPE ClientType, eventResourceType; /* resource types for event masks */ -static XID eventResource; - -/* Currently selected events */ -static unsigned int eventMask = 0; - -static int WMFreeClient(void *data, XID id); -static int WMFreeEvents(void *data, XID id); -static void SNotifyEvent(xWindowsWMNotifyEvent * from, - xWindowsWMNotifyEvent * to); - -typedef struct _WMEvent *WMEventPtr; -typedef struct _WMEvent { - WMEventPtr next; - ClientPtr client; - XID clientResource; - unsigned int mask; -} WMEventRec; - -static int -ProcWindowsWMQueryVersion(ClientPtr client) -{ - xWindowsWMQueryVersionReply rep; - - REQUEST_SIZE_MATCH(xWindowsWMQueryVersionReq); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; - rep.majorVersion = SERVER_WINDOWSWM_MAJOR_VERSION; - rep.minorVersion = SERVER_WINDOWSWM_MINOR_VERSION; - rep.patchVersion = SERVER_WINDOWSWM_PATCH_VERSION; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - } - WriteToClient(client, sizeof(xWindowsWMQueryVersionReply), &rep); - return Success; -} - -/* events */ - -static inline void -updateEventMask(WMEventPtr * pHead) -{ - WMEventPtr pCur; - - eventMask = 0; - for (pCur = *pHead; pCur != NULL; pCur = pCur->next) - eventMask |= pCur->mask; -} - - /*ARGSUSED*/ static int -WMFreeClient(void *data, XID id) -{ - WMEventPtr pEvent; - WMEventPtr *pHead, pCur, pPrev; - - pEvent = (WMEventPtr) data; - dixLookupResourceByType((void *) &pHead, eventResource, eventResourceType, - NullClient, DixUnknownAccess); - if (pHead) { - pPrev = 0; - for (pCur = *pHead; pCur && pCur != pEvent; pCur = pCur->next) - pPrev = pCur; - if (pCur) { - if (pPrev) - pPrev->next = pEvent->next; - else - *pHead = pEvent->next; - } - updateEventMask(pHead); - } - free((void *) pEvent); - return 1; -} - - /*ARGSUSED*/ static int -WMFreeEvents(void *data, XID id) -{ - WMEventPtr *pHead, pCur, pNext; - - pHead = (WMEventPtr *) data; - for (pCur = *pHead; pCur; pCur = pNext) { - pNext = pCur->next; - FreeResource(pCur->clientResource, ClientType); - free((void *) pCur); - } - free((void *) pHead); - eventMask = 0; - return 1; -} - -static int -ProcWindowsWMSelectInput(ClientPtr client) -{ - REQUEST(xWindowsWMSelectInputReq); - WMEventPtr pEvent, pNewEvent, *pHead; - XID clientResource; - - REQUEST_SIZE_MATCH(xWindowsWMSelectInputReq); - dixLookupResourceByType((void *) &pHead, eventResource, eventResourceType, - client, DixWriteAccess); - if (stuff->mask != 0) { - if (pHead) { - /* check for existing entry. */ - for (pEvent = *pHead; pEvent; pEvent = pEvent->next) { - if (pEvent->client == client) { - pEvent->mask = stuff->mask; - updateEventMask(pHead); - return Success; - } - } - } - - /* build the entry */ - pNewEvent = malloc(sizeof(WMEventRec)); - if (!pNewEvent) - return BadAlloc; - pNewEvent->next = 0; - pNewEvent->client = client; - pNewEvent->mask = stuff->mask; - /* - * add a resource that will be deleted when - * the client goes away - */ - clientResource = FakeClientID(client->index); - pNewEvent->clientResource = clientResource; - if (!AddResource(clientResource, ClientType, (void *) pNewEvent)) - return BadAlloc; - /* - * create a resource to contain a pointer to the list - * of clients selecting input. This must be indirect as - * the list may be arbitrarily rearranged which cannot be - * done through the resource database. - */ - if (!pHead) { - pHead = malloc(sizeof(WMEventPtr)); - if (!pHead || - !AddResource(eventResource, eventResourceType, (void *) pHead)) - { - FreeResource(clientResource, RT_NONE); - return BadAlloc; - } - *pHead = 0; - } - pNewEvent->next = *pHead; - *pHead = pNewEvent; - updateEventMask(pHead); - } - else if (stuff->mask == 0) { - /* delete the interest */ - if (pHead) { - pNewEvent = 0; - for (pEvent = *pHead; pEvent; pEvent = pEvent->next) { - if (pEvent->client == client) - break; - pNewEvent = pEvent; - } - if (pEvent) { - FreeResource(pEvent->clientResource, ClientType); - if (pNewEvent) - pNewEvent->next = pEvent->next; - else - *pHead = pEvent->next; - free(pEvent); - updateEventMask(pHead); - } - } - } - else { - client->errorValue = stuff->mask; - return BadValue; - } - return Success; -} - -/* - * deliver the event - */ - -void -winWindowsWMSendEvent(int type, unsigned int mask, int which, int arg, - Window window, int x, int y, int w, int h) -{ - WMEventPtr *pHead, pEvent; - ClientPtr client; - xWindowsWMNotifyEvent se; - -#if CYGMULTIWINDOW_DEBUG - ErrorF("winWindowsWMSendEvent %d %d %d %d, %d %d - %d %d\n", - type, mask, which, arg, x, y, w, h); -#endif - dixLookupResourceByType((void *) &pHead, eventResource, eventResourceType, - NullClient, DixUnknownAccess); - if (!pHead) - return; - for (pEvent = *pHead; pEvent; pEvent = pEvent->next) { - client = pEvent->client; -#if CYGMULTIWINDOW_DEBUG - ErrorF("winWindowsWMSendEvent - %p\n", client); -#endif - if ((pEvent->mask & mask) == 0) { - continue; - } -#if CYGMULTIWINDOW_DEBUG - ErrorF("winWindowsWMSendEvent - send\n"); -#endif - se.type = type + WMEventBase; - se.kind = which; - se.window = window; - se.arg = arg; - se.x = x; - se.y = y; - se.w = w; - se.h = h; - se.time = currentTime.milliseconds; - WriteEventsToClient(client, 1, (xEvent *) &se); - } -} - -/* general utility functions */ - -static int -ProcWindowsWMDisableUpdate(ClientPtr client) -{ - REQUEST_SIZE_MATCH(xWindowsWMDisableUpdateReq); - - //winDisableUpdate(); - - return Success; -} - -static int -ProcWindowsWMReenableUpdate(ClientPtr client) -{ - REQUEST_SIZE_MATCH(xWindowsWMReenableUpdateReq); - - //winEnableUpdate(); - - return Success; -} - -/* window functions */ - -static int -ProcWindowsWMSetFrontProcess(ClientPtr client) -{ - REQUEST_SIZE_MATCH(xWindowsWMSetFrontProcessReq); - - //QuartzMessageMainThread(kWindowsSetFrontProcess, NULL, 0); - - return Success; -} - -/* frame functions */ - -static int -ProcWindowsWMFrameGetRect(ClientPtr client) -{ - xWindowsWMFrameGetRectReply rep; - RECT rcNew; - - REQUEST(xWindowsWMFrameGetRectReq); - -#if CYGMULTIWINDOW_DEBUG - ErrorF("ProcWindowsWMFrameGetRect %zu %d\n", - (sizeof(xWindowsWMFrameGetRectReq) >> 2), (int) client->req_len); -#endif - - REQUEST_SIZE_MATCH(xWindowsWMFrameGetRectReq); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; - - if (stuff->frame_rect != 0) { - ErrorF("ProcWindowsWMFrameGetRect - stuff->frame_rect != 0\n"); - return BadValue; - } - - /* Store the origin, height, and width in a rectangle structure */ - SetRect(&rcNew, stuff->ix, stuff->iy, - stuff->ix + stuff->iw, stuff->iy + stuff->ih); - -#if CYGMULTIWINDOW_DEBUG - ErrorF("ProcWindowsWMFrameGetRect - %d %d %d %d\n", - stuff->ix, stuff->iy, stuff->ix + stuff->iw, stuff->iy + stuff->ih); -#endif - - /* - * Calculate the required size of the Windows window rectangle, - * given the size of the Windows window client area. - */ - AdjustWindowRectEx(&rcNew, stuff->frame_style, FALSE, - stuff->frame_style_ex); - rep.x = rcNew.left; - rep.y = rcNew.top; - rep.w = rcNew.right - rcNew.left; - rep.h = rcNew.bottom - rcNew.top; -#if CYGMULTIWINDOW_DEBUG - ErrorF("ProcWindowsWMFrameGetRect - %d %d %d %d\n", - rep.x, rep.y, rep.w, rep.h); -#endif - - WriteToClient(client, sizeof(xWindowsWMFrameGetRectReply), &rep); - return Success; -} - -static int -ProcWindowsWMFrameDraw(ClientPtr client) -{ - REQUEST(xWindowsWMFrameDrawReq); - WindowPtr pWin; - win32RootlessWindowPtr pRLWinPriv; - RECT rcNew; - int nCmdShow, rc; - RegionRec newShape; - - REQUEST_SIZE_MATCH(xWindowsWMFrameDrawReq); - -#if CYGMULTIWINDOW_DEBUG - ErrorF("ProcWindowsWMFrameDraw\n"); -#endif - rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess); - if (rc != Success) - return rc; -#if CYGMULTIWINDOW_DEBUG - ErrorF("ProcWindowsWMFrameDraw - Window found\n"); -#endif - - pRLWinPriv = (win32RootlessWindowPtr) RootlessFrameForWindow(pWin, TRUE); - if (pRLWinPriv == 0) - return BadWindow; - -#if CYGMULTIWINDOW_DEBUG - ErrorF("ProcWindowsWMFrameDraw - HWND %p 0x%08x 0x%08x\n", - pRLWinPriv->hWnd, (int) stuff->frame_style, - (int) stuff->frame_style_ex); - ErrorF("ProcWindowsWMFrameDraw - %d %d %d %d\n", - stuff->ix, stuff->iy, stuff->iw, stuff->ih); -#endif - - /* Store the origin, height, and width in a rectangle structure */ - SetRect(&rcNew, stuff->ix, stuff->iy, - stuff->ix + stuff->iw, stuff->iy + stuff->ih); - - /* - * Calculate the required size of the Windows window rectangle, - * given the size of the Windows window client area. - */ - AdjustWindowRectEx(&rcNew, stuff->frame_style, FALSE, - stuff->frame_style_ex); - - /* Set the window extended style flags */ - if (!SetWindowLongPtr(pRLWinPriv->hWnd, GWL_EXSTYLE, stuff->frame_style_ex)) { - return BadValue; - } - - /* Set the window standard style flags */ - if (!SetWindowLongPtr(pRLWinPriv->hWnd, GWL_STYLE, stuff->frame_style)) { - return BadValue; - } - - /* Flush the window style */ - if (!SetWindowPos(pRLWinPriv->hWnd, NULL, - rcNew.left, rcNew.top, - rcNew.right - rcNew.left, rcNew.bottom - rcNew.top, - SWP_NOZORDER | SWP_FRAMECHANGED | SWP_NOACTIVATE)) { - return BadValue; - } - if (!IsWindowVisible(pRLWinPriv->hWnd)) - nCmdShow = SW_HIDE; - else - nCmdShow = SW_SHOWNA; - - ShowWindow(pRLWinPriv->hWnd, nCmdShow); - - if (wBoundingShape(pWin) != NULL) { - /* wBoundingShape is relative to *inner* origin of window. - Translate by borderWidth to get the outside-relative position. */ - - RegionNull(&newShape); - RegionCopy(&newShape, wBoundingShape(pWin)); - RegionTranslate(&newShape, pWin->borderWidth, pWin->borderWidth); - winMWExtWMReshapeFrame(pRLWinPriv, &newShape); - RegionUninit(&newShape); - } -#if CYGMULTIWINDOW_DEBUG - ErrorF("ProcWindowsWMFrameDraw - done\n"); -#endif - - return Success; -} - -static int -ProcWindowsWMFrameSetTitle(ClientPtr client) -{ - unsigned int title_length, title_max; - char *title_bytes; - - REQUEST(xWindowsWMFrameSetTitleReq); - WindowPtr pWin; - win32RootlessWindowPtr pRLWinPriv; - int rc; - -#if CYGMULTIWINDOW_DEBUG - ErrorF("ProcWindowsWMFrameSetTitle\n"); -#endif - - REQUEST_AT_LEAST_SIZE(xWindowsWMFrameSetTitleReq); - - rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess); - if (rc != Success) - return rc; -#if CYGMULTIWINDOW_DEBUG - ErrorF("ProcWindowsWMFrameSetTitle - Window found\n"); -#endif - - title_length = stuff->title_length; - title_max = (stuff->length << 2) - sizeof(xWindowsWMFrameSetTitleReq); - - if (title_max < title_length) - return BadValue; - -#if CYGMULTIWINDOW_DEBUG - ErrorF("ProcWindowsWMFrameSetTitle - length is valid\n"); -#endif - - title_bytes = malloc(title_length + 1); - strncpy(title_bytes, (char *) &stuff[1], title_length); - title_bytes[title_length] = '\0'; - - pRLWinPriv = (win32RootlessWindowPtr) RootlessFrameForWindow(pWin, FALSE); - - if (pRLWinPriv == 0) { - free(title_bytes); - return BadWindow; - } - - /* Flush the window style */ - SetWindowText(pRLWinPriv->hWnd, title_bytes); - - free(title_bytes); - -#if CYGMULTIWINDOW_DEBUG - ErrorF("ProcWindowsWMFrameSetTitle - done\n"); -#endif - - return Success; -} - -/* dispatch */ - -static int -ProcWindowsWMDispatch(ClientPtr client) -{ - REQUEST(xReq); - - switch (stuff->data) { - case X_WindowsWMQueryVersion: - return ProcWindowsWMQueryVersion(client); - } - - if (!client->local) - return WMErrorBase + WindowsWMClientNotLocal; - - switch (stuff->data) { - case X_WindowsWMSelectInput: - return ProcWindowsWMSelectInput(client); - case X_WindowsWMDisableUpdate: - return ProcWindowsWMDisableUpdate(client); - case X_WindowsWMReenableUpdate: - return ProcWindowsWMReenableUpdate(client); - case X_WindowsWMSetFrontProcess: - return ProcWindowsWMSetFrontProcess(client); - case X_WindowsWMFrameGetRect: - return ProcWindowsWMFrameGetRect(client); - case X_WindowsWMFrameDraw: - return ProcWindowsWMFrameDraw(client); - case X_WindowsWMFrameSetTitle: - return ProcWindowsWMFrameSetTitle(client); - default: - return BadRequest; - } -} - -static void -SNotifyEvent(xWindowsWMNotifyEvent * from, xWindowsWMNotifyEvent * to) -{ - to->type = from->type; - to->kind = from->kind; - cpswaps(from->sequenceNumber, to->sequenceNumber); - cpswapl(from->window, to->window); - cpswapl(from->time, to->time); - cpswapl(from->arg, to->arg); -} - -static int -SProcWindowsWMQueryVersion(ClientPtr client) -{ - REQUEST(xWindowsWMQueryVersionReq); - swaps(&stuff->length); - return ProcWindowsWMQueryVersion(client); -} - -static int -SProcWindowsWMDispatch(ClientPtr client) -{ - REQUEST(xReq); - - /* It is bound to be non-local when there is byte swapping */ - if (!client->local) - return WMErrorBase + WindowsWMClientNotLocal; - - /* only local clients are allowed WM access */ - switch (stuff->data) { - case X_WindowsWMQueryVersion: - return SProcWindowsWMQueryVersion(client); - default: - return BadRequest; - } -} - -void -winWindowsWMExtensionInit(void) -{ - ExtensionEntry *extEntry; - - ClientType = CreateNewResourceType(WMFreeClient, "WMClient"); - eventResourceType = CreateNewResourceType(WMFreeEvents, "WMEvent"); - eventResource = FakeClientID(0); - - if (ClientType && eventResourceType && - (extEntry = AddExtension(WINDOWSWMNAME, - WindowsWMNumberEvents, - WindowsWMNumberErrors, - ProcWindowsWMDispatch, - SProcWindowsWMDispatch, - NULL, StandardMinorOpcode))) { - size_t i; - - WMReqCode = (unsigned char) extEntry->base; - WMErrorBase = extEntry->errorBase; - WMEventBase = extEntry->eventBase; - for (i = 0; i < WindowsWMNumberEvents; i++) - EventSwapVector[WMEventBase + i] = (EventSwapPtr) SNotifyEvent; - } -} diff --git a/hw/xwin/winwndproc.c b/hw/xwin/winwndproc.c index fc33256b4..28e631b47 100644 --- a/hw/xwin/winwndproc.c +++ b/hw/xwin/winwndproc.c @@ -226,14 +226,7 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) use RandR to resize the X screen */ if ((!s_pScreenInfo->fUserGaveHeightAndWidth) && - (s_pScreenInfo->iResizeMode == resizeWithRandr) && (FALSE -#ifdef XWIN_MULTIWINDOWEXTWM - || - s_pScreenInfo-> - fMWExtWM -#endif - || - s_pScreenInfo-> + (s_pScreenInfo->iResizeMode == resizeWithRandr) && (s_pScreenInfo-> fRootless #ifdef XWIN_MULTIWINDOW || @@ -322,9 +315,6 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) /* Break if we do not allow resizing */ if ((s_pScreenInfo->iResizeMode == resizeNotAllowed) || !s_pScreenInfo->fDecoration -#ifdef XWIN_MULTIWINDOWEXTWM - || s_pScreenInfo->fMWExtWM -#endif || s_pScreenInfo->fRootless #ifdef XWIN_MULTIWINDOW || s_pScreenInfo->fMultiWindow @@ -625,9 +615,6 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) if (s_pScreenInfo == NULL || (s_pScreenInfo->iResizeMode != resizeWithScrollbars) || s_pScreenInfo->fFullScreen || !s_pScreenInfo->fDecoration -#ifdef XWIN_MULTIWINDOWEXTWM - || s_pScreenInfo->fMWExtWM -#endif || s_pScreenInfo->fRootless #ifdef XWIN_MULTIWINDOW || s_pScreenInfo->fMultiWindow @@ -810,22 +797,14 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) case WM_LBUTTONDOWN: if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput) break; - if (s_pScreenInfo->fRootless -#ifdef XWIN_MULTIWINDOWEXTWM - || s_pScreenInfo->fMWExtWM -#endif - ) + if (s_pScreenInfo->fRootless) SetCapture(hwnd); return winMouseButtonsHandle(s_pScreen, ButtonPress, Button1, wParam); case WM_LBUTTONUP: if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput) break; - if (s_pScreenInfo->fRootless -#ifdef XWIN_MULTIWINDOWEXTWM - || s_pScreenInfo->fMWExtWM -#endif - ) + if (s_pScreenInfo->fRootless) ReleaseCapture(); return winMouseButtonsHandle(s_pScreen, ButtonRelease, Button1, wParam); @@ -833,22 +812,14 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) case WM_MBUTTONDOWN: if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput) break; - if (s_pScreenInfo->fRootless -#ifdef XWIN_MULTIWINDOWEXTWM - || s_pScreenInfo->fMWExtWM -#endif - ) + if (s_pScreenInfo->fRootless) SetCapture(hwnd); return winMouseButtonsHandle(s_pScreen, ButtonPress, Button2, wParam); case WM_MBUTTONUP: if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput) break; - if (s_pScreenInfo->fRootless -#ifdef XWIN_MULTIWINDOWEXTWM - || s_pScreenInfo->fMWExtWM -#endif - ) + if (s_pScreenInfo->fRootless) ReleaseCapture(); return winMouseButtonsHandle(s_pScreen, ButtonRelease, Button2, wParam); @@ -856,22 +827,14 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) case WM_RBUTTONDOWN: if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput) break; - if (s_pScreenInfo->fRootless -#ifdef XWIN_MULTIWINDOWEXTWM - || s_pScreenInfo->fMWExtWM -#endif - ) + if (s_pScreenInfo->fRootless) SetCapture(hwnd); return winMouseButtonsHandle(s_pScreen, ButtonPress, Button3, wParam); case WM_RBUTTONUP: if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput) break; - if (s_pScreenInfo->fRootless -#ifdef XWIN_MULTIWINDOWEXTWM - || s_pScreenInfo->fMWExtWM -#endif - ) + if (s_pScreenInfo->fRootless) ReleaseCapture(); return winMouseButtonsHandle(s_pScreen, ButtonRelease, Button3, wParam); @@ -879,22 +842,14 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) case WM_XBUTTONDOWN: if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput) break; - if (s_pScreenInfo->fRootless -#ifdef XWIN_MULTIWINDOWEXTWM - || s_pScreenInfo->fMWExtWM -#endif - ) + if (s_pScreenInfo->fRootless) SetCapture(hwnd); return winMouseButtonsHandle(s_pScreen, ButtonPress, HIWORD(wParam) + 7, wParam); case WM_XBUTTONUP: if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput) break; - if (s_pScreenInfo->fRootless -#ifdef XWIN_MULTIWINDOWEXTWM - || s_pScreenInfo->fMWExtWM -#endif - ) + if (s_pScreenInfo->fRootless) ReleaseCapture(); return winMouseButtonsHandle(s_pScreen, ButtonRelease, HIWORD(wParam) + 7, wParam); @@ -1179,14 +1134,6 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) /* Call engine specific screen activation/deactivation function */ (*s_pScreenPriv->pwinActivateApp) (s_pScreen); -#ifdef XWIN_MULTIWINDOWEXTWM - if (s_pScreenPriv->fActive) { - /* Restack all window unless using built-in wm. */ - if (s_pScreenInfo->fMWExtWM) - winMWExtWMRestackWindows(s_pScreen); - } -#endif - return 0; case WM_COMMAND: diff --git a/test/Makefile.am b/test/Makefile.am index c89915c41..db3abbebd 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -156,11 +156,6 @@ libxservertest_la_LIBADD += \ $(top_builddir)/miext/rootless/librootless.la TEST_LDADD += -lXplugin endif - -if XWIN_MULTIWINDOWEXTWM -libxservertest_la_LIBADD += \ - $(top_builddir)/miext/rootless/librootless.la -endif endif libxservertest_la_DEPENDENCIES = $(libxservertest_la_LIBADD) |