More code moved to the X11 driver (bitmap and palette and misc).
diff --git a/windows/clipboard.c b/windows/clipboard.c
index c7af89c..75a1a1e 100644
--- a/windows/clipboard.c
+++ b/windows/clipboard.c
@@ -21,18 +21,14 @@
#include "xmalloc.h"
#include "debug.h"
-#ifndef X_DISPLAY_MISSING
-extern CLIPBOARD_DRIVER X11DRV_CLIPBOARD_Driver;
-#else /* X_DISPLAY_MISSING */
-extern CLIPBOARD_DRIVER TTYDRV_CLIPBOARD_Driver;
-#endif /* X_DISPLAY_MISSING */
-
#define CF_REGFORMATBASE 0xC000
/**************************************************************************
* internal variables
*/
+CLIPBOARD_DRIVER *CLIPBOARD_Driver = NULL;
+
static HQUEUE16 hqClipLock = 0;
static BOOL bCBHasChanged = FALSE;
@@ -72,19 +68,6 @@
return lpFormat;
}
-
-/**************************************************************************
- * CLIPBOARD_GetDriver
- */
-CLIPBOARD_DRIVER *CLIPBOARD_GetDriver()
-{
-#ifndef X_DISPLAY_MISSING
- return &X11DRV_CLIPBOARD_Driver;
-#else /* X_DISPLAY_MISSING */
- return &TTYDRV_CLIPBOARD_Driver;
-#endif /* X_DISPLAY_MISSING */
-};
-
/**************************************************************************
* CLIPBOARD_ResetLock
*/
@@ -267,7 +250,7 @@
hWndClipOwner = hWndClipWindow;
- CLIPBOARD_GetDriver()->pEmptyClipboard();
+ CLIPBOARD_Driver->pEmptyClipboard();
return TRUE;
}
@@ -310,7 +293,7 @@
if( (hqClipLock != GetFastQueue16()) || !lpFormat ||
(!hData && (!hWndClipOwner || (hWndClipOwner != hWndClipWindow))) ) return 0;
- CLIPBOARD_GetDriver()->pSetClipboardData(wFormat);
+ CLIPBOARD_Driver->pSetClipboardData(wFormat);
if ( lpFormat->wDataPresent || lpFormat->hData16 || lpFormat->hData32 )
{
@@ -358,7 +341,7 @@
if( (hqClipLock != GetFastQueue16()) || !lpFormat ||
(!hData && (!hWndClipOwner || (hWndClipOwner != hWndClipWindow))) ) return 0;
- CLIPBOARD_GetDriver()->pSetClipboardData(wFormat);
+ CLIPBOARD_Driver->pSetClipboardData(wFormat);
if ( lpFormat->wDataPresent || lpFormat->hData16 || lpFormat->hData32 )
{
@@ -626,7 +609,7 @@
TRACE(clipboard,"(void)\n");
/* FIXME: Returns BOOL32 */
- CLIPBOARD_GetDriver()->pRequestSelection();
+ CLIPBOARD_Driver->pRequestSelection();
FormatCount += abs(lpFormat[CF_TEXT-1].wDataPresent -
lpFormat[CF_OEMTEXT-1].wDataPresent);
@@ -668,7 +651,7 @@
if( hqClipLock != GetFastQueue16() ) return 0;
if( (!wFormat || wFormat == CF_TEXT || wFormat == CF_OEMTEXT) )
- CLIPBOARD_GetDriver()->pRequestSelection();
+ CLIPBOARD_Driver->pRequestSelection();
if (wFormat == 0)
{
@@ -895,7 +878,7 @@
TRACE(clipboard,"(%04X) !\n", wFormat);
if( (wFormat == CF_TEXT || wFormat == CF_OEMTEXT) )
- CLIPBOARD_GetDriver()->pRequestSelection();
+ CLIPBOARD_Driver->pRequestSelection();
return CLIPBOARD_IsPresent(wFormat);
}
diff --git a/windows/dce.c b/windows/dce.c
index ad8433c..2f52572 100644
--- a/windows/dce.c
+++ b/windows/dce.c
@@ -17,8 +17,7 @@
* DCX_WINDOWPAINT - BeginPaint() is in effect
*/
-#include "x11drv.h"
-
+#include "desktop.h"
#include "options.h"
#include "dce.h"
#include "class.h"
@@ -798,11 +797,9 @@
hrgnVisible = CreateRectRgn( 0, 0, 0, 0 );
WIN_ReleaseWndPtr(parentPtr);
}
- else
- if ((hwnd == GetDesktopWindow()) &&
- (X11DRV_WND_GetXRootWindow(wndPtr) == DefaultRootWindow(display)))
- hrgnVisible = CreateRectRgn( 0, 0, SYSMETRICS_CXSCREEN,
- SYSMETRICS_CYSCREEN );
+ else
+ if ((hwnd == GetDesktopWindow()) && !DESKTOP_IsSingleWindow())
+ hrgnVisible = CreateRectRgn( 0, 0, SYSMETRICS_CXSCREEN, SYSMETRICS_CYSCREEN );
else
{
hrgnVisible = DCE_GetVisRgn( hwnd, flags, 0, 0 );
diff --git a/windows/defwnd.c b/windows/defwnd.c
index 3bd9e15..94f7d0c 100644
--- a/windows/defwnd.c
+++ b/windows/defwnd.c
@@ -6,6 +6,7 @@
*/
#include <string.h>
+
#include "win.h"
#include "user.h"
#include "heap.h"
diff --git a/windows/display.c b/windows/display.c
index 7909a69..9f1b7cf 100644
--- a/windows/display.c
+++ b/windows/display.c
@@ -5,29 +5,11 @@
*
*/
-#include "config.h"
-
-#include "display.h"
#include "debug.h"
+#include "display.h"
+#include "mouse.h"
#include "windef.h"
-
-#ifndef X_DISPLAY_MISSING
-extern MOUSE_DRIVER X11DRV_MOUSE_Driver;
-#else /* X_DISPLAY_MISSING */
-extern MOUSE_DRIVER TTYDRV_MOUSE_Driver;
-#endif /* X_DISPLAY_MISSING */
-
-/***********************************************************************
- * MOUSE_GetDriver()
- */
-MOUSE_DRIVER *MOUSE_GetDriver()
-{
-#ifndef X_DISPLAY_MISSING
- return &X11DRV_MOUSE_Driver;
-#else /* X_DISPLAY_MISSING */
- return &TTYDRV_MOUSE_Driver;
-#endif /* X_DISPLAY_MISSING */
-}
+#include "wine/winuser16.h"
/***********************************************************************
* DISPLAY_Inquire (DISPLAY.101)
@@ -45,7 +27,7 @@
*/
VOID WINAPI DISPLAY_SetCursor( CURSORICONINFO *lpCursor )
{
- MOUSE_GetDriver()->pSetCursor(lpCursor);
+ MOUSE_Driver->pSetCursor(lpCursor);
}
/***********************************************************************
@@ -53,7 +35,7 @@
*/
VOID WINAPI DISPLAY_MoveCursor( WORD wAbsX, WORD wAbsY )
{
- MOUSE_GetDriver()->pMoveCursor(wAbsX, wAbsY);
+ MOUSE_Driver->pMoveCursor(wAbsX, wAbsY);
}
/***********************************************************************
diff --git a/windows/event.c b/windows/event.c
index 636cb11..5deeb86 100644
--- a/windows/event.c
+++ b/windows/event.c
@@ -5,27 +5,11 @@
*
*/
-#include "config.h"
-
#include "message.h"
-#ifndef X_DISPLAY_MISSING
-extern EVENT_DRIVER X11DRV_EVENT_Driver;
-#else /* X_DISPLAY_MISSING */
-extern EVENT_DRIVER TTYDRV_EVENT_Driver;
-#endif /* X_DISPLAY_MISSING */
+/**********************************************************************/
-/***********************************************************************
- * EVENT_GetDriver
- */
-EVENT_DRIVER *EVENT_GetDriver(void)
-{
-#ifndef X_DISPLAY_MISSING
- return &X11DRV_EVENT_Driver;
-#else /* X_DISPLAY_MISSING */
- return &TTYDRV_EVENT_Driver;
-#endif /* X_DISPLAY_MISSING */
-}
+EVENT_DRIVER *EVENT_Driver = NULL;
/***********************************************************************
* EVENT_Init
@@ -34,7 +18,7 @@
*/
BOOL EVENT_Init(void)
{
- return EVENT_GetDriver()->pInit();
+ return EVENT_Driver->pInit();
}
/***********************************************************************
@@ -42,7 +26,7 @@
*/
void EVENT_AddIO(int fd, unsigned io_type)
{
- EVENT_GetDriver()->pAddIO(fd, io_type);
+ EVENT_Driver->pAddIO(fd, io_type);
}
/***********************************************************************
@@ -50,7 +34,7 @@
*/
void EVENT_DeleteIO(int fd, unsigned io_type)
{
- EVENT_GetDriver()->pDeleteIO(fd, io_type);
+ EVENT_Driver->pDeleteIO(fd, io_type);
}
/***********************************************************************
@@ -62,7 +46,7 @@
*/
BOOL EVENT_WaitNetEvent(BOOL sleep, BOOL peek)
{
- return EVENT_GetDriver()->pWaitNetEvent(sleep, peek);
+ return EVENT_Driver->pWaitNetEvent(sleep, peek);
}
/***********************************************************************
@@ -72,7 +56,7 @@
*/
void EVENT_Synchronize(void)
{
- EVENT_GetDriver()->pSynchronize();
+ EVENT_Driver->pSynchronize();
}
/**********************************************************************
@@ -80,7 +64,7 @@
*/
BOOL EVENT_CheckFocus(void)
{
- return EVENT_GetDriver()->pCheckFocus();
+ return EVENT_Driver->pCheckFocus();
}
/***********************************************************************
@@ -88,7 +72,7 @@
*/
BOOL EVENT_QueryPointer(DWORD *posX, DWORD *posY, DWORD *state)
{
- return EVENT_GetDriver()->pQueryPointer(posX, posY, state);
+ return EVENT_Driver->pQueryPointer(posX, posY, state);
}
@@ -99,15 +83,15 @@
*/
void EVENT_DummyMotionNotify(void)
{
- EVENT_GetDriver()->pDummyMotionNotify();
+ EVENT_Driver->pDummyMotionNotify();
}
/**********************************************************************
- * X11DRV_EVENT_Pending
+ * EVENT_Pending
*/
BOOL EVENT_Pending()
{
- return EVENT_GetDriver()->pPending();
+ return EVENT_Driver->pPending();
}
/***********************************************************************
@@ -117,7 +101,7 @@
*/
BOOL16 WINAPI IsUserIdle16(void)
{
- return EVENT_GetDriver()->pIsUserIdle();
+ return EVENT_Driver->pIsUserIdle();
}
/***********************************************************************
@@ -129,5 +113,5 @@
*/
void EVENT_WakeUp(void)
{
- EVENT_GetDriver()->pWakeUp();
+ EVENT_Driver->pWakeUp();
}
diff --git a/windows/keyboard.c b/windows/keyboard.c
index 2ddf793..fa39c62 100644
--- a/windows/keyboard.c
+++ b/windows/keyboard.c
@@ -9,11 +9,10 @@
*
*/
-#include "config.h"
-
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
+
#include "winuser.h"
#include "wine/keyboard16.h"
#include "win.h"
@@ -25,27 +24,13 @@
#include "struct32.h"
#include "winerror.h"
+/**********************************************************************/
+
+KEYBOARD_DRIVER *KEYBOARD_Driver = NULL;
+
static LPKEYBD_EVENT_PROC DefKeybEventProc = NULL;
LPBYTE pKeyStateTable = NULL;
-#ifndef X_DISPLAY_MISSING
-extern KEYBOARD_DRIVER X11DRV_KEYBOARD_Driver;
-#else /* X_DISPLAY_MISSING */
-extern KEYBOARD_DRIVER TTYDRV_KEYBOARD_Driver;
-#endif /* X_DISPLAY_MISSING */
-
-/***********************************************************************
- * KEYBOARD_GetDriver
- */
-KEYBOARD_DRIVER *KEYBOARD_GetDriver()
-{
-#ifndef X_DISPLAY_MISSING
- return &X11DRV_KEYBOARD_Driver;
-#else /* X_DISPLAY_MISSING */
- return &TTYDRV_KEYBOARD_Driver;
-#endif /* X_DISPLAY_MISSING */
-}
-
/***********************************************************************
* KEYBOARD_Inquire (KEYBOARD.1)
*/
@@ -74,7 +59,7 @@
/* all states to false */
memset( lpKeyState, 0, sizeof(lpKeyState) );
- if (!initDone) KEYBOARD_GetDriver()->pInit();
+ if (!initDone) KEYBOARD_Driver->pInit();
initDone = TRUE;
}
@@ -145,7 +130,7 @@
WORD WINAPI VkKeyScan16(CHAR cChar)
{
- return KEYBOARD_GetDriver()->pVkKeyScan(cChar);
+ return KEYBOARD_Driver->pVkKeyScan(cChar);
}
/******************************************************************************
@@ -178,7 +163,7 @@
*/
UINT16 WINAPI MapVirtualKey16(UINT16 wCode, UINT16 wMapType)
{
- return KEYBOARD_GetDriver()->pMapVirtualKey(wCode,wMapType);
+ return KEYBOARD_Driver->pMapVirtualKey(wCode,wMapType);
}
/****************************************************************************
@@ -195,7 +180,7 @@
*/
INT16 WINAPI GetKeyNameText16(LONG lParam, LPSTR lpBuffer, INT16 nSize)
{
- return KEYBOARD_GetDriver()->pGetKeyNameText(lParam, lpBuffer, nSize);
+ return KEYBOARD_Driver->pGetKeyNameText(lParam, lpBuffer, nSize);
}
/****************************************************************************
@@ -219,8 +204,32 @@
INT16 WINAPI ToAscii16(UINT16 virtKey,UINT16 scanCode, LPBYTE lpKeyState,
LPVOID lpChar, UINT16 flags)
{
- return KEYBOARD_GetDriver()->pToAscii(
+ return KEYBOARD_Driver->pToAscii(
virtKey, scanCode, lpKeyState, lpChar, flags
);
}
+/***********************************************************************
+ * KEYBOARD_GetBeepActive
+ */
+BOOL KEYBOARD_GetBeepActive()
+{
+ return KEYBOARD_Driver->pGetBeepActive();
+}
+
+/***********************************************************************
+ * KEYBOARD_SetBeepActive
+ */
+void KEYBOARD_SetBeepActive(BOOL bActivate)
+{
+ KEYBOARD_Driver->pSetBeepActive(bActivate);
+}
+
+/***********************************************************************
+ * KEYBOARD_Beep
+ */
+void KEYBOARD_Beep(void)
+{
+ KEYBOARD_Driver->pBeep();
+}
+
diff --git a/windows/mouse.c b/windows/mouse.c
index 64f4998..cfd59f1 100644
--- a/windows/mouse.c
+++ b/windows/mouse.c
@@ -5,17 +5,14 @@
*
*/
-#include <assert.h>
-#include "winuser.h"
-#include "gdi.h"
-#include "mouse.h"
#include "debug.h"
-#include "debugtools.h"
+#include "mouse.h"
#include "monitor.h"
+#include "winuser.h"
/**********************************************************************/
-extern BOOL X11DRV_MOUSE_DisableWarpPointer;
+MOUSE_DRIVER *MOUSE_Driver = NULL;
static LPMOUSE_EVENT_PROC DefMouseEventProc = NULL;
@@ -62,6 +59,7 @@
int width = MONITOR_GetWidth (&MONITOR_PrimaryMonitor);
int height = MONITOR_GetHeight(&MONITOR_PrimaryMonitor);
WINE_MOUSEEVENT wme;
+ BOOL bOldWarpPointer;
if ( !DefMouseEventProc ) return;
@@ -76,8 +74,7 @@
wme.time = time;
wme.hWnd = hWnd;
- X11DRV_MOUSE_DisableWarpPointer = TRUE;
+ bOldWarpPointer = MOUSE_Driver->pEnableWarpPointer(FALSE);
DefMouseEventProc( mouseStatus, posX, posY, 0, (DWORD)&wme );
- X11DRV_MOUSE_DisableWarpPointer = FALSE;
+ MOUSE_Driver->pEnableWarpPointer(bOldWarpPointer);
}
-
diff --git a/windows/multimon.c b/windows/multimon.c
index 12ba428..5dc3987 100644
--- a/windows/multimon.c
+++ b/windows/multimon.c
@@ -4,9 +4,13 @@
* Copyright 1998 Turchanov Sergey
*/
+#include "monitor.h"
#include "winbase.h"
#include "winuser.h"
-#include "monitor.h"
+
+/**********************************************************************/
+
+MONITOR_DRIVER *MONITOR_Driver;
/**********************************************************************/
@@ -15,11 +19,26 @@
MONITOR MONITOR_PrimaryMonitor;
/***********************************************************************
+ * MONITOR_GetMonitor
+ */
+MONITOR *MONITOR_GetMonitor(HMONITOR hMonitor)
+{
+ if(hMonitor == xPRIMARY_MONITOR)
+ {
+ return &MONITOR_PrimaryMonitor;
+ }
+ else
+ {
+ return NULL;
+ }
+}
+
+/***********************************************************************
* MONITOR_Initialize
*/
void MONITOR_Initialize(MONITOR *pMonitor)
{
- pMonitor->pDriver->pInitialize(pMonitor);
+ MONITOR_Driver->pInitialize(pMonitor);
}
/***********************************************************************
@@ -27,7 +46,15 @@
*/
void MONITOR_Finalize(MONITOR *pMonitor)
{
- pMonitor->pDriver->pFinalize(pMonitor);
+ MONITOR_Driver->pFinalize(pMonitor);
+}
+
+/***********************************************************************
+ * MONITOR_IsSingleWindow
+ */
+BOOL MONITOR_IsSingleWindow(MONITOR *pMonitor)
+{
+ return MONITOR_Driver->pIsSingleWindow(pMonitor);
}
/***********************************************************************
@@ -35,7 +62,7 @@
*/
int MONITOR_GetWidth(MONITOR *pMonitor)
{
- return pMonitor->pDriver->pGetWidth(pMonitor);
+ return MONITOR_Driver->pGetWidth(pMonitor);
}
/***********************************************************************
@@ -43,7 +70,7 @@
*/
int MONITOR_GetHeight(MONITOR *pMonitor)
{
- return pMonitor->pDriver->pGetHeight(pMonitor);
+ return MONITOR_Driver->pGetHeight(pMonitor);
}
/***********************************************************************
@@ -51,9 +78,42 @@
*/
int MONITOR_GetDepth(MONITOR *pMonitor)
{
- return pMonitor->pDriver->pGetDepth(pMonitor);
+ return MONITOR_Driver->pGetDepth(pMonitor);
}
+/***********************************************************************
+ * MONITOR_GetScreenSaveActive
+ */
+BOOL MONITOR_GetScreenSaveActive(MONITOR *pMonitor)
+{
+ return MONITOR_Driver->pGetScreenSaveActive(pMonitor);
+}
+
+/***********************************************************************
+ * MONITOR_SetScreenSaveActive
+ */
+void MONITOR_SetScreenSaveActive(MONITOR *pMonitor, BOOL bActivate)
+{
+ MONITOR_Driver->pSetScreenSaveActive(pMonitor, bActivate);
+}
+
+/***********************************************************************
+ * MONITOR_GetScreenSaveTimeout
+ */
+int MONITOR_GetScreenSaveTimeout(MONITOR *pMonitor)
+{
+ return MONITOR_Driver->pGetScreenSaveTimeout(pMonitor);
+}
+
+/***********************************************************************
+ * MONITOR_SetScreenSaveTimeout
+ */
+void MONITOR_SetScreenSaveTimeout(MONITOR *pMonitor, int nTimeout)
+{
+ MONITOR_Driver->pSetScreenSaveTimeout(pMonitor, nTimeout);
+}
+
+
/**********************************************************************/
HMONITOR WINAPI MonitorFromPoint(POINT ptScreenCoords, DWORD dwFlags)
diff --git a/windows/scroll.c b/windows/scroll.c
index ddf6d7c..97523b0 100644
--- a/windows/scroll.c
+++ b/windows/scroll.c
@@ -8,6 +8,7 @@
*/
#include <stdlib.h>
+
#include "winuser.h"
#include "class.h"
#include "dc.h"
diff --git a/windows/ttydrv/init.c b/windows/ttydrv/init.c
index b7e6396..7f6a15b 100644
--- a/windows/ttydrv/init.c
+++ b/windows/ttydrv/init.c
@@ -6,12 +6,22 @@
#include "clipboard.h"
#include "desktop.h"
-#include "display.h"
#include "keyboard.h"
#include "message.h"
#include "monitor.h"
+#include "mouse.h"
+#include "user.h"
+#include "win.h"
#include "ttydrv.h"
+USER_DRIVER TTYDRV_USER_Driver =
+{
+ TTYDRV_USER_Initialize,
+ TTYDRV_USER_Finalize,
+ TTYDRV_USER_BeginDebugging,
+ TTYDRV_USER_EndDebugging
+};
+
CLIPBOARD_DRIVER TTYDRV_CLIPBOARD_Driver =
{
TTYDRV_CLIPBOARD_EmptyClipboard,
@@ -47,22 +57,31 @@
TTYDRV_KEYBOARD_VkKeyScan,
TTYDRV_KEYBOARD_MapVirtualKey,
TTYDRV_KEYBOARD_GetKeyNameText,
- TTYDRV_KEYBOARD_ToAscii
+ TTYDRV_KEYBOARD_ToAscii,
+ TTYDRV_KEYBOARD_GetBeepActive,
+ TTYDRV_KEYBOARD_SetBeepActive,
+ TTYDRV_KEYBOARD_Beep
};
MONITOR_DRIVER TTYDRV_MONITOR_Driver =
{
TTYDRV_MONITOR_Initialize,
TTYDRV_MONITOR_Finalize,
+ TTYDRV_MONITOR_IsSingleWindow,
TTYDRV_MONITOR_GetWidth,
TTYDRV_MONITOR_GetHeight,
- TTYDRV_MONITOR_GetDepth
+ TTYDRV_MONITOR_GetDepth,
+ TTYDRV_MONITOR_GetScreenSaveActive,
+ TTYDRV_MONITOR_SetScreenSaveActive,
+ TTYDRV_MONITOR_GetScreenSaveTimeout,
+ TTYDRV_MONITOR_SetScreenSaveTimeout
};
MOUSE_DRIVER TTYDRV_MOUSE_Driver =
{
TTYDRV_MOUSE_SetCursor,
- TTYDRV_MOUSE_MoveCursor
+ TTYDRV_MOUSE_MoveCursor,
+ TTYDRV_MOUSE_EnableWarpPointer
};
WND_DRIVER TTYDRV_WND_Driver =
diff --git a/windows/ttydrv/keyboard.c b/windows/ttydrv/keyboard.c
index a6a1f6f..8010b79 100644
--- a/windows/ttydrv/keyboard.c
+++ b/windows/ttydrv/keyboard.c
@@ -53,6 +53,27 @@
return 0;
}
+/***********************************************************************
+ * TTYDRV_KEYBOARD_GetBeepActive
+ */
+BOOL TTYDRV_KEYBOARD_GetBeepActive()
+{
+ return FALSE;
+}
+
+/***********************************************************************
+ * TTYDRV_KEYBOARD_SetBeepActive
+ */
+void TTYDRV_KEYBOARD_SetBeepActive(BOOL bActivate)
+{
+}
+
+/***********************************************************************
+ * TTYDRV_KEYBOARD_Beep
+ */
+void TTYDRV_KEYBOARD_Beep()
+{
+}
diff --git a/windows/ttydrv/main.c b/windows/ttydrv/main.c
index 88e39b8..b398585 100644
--- a/windows/ttydrv/main.c
+++ b/windows/ttydrv/main.c
@@ -5,46 +5,50 @@
*
*/
+#include "clipboard.h"
+#include "desktop.h"
+#include "message.h"
+#include "keyboard.h"
+#include "monitor.h"
+#include "mouse.h"
#include "ttydrv.h"
+#include "win.h"
/***********************************************************************
- * TTYDRV_MAIN_Initialize
+ * TTYDRV_USER_Initialize
*/
-void TTYDRV_MAIN_Initialize()
+BOOL TTYDRV_USER_Initialize(void)
{
+ CLIPBOARD_Driver = &TTYDRV_CLIPBOARD_Driver;
+ DESKTOP_Driver = &TTYDRV_DESKTOP_Driver;
+ EVENT_Driver = &TTYDRV_EVENT_Driver;
+ KEYBOARD_Driver = &TTYDRV_KEYBOARD_Driver;
+ MONITOR_Driver = &TTYDRV_MONITOR_Driver;
+ MOUSE_Driver = &TTYDRV_MOUSE_Driver;
+ WND_Driver = &TTYDRV_WND_Driver;
+
+ return TRUE;
}
/***********************************************************************
- * TTYDRV_MAIN_Finalize
+ * TTYDRV_USER_Finalize
*/
-void TTYDRV_MAIN_Finalize()
+void TTYDRV_USER_Finalize(void)
{
}
-/***********************************************************************
- * TTYDRV_MAIN_ParseOptions
+/**************************************************************************
+ * TTYDRV_USER_BeginDebugging
*/
-void TTYDRV_MAIN_ParseOptions(int *argc, char *argv[])
+void TTYDRV_USER_BeginDebugging(void)
{
}
-/***********************************************************************
- * TTYDRV_MAIN_Create
+/**************************************************************************
+ * TTYDRV_USER_EndDebugging
*/
-void TTYDRV_MAIN_Create()
+void TTYDRV_USER_EndDebugging(void)
{
}
-/***********************************************************************
- * TTYDRV_MAIN_SaveSetup
- */
-void TTYDRV_MAIN_SaveSetup()
-{
-}
-/***********************************************************************
- * TTYDRV_MAIN_RestoreSetup
- */
-void TTYDRV_MAIN_RestoreSetup()
-{
-}
diff --git a/windows/ttydrv/monitor.c b/windows/ttydrv/monitor.c
index 469330a..bf5297c 100644
--- a/windows/ttydrv/monitor.c
+++ b/windows/ttydrv/monitor.c
@@ -34,6 +34,14 @@
}
/***********************************************************************
+ * TTYDRV_MONITOR_IsSingleWindow
+ */
+BOOL TTYDRV_MONITOR_IsSingleWindow(MONITOR *pMonitor)
+{
+ return TRUE;
+}
+
+/***********************************************************************
* TTYDRV_MONITOR_GetWidth
*
* Return the width of the monitor
@@ -71,3 +79,42 @@
return pTTYMonitor->depth;
}
+
+/***********************************************************************
+ * TTYDRV_MONITOR_GetScreenSaveActive
+ *
+ * Returns the active status of the screen saver
+ */
+BOOL TTYDRV_MONITOR_GetScreenSaveActive(MONITOR *pMonitor)
+{
+ return FALSE;
+}
+
+/***********************************************************************
+ * TTYDRV_MONITOR_SetScreenSaveActive
+ *
+ * Activate/Deactivate the screen saver
+ */
+void TTYDRV_MONITOR_SetScreenSaveActive(MONITOR *pMonitor, BOOL bActivate)
+{
+}
+
+/***********************************************************************
+ * TTYDRV_MONITOR_GetScreenSaveTimeout
+ *
+ * Return the screen saver timeout
+ */
+int TTYDRV_MONITOR_GetScreenSaveTimeout(MONITOR *pMonitor)
+{
+ return 0;
+}
+
+/***********************************************************************
+ * TTYDRV_MONITOR_SetScreenSaveTimeout
+ *
+ * Set the screen saver timeout
+ */
+void TTYDRV_MONITOR_SetScreenSaveTimeout(
+ MONITOR *pMonitor, int nTimeout)
+{
+}
diff --git a/windows/ttydrv/mouse.c b/windows/ttydrv/mouse.c
index fba316d..9ea016e 100644
--- a/windows/ttydrv/mouse.c
+++ b/windows/ttydrv/mouse.c
@@ -19,3 +19,11 @@
void TTYDRV_MOUSE_MoveCursor(WORD wAbsX, WORD wAbsY)
{
}
+
+/***********************************************************************
+ * TTYDRV_MOUSE_EnableWarpPointer
+ */
+BOOL TTYDRV_MOUSE_EnableWarpPointer(BOOL bEnable)
+{
+ return TRUE;
+}
diff --git a/windows/ttydrv/wnd.c b/windows/ttydrv/wnd.c
index 7085ac9..e488037 100644
--- a/windows/ttydrv/wnd.c
+++ b/windows/ttydrv/wnd.c
@@ -48,7 +48,7 @@
}
/*****************************************************************
- * X11DRV_WND_SetParent
+ * TTYDRV_WND_SetParent
*/
WND *TTYDRV_WND_SetParent(WND *wndPtr, WND *pWndParent)
{
@@ -64,8 +64,6 @@
/***********************************************************************
* WINPOS_SetXWindowPos
- *
- * SetWindowPos() for an X window. Used by the real SetWindowPos().
*/
void TTYDRV_WND_SetWindowPos(WND *wndPtr, const WINDOWPOS *winpos, BOOL bSMC_SETXPOS)
{
@@ -131,4 +129,3 @@
{
return FALSE;
}
-
diff --git a/windows/win.c b/windows/win.c
index e2ea887..402319d 100644
--- a/windows/win.c
+++ b/windows/win.c
@@ -4,8 +4,6 @@
* Copyright 1993, 1994 Alexandre Julliard
*/
-#include "config.h"
-
#include <stdlib.h>
#include <string.h>
#include "wine/winbase16.h"
@@ -36,13 +34,9 @@
#include "local.h"
#include "desktop.h"
-#ifndef X_DISPLAY_MISSING
-extern DESKTOP_DRIVER X11DRV_DESKTOP_Driver;
-extern WND_DRIVER X11DRV_WND_Driver;
-#else /* X_DISPLAY_MISSING */
-extern DESKTOP_DRIVER TTYDRV_DESKTOP_Driver;
-extern WND_DRIVER TTYDRV_WND_Driver;
-#endif /* X_DISPLAY_MISSING */
+/**********************************************************************/
+
+WND_DRIVER *WND_Driver = NULL;
/* Desktop window */
static WND *pWndDesktop = NULL;
@@ -624,13 +618,8 @@
pWndDesktop = (WND *) USER_HEAP_LIN_ADDR( hwndDesktop );
pDesktop = (DESKTOP *) pWndDesktop->wExtra;
-#ifndef X_DISPLAY_MISSING
- pDesktop->pDriver = &X11DRV_DESKTOP_Driver;
- pWndDesktop->pDriver = &X11DRV_WND_Driver;
-#else /* X_DISPLAY_MISSING */
- pDesktop->pDriver = &TTYDRV_DESKTOP_Driver;
- pWndDesktop->pDriver = &TTYDRV_WND_Driver;
-#endif /* X_DISPLAY_MISSING */
+ pDesktop->pDriver = DESKTOP_Driver;
+ pWndDesktop->pDriver = WND_Driver;
pDesktop->pDriver->pInitialize(pDesktop);
pWndDesktop->pDriver->pInitialize(pWndDesktop);
@@ -1179,7 +1168,7 @@
WIN_CheckFocus(pWnd);
if( CARET_GetHwnd() == pWnd->hwndSelf ) DestroyCaret();
- CLIPBOARD_GetDriver()->pResetOwner( pWnd, TRUE );
+ CLIPBOARD_Driver->pResetOwner( pWnd, TRUE );
/*
* Send the WM_DESTROY to the window.
@@ -1320,7 +1309,7 @@
}
}
- CLIPBOARD_GetDriver()->pResetOwner( wndPtr, FALSE ); /* before the window is unmapped */
+ CLIPBOARD_Driver->pResetOwner( wndPtr, FALSE ); /* before the window is unmapped */
/* Hide the window */
diff --git a/windows/winpos.c b/windows/winpos.c
index 99399c0..aadcd07 100644
--- a/windows/winpos.c
+++ b/windows/winpos.c
@@ -5,8 +5,6 @@
* 1995, 1996, 1999 Alex Korobka
*/
-#include "x11drv.h"
-
#include <string.h>
#include "sysmetrics.h"
#include "heap.h"
diff --git a/windows/x11drv/event.c b/windows/x11drv/event.c
index e1bf6da..106903a 100644
--- a/windows/x11drv/event.c
+++ b/windows/x11drv/event.c
@@ -1156,7 +1156,10 @@
unsigned char* p_data = NULL;
union {
Atom atom_aux;
- POINT pt_aux;
+ struct {
+ int x;
+ int y;
+ } pt_aux;
int i;
} u;
int x, y;
@@ -1278,7 +1281,6 @@
int x, y, drop32 = FALSE ;
union {
Atom atom_aux;
- POINT pt_aux;
int i;
Window w_aux;
} u; /* unused */
@@ -1456,7 +1458,7 @@
{
if( !Options.managed && X11DRV_GetXRootWindow() == DefaultRootWindow(display) &&
(COLOR_GetSystemPaletteFlags() & COLOR_PRIVATE) && GetFocus() )
- TSXInstallColormap( display, X11DRV_COLOR_GetColormap() );
+ TSXInstallColormap( display, X11DRV_PALETTE_GetColormap() );
}
#endif
diff --git a/windows/x11drv/init.c b/windows/x11drv/init.c
index ead5570..d7a59e1 100644
--- a/windows/x11drv/init.c
+++ b/windows/x11drv/init.c
@@ -10,13 +10,22 @@
#include "clipboard.h"
#include "desktop.h"
-#include "display.h"
#include "keyboard.h"
#include "message.h"
#include "monitor.h"
+#include "mouse.h"
+#include "user.h"
#include "win.h"
#include "x11drv.h"
+USER_DRIVER X11DRV_USER_Driver =
+{
+ X11DRV_USER_Initialize,
+ X11DRV_USER_Finalize,
+ X11DRV_USER_BeginDebugging,
+ X11DRV_USER_EndDebugging
+};
+
CLIPBOARD_DRIVER X11DRV_CLIPBOARD_Driver =
{
X11DRV_CLIPBOARD_EmptyClipboard,
@@ -52,22 +61,31 @@
X11DRV_KEYBOARD_VkKeyScan,
X11DRV_KEYBOARD_MapVirtualKey,
X11DRV_KEYBOARD_GetKeyNameText,
- X11DRV_KEYBOARD_ToAscii
+ X11DRV_KEYBOARD_ToAscii,
+ X11DRV_KEYBOARD_GetBeepActive,
+ X11DRV_KEYBOARD_SetBeepActive,
+ X11DRV_KEYBOARD_Beep
};
MONITOR_DRIVER X11DRV_MONITOR_Driver =
{
X11DRV_MONITOR_Initialize,
X11DRV_MONITOR_Finalize,
+ X11DRV_MONITOR_IsSingleWindow,
X11DRV_MONITOR_GetWidth,
X11DRV_MONITOR_GetHeight,
- X11DRV_MONITOR_GetDepth
+ X11DRV_MONITOR_GetDepth,
+ X11DRV_MONITOR_GetScreenSaveActive,
+ X11DRV_MONITOR_SetScreenSaveActive,
+ X11DRV_MONITOR_GetScreenSaveTimeout,
+ X11DRV_MONITOR_SetScreenSaveTimeout
};
MOUSE_DRIVER X11DRV_MOUSE_Driver =
{
X11DRV_MOUSE_SetCursor,
- X11DRV_MOUSE_MoveCursor
+ X11DRV_MOUSE_MoveCursor,
+ X11DRV_MOUSE_EnableWarpPointer
};
WND_DRIVER X11DRV_WND_Driver =
diff --git a/windows/x11drv/keyboard.c b/windows/x11drv/keyboard.c
index baabca7..3f011ed 100644
--- a/windows/x11drv/keyboard.c
+++ b/windows/x11drv/keyboard.c
@@ -1144,6 +1144,40 @@
return ret;
}
-#endif /* !defined(X_DISPLAY_MISSING) */
+/***********************************************************************
+ * X11DRV_KEYBOARD_GetBeepActive
+ */
+BOOL X11DRV_KEYBOARD_GetBeepActive()
+{
+ XKeyboardState keyboard_state;
+ TSXGetKeyboardControl(display, &keyboard_state);
+
+ return keyboard_state.bell_percent != 0;
+}
+
+/***********************************************************************
+ * X11DRV_KEYBOARD_SetBeepActive
+ */
+void X11DRV_KEYBOARD_SetBeepActive(BOOL bActivate)
+{
+ XKeyboardControl keyboard_value;
+
+ if(bActivate)
+ keyboard_value.bell_percent = -1;
+ else
+ keyboard_value.bell_percent = 0;
+
+ TSXChangeKeyboardControl(display, KBBellPercent, &keyboard_value);
+}
+
+/***********************************************************************
+ * X11DRV_KEYBOARD_Beep
+ */
+void X11DRV_KEYBOARD_Beep()
+{
+ TSXBell(display, 0);
+}
+
+#endif /* !defined(X_DISPLAY_MISSING) */
diff --git a/windows/x11drv/main.c b/windows/x11drv/main.c
index 9d2a74e..d5cc1fa 100644
--- a/windows/x11drv/main.c
+++ b/windows/x11drv/main.c
@@ -18,17 +18,30 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+
+#include "clipboard.h"
#include "console.h"
#include "debug.h"
#include "desktop.h"
+#include "keyboard.h"
#include "main.h"
+#include "message.h"
#include "monitor.h"
+#include "mouse.h"
#include "options.h"
#include "win.h"
#include "windef.h"
#include "x11drv.h"
#include "xmalloc.h"
#include "version.h"
+#include "win.h"
+
+/**********************************************************************/
+
+void X11DRV_USER_ParseOptions(int *argc, char *argv[]);
+void X11DRV_USER_Create(void);
+void X11DRV_USER_SaveSetup(void);
+void X11DRV_USER_RestoreSetup(void);
/**********************************************************************/
@@ -89,10 +102,18 @@
}
/***********************************************************************
- * X11DRV_MAIN_Initialize
+ * X11DRV_USER_Initialize
*/
-void X11DRV_MAIN_Initialize()
+BOOL X11DRV_USER_Initialize(void)
{
+ CLIPBOARD_Driver = &X11DRV_CLIPBOARD_Driver;
+ DESKTOP_Driver = &X11DRV_DESKTOP_Driver;
+ EVENT_Driver = &X11DRV_EVENT_Driver;
+ KEYBOARD_Driver = &X11DRV_KEYBOARD_Driver;
+ MONITOR_Driver = &X11DRV_MONITOR_Driver;
+ MOUSE_Driver = &X11DRV_MOUSE_Driver;
+ WND_Driver = &X11DRV_WND_Driver;
+
/* We need this before calling any Xlib function */
InitializeCriticalSection( &X11DRV_CritSection );
MakeCriticalSectionGlobal( &X11DRV_CritSection );
@@ -100,22 +121,43 @@
TSXrmInitialize();
putenv("XKB_DISABLE="); /* Disable XKB extension if present. */
+
+ X11DRV_USER_ParseOptions( Options.argc, Options.argv );
+ X11DRV_USER_Create();
+ X11DRV_USER_SaveSetup();
}
/***********************************************************************
- * X11DRV_MAIN_Finalize
+ * X11DRV_USER_Finalize
*/
-void X11DRV_MAIN_Finalize()
+void X11DRV_USER_Finalize(void)
+{
+ X11DRV_USER_RestoreSetup();
+}
+
+/**************************************************************************
+ * X11DRV_USER_BeginDebugging
+ */
+void X11DRV_USER_BeginDebugging(void)
+{
+ TSXUngrabServer(display);
+ TSXFlush(display);
+}
+
+/**************************************************************************
+ * X11DRV_USER_EndDebugging
+ */
+void X11DRV_USER_EndDebugging(void)
{
}
/***********************************************************************
- * X11DRV_MAIN_GetResource
+ * X11DRV_USER_GetResource
*
* Fetch the value of resource 'name' using the correct instance name.
* 'name' must begin with '.' or '*'
*/
-static int X11DRV_MAIN_GetResource( XrmDatabase db, char *name, XrmValue *value )
+static int X11DRV_USER_GetResource( XrmDatabase db, char *name, XrmValue *value )
{
char *buff_instance, *buff_class;
char *dummy;
@@ -135,10 +177,10 @@
}
/***********************************************************************
- * X11DRV_MAIN_ParseOptions
+ * X11DRV_USER_ParseOptions
* Parse command line options and open display.
*/
-void X11DRV_MAIN_ParseOptions(int *argc, char *argv[])
+void X11DRV_USER_ParseOptions(int *argc, char *argv[])
{
int i;
char *display_name = NULL;
@@ -155,7 +197,7 @@
/* Open display */
if (display_name == NULL &&
- X11DRV_MAIN_GetResource( db, ".display", &value )) display_name = value.addr;
+ X11DRV_USER_GetResource( db, ".display", &value )) display_name = value.addr;
if (!(display = TSXOpenDisplay( display_name )))
{
@@ -184,35 +226,35 @@
Options.programName, argc, argv );
/* Get all options */
- if (X11DRV_MAIN_GetResource( db, ".iconic", &value ))
+ if (X11DRV_USER_GetResource( db, ".iconic", &value ))
Options.cmdShow = SW_SHOWMINIMIZED;
- if (X11DRV_MAIN_GetResource( db, ".privatemap", &value ))
+ if (X11DRV_USER_GetResource( db, ".privatemap", &value ))
Options.usePrivateMap = TRUE;
- if (X11DRV_MAIN_GetResource( db, ".fixedmap", &value ))
+ if (X11DRV_USER_GetResource( db, ".fixedmap", &value ))
Options.useFixedMap = TRUE;
- if (X11DRV_MAIN_GetResource( db, ".synchronous", &value ))
+ if (X11DRV_USER_GetResource( db, ".synchronous", &value ))
Options.synchronous = TRUE;
- if (X11DRV_MAIN_GetResource( db, ".backingstore", &value ))
+ if (X11DRV_USER_GetResource( db, ".backingstore", &value ))
Options.backingstore = TRUE;
- if (X11DRV_MAIN_GetResource( db, ".debug", &value ))
+ if (X11DRV_USER_GetResource( db, ".debug", &value ))
Options.debug = TRUE;
- if (X11DRV_MAIN_GetResource( db, ".failreadonly", &value ))
+ if (X11DRV_USER_GetResource( db, ".failreadonly", &value ))
Options.failReadOnly = TRUE;
- if (X11DRV_MAIN_GetResource( db, ".perfect", &value ))
+ if (X11DRV_USER_GetResource( db, ".perfect", &value ))
Options.perfectGraphics = TRUE;
- if (X11DRV_MAIN_GetResource( db, ".depth", &value))
+ if (X11DRV_USER_GetResource( db, ".depth", &value))
Options.screenDepth = atoi( value.addr );
- if (X11DRV_MAIN_GetResource( db, ".desktop", &value))
+ if (X11DRV_USER_GetResource( db, ".desktop", &value))
Options.desktopGeometry = value.addr;
- if (X11DRV_MAIN_GetResource( db, ".language", &value))
+ if (X11DRV_USER_GetResource( db, ".language", &value))
MAIN_ParseLanguageOption( (char *)value.addr );
- if (X11DRV_MAIN_GetResource( db, ".managed", &value))
+ if (X11DRV_USER_GetResource( db, ".managed", &value))
Options.managed = TRUE;
- if (X11DRV_MAIN_GetResource( db, ".mode", &value))
+ if (X11DRV_USER_GetResource( db, ".mode", &value))
MAIN_ParseModeOption( (char *)value.addr );
- if (X11DRV_MAIN_GetResource( db, ".debugoptions", &value))
+ if (X11DRV_USER_GetResource( db, ".debugoptions", &value))
MAIN_ParseDebugOptions((char*)value.addr);
- if (X11DRV_MAIN_GetResource( db, ".debugmsg", &value))
+ if (X11DRV_USER_GetResource( db, ".debugmsg", &value))
{
#ifndef DEBUG_RUNTIME
MSG("%s: Option \"-debugmsg\" not implemented.\n" \
@@ -224,7 +266,7 @@
#endif
}
- if (X11DRV_MAIN_GetResource( db, ".dll", &value))
+ if (X11DRV_USER_GetResource( db, ".dll", &value))
{
if (Options.dllFlags)
{
@@ -236,35 +278,35 @@
else Options.dllFlags = xstrdup((char *)value.addr);
}
- if (X11DRV_MAIN_GetResource( db, ".winver", &value))
+ if (X11DRV_USER_GetResource( db, ".winver", &value))
VERSION_ParseWinVersion( (char*)value.addr );
- if (X11DRV_MAIN_GetResource( db, ".dosver", &value))
+ if (X11DRV_USER_GetResource( db, ".dosver", &value))
VERSION_ParseDosVersion( (char*)value.addr );
- if (X11DRV_MAIN_GetResource( db, ".config", &value))
+ if (X11DRV_USER_GetResource( db, ".config", &value))
Options.configFileName = xstrdup((char *)value.addr);
- if (X11DRV_MAIN_GetResource( db, ".nodga", &value))
+ if (X11DRV_USER_GetResource( db, ".nodga", &value))
Options.noDGA = TRUE;
- if (X11DRV_MAIN_GetResource( db, ".console", &value))
+ if (X11DRV_USER_GetResource( db, ".console", &value))
driver.driver_list = xstrdup((char *)value.addr);
else
driver.driver_list = CONSOLE_DEFAULT_DRIVER;
}
/***********************************************************************
- * X11DRV_MAIN_ErrorHandler
+ * X11DRV_USER_ErrorHandler
*/
-static int X11DRV_MAIN_ErrorHandler(Display *display, XErrorEvent *error_evt)
+static int X11DRV_USER_ErrorHandler(Display *display, XErrorEvent *error_evt)
{
kill( getpid(), SIGHUP ); /* force an entry in the debugger */
return 0;
}
/***********************************************************************
- * X11DRV_MAIN_Create
+ * X11DRV_USER_Create
*/
-void X11DRV_MAIN_Create()
+void X11DRV_USER_Create()
{
- if (Options.synchronous) XSetErrorHandler( X11DRV_MAIN_ErrorHandler );
+ if (Options.synchronous) XSetErrorHandler( X11DRV_USER_ErrorHandler );
if (Options.desktopGeometry && Options.managed)
{
@@ -279,17 +321,17 @@
}
/***********************************************************************
- * X11DRV_MAIN_SaveSetup
+ * X11DRV_USER_SaveSetup
*/
-void X11DRV_MAIN_SaveSetup()
+void X11DRV_USER_SaveSetup()
{
TSXGetKeyboardControl(display, &X11DRV_XKeyboardState);
}
/***********************************************************************
- * X11DRV_MAIN_RestoreSetup
+ * X11DRV_USER_RestoreSetup
*/
-void X11DRV_MAIN_RestoreSetup()
+void X11DRV_USER_RestoreSetup()
{
XKeyboardControl keyboard_value;
diff --git a/windows/x11drv/monitor.c b/windows/x11drv/monitor.c
index 97e3080..debec81 100644
--- a/windows/x11drv/monitor.c
+++ b/windows/x11drv/monitor.c
@@ -184,6 +184,17 @@
}
/***********************************************************************
+ * X11DRV_MONITOR_IsSingleWindow
+ */
+BOOL X11DRV_MONITOR_IsSingleWindow(MONITOR *pMonitor)
+{
+ X11DRV_MONITOR_DATA *pX11Monitor =
+ (X11DRV_MONITOR_DATA *) pMonitor->pDriverData;
+
+ return (pX11Monitor->rootWindow != DefaultRootWindow(display));
+}
+
+/***********************************************************************
* X11DRV_MONITOR_GetWidth
*
* Return the width of the monitor
@@ -222,6 +233,53 @@
return pX11Monitor->depth;
}
+/***********************************************************************
+ * X11DRV_MONITOR_GetScreenSaveActive
+ *
+ * Returns the active status of the screen saver
+ */
+BOOL X11DRV_MONITOR_GetScreenSaveActive(MONITOR *pMonitor)
+{
+ int timeout, temp;
+ TSXGetScreenSaver(display, &timeout, &temp, &temp, &temp);
+ return timeout!=NULL;
+}
+
+/***********************************************************************
+ * X11DRV_MONITOR_SetScreenSaveActive
+ *
+ * Activate/Deactivate the screen saver
+ */
+void X11DRV_MONITOR_SetScreenSaveActive(MONITOR *pMonitor, BOOL bActivate)
+{
+ if(bActivate)
+ TSXActivateScreenSaver(display);
+ else
+ TSXResetScreenSaver(display);
+}
+
+/***********************************************************************
+ * X11DRV_MONITOR_GetScreenSaveTimeout
+ *
+ * Return the screen saver timeout
+ */
+int X11DRV_MONITOR_GetScreenSaveTimeout(MONITOR *pMonitor)
+{
+ int timeout, temp;
+ TSXGetScreenSaver(display, &timeout, &temp, &temp, &temp);
+ return timeout;
+}
+
+/***********************************************************************
+ * X11DRV_MONITOR_SetScreenSaveTimeout
+ *
+ * Set the screen saver timeout
+ */
+void X11DRV_MONITOR_SetScreenSaveTimeout(
+ MONITOR *pMonitor, int nTimeout)
+{
+ TSXSetScreenSaver(display, nTimeout, 60,
+ DefaultBlanking, DefaultExposures);
+}
+
#endif /* X_DISPLAY_MISSING */
-
-
diff --git a/windows/x11drv/mouse.c b/windows/x11drv/mouse.c
index 7eb8f7f..19eaac2 100644
--- a/windows/x11drv/mouse.c
+++ b/windows/x11drv/mouse.c
@@ -12,7 +12,7 @@
#include "callback.h"
#include "debug.h"
-#include "display.h"
+#include "mouse.h"
#include "win.h"
#include "windef.h"
#include "x11drv.h"
@@ -21,7 +21,7 @@
Cursor X11DRV_MOUSE_XCursor = None; /* Current X cursor */
-BOOL X11DRV_MOUSE_DisableWarpPointer = FALSE; /* hack; see DISPLAY_MoveCursor */
+static BOOL X11DRV_MOUSE_WarpPointer = FALSE; /* hack; see DISPLAY_MoveCursor */
/***********************************************************************
* X11DRV_MOUSE_DoSetCursor
@@ -203,7 +203,7 @@
int rootX, rootY, winX, winY;
unsigned int xstate;
- if (X11DRV_MOUSE_DisableWarpPointer) return;
+ if (!X11DRV_MOUSE_WarpPointer) return;
if (!TSXQueryPointer( display, X11DRV_GetXRootWindow(), &root, &child,
&rootX, &rootY, &winX, &winY, &xstate ))
@@ -218,4 +218,16 @@
0, 0, 0, 0, wAbsX, wAbsY );
}
+/***********************************************************************
+ * X11DRV_MOUSE_EnableWarpPointer
+ */
+BOOL X11DRV_MOUSE_EnableWarpPointer(BOOL bEnable)
+{
+ BOOL bOldEnable = X11DRV_MOUSE_WarpPointer;
+
+ X11DRV_MOUSE_WarpPointer = bEnable;
+
+ return bOldEnable;
+}
+
#endif /* !defined(X_DISPLAY_MISSING) */
diff --git a/windows/x11drv/wnd.c b/windows/x11drv/wnd.c
index cb5f474..a877dec 100644
--- a/windows/x11drv/wnd.c
+++ b/windows/x11drv/wnd.c
@@ -196,7 +196,7 @@
wndPtr->flags |= WIN_NATIVE;
win_attr.bit_gravity = BGNorthWest;
- win_attr.colormap = X11DRV_COLOR_GetColormap();
+ win_attr.colormap = X11DRV_PALETTE_PaletteXColormap;
win_attr.backing_store = Options.backingstore ? WhenMapped : NotUseful;
win_attr.save_under = ((classPtr->style & CS_SAVEBITS) != 0);
win_attr.cursor = X11DRV_MOUSE_XCursor;
@@ -548,8 +548,8 @@
if (!hwnd) /* If setting the focus to 0, uninstall the colormap */
{
- if (COLOR_GetSystemPaletteFlags() & COLOR_PRIVATE)
- TSXUninstallColormap( display, X11DRV_COLOR_GetColormap() );
+ if (X11DRV_PALETTE_PaletteFlags & X11DRV_PALETTE_PRIVATE)
+ TSXUninstallColormap( display, X11DRV_PALETTE_PaletteXColormap );
return;
}
@@ -561,8 +561,8 @@
return; /* If window is not viewable, don't change anything */
TSXSetInputFocus( display, win, RevertToParent, CurrentTime );
- if (COLOR_GetSystemPaletteFlags() & COLOR_PRIVATE)
- TSXInstallColormap( display, X11DRV_COLOR_GetColormap() );
+ if (X11DRV_PALETTE_PaletteFlags & X11DRV_PALETTE_PRIVATE)
+ TSXInstallColormap( display, X11DRV_PALETTE_PaletteXColormap );
EVENT_Synchronize();
}
@@ -716,10 +716,7 @@
*/
BOOL X11DRV_WND_IsSelfClipping(WND *wndPtr)
{
- if( X11DRV_WND_GetXWindow(wndPtr) )
- return TRUE; /* X itself will do the clipping */
-
- return FALSE;
+ return X11DRV_WND_GetXWindow(wndPtr) != None;
}
#endif /* !defined(X_DISPLAY_MISSING) */