opennx/packaging/win32/xming/patches/xming-kioskhack.patch
2025-08-08 20:34:09 +02:00

100 lines
3.4 KiB
Diff

diff -urw xc-orig/programs/Xserver/hw/xwin/InitOutput.c xc/programs/Xserver/hw/xwin/InitOutput.c
--- xc-orig/programs/Xserver/hw/xwin/InitOutput.c 2012-03-16 14:45:50.640342810 +0100
+++ xc/programs/Xserver/hw/xwin/InitOutput.c 2012-03-16 16:11:04.331114818 +0100
@@ -97,6 +97,7 @@
extern FARPROC g_fpTrackMouseEvent;
extern Bool g_fNoHelpMessageBox;
extern Bool g_fSilentDupError;
+extern int g_iKioskX;
/*
@@ -797,6 +798,10 @@
/* We have to flag this as an explicit screen, even though it isn't */
g_ScreenInfo[0].fExplicitScreen = TRUE;
}
+ if (getenv("NX_KIOSK_X") != NULL)
+ {
+ g_iKioskX = atoi(getenv("NX_KIOSK_X"));
+ }
}
diff -urw xc-orig/programs/Xserver/hw/xwin/winglobals.c xc/programs/Xserver/hw/xwin/winglobals.c
--- xc-orig/programs/Xserver/hw/xwin/winglobals.c 2012-03-16 14:45:50.650342808 +0100
+++ xc/programs/Xserver/hw/xwin/winglobals.c 2012-03-16 16:11:04.332114818 +0100
@@ -79,6 +79,7 @@
Bool g_fSilentDupError = FALSE;
Bool g_fNoIcons = FALSE;
+int g_iKioskX = 0;
/*
* Global variables for dynamically loaded libraries and
diff -urw xc-orig/programs/Xserver/hw/xwin/win.h xc/programs/Xserver/hw/xwin/win.h
--- xc-orig/programs/Xserver/hw/xwin/win.h 2012-03-16 14:45:50.653342808 +0100
+++ xc/programs/Xserver/hw/xwin/win.h 2012-03-16 16:11:04.334114818 +0100
@@ -206,6 +206,9 @@
#define WM_TRAYICON (WM_USER + 1000)
#define WM_INIT_SYS_MENU (WM_USER + 1001)
#define WM_GIVEUP (WM_USER + 1002)
+/* defined in winclipboardwndproc.c #define WM_USER_PASTE_COMPLETE (WM_USER + 1003) */
+/* defined in winclipboardwndproc.c #define WM_USER_SET_FILTER (WM_USER + 1004) */
+#define WM_USER_SET_KIOSK (WM_USER + 1005)
/* Local includes */
diff -urw xc-orig/programs/Xserver/hw/xwin/winmouse.c xc/programs/Xserver/hw/xwin/winmouse.c
--- xc-orig/programs/Xserver/hw/xwin/winmouse.c 2009-03-18 18:13:40.000000000 +0100
+++ xc/programs/Xserver/hw/xwin/winmouse.c 2012-03-16 16:11:04.335114818 +0100
@@ -218,11 +218,26 @@
* Enqueue a mouse button event
*/
+extern winScreenInfo g_ScreenInfo[];
+extern int g_iLastScreen;
+extern int g_iKioskX;
+
void
winMouseButtonsSendEvent (int iEventType, int iButton)
{
xEvent xCurrentEvent;
+ if (g_iKioskX) {
+ int FS = (-1 == g_iLastScreen) ? g_ScreenInfo[0].fFullScreen : g_ScreenInfo[g_iLastScreen].fFullScreen;
+ if (FS) {
+ int x = -1;
+ int y = -1;
+ miPointerPosition(&x, &y);
+ if ((0 == y) && ((g_iKioskX - 1) == x))
+ return;
+ }
+ }
+
/* Load an xEvent and enqueue the event */
xCurrentEvent.u.u.type = iEventType;
#if defined(XFree86Server) && defined(XINPUT)
diff -urw xc-orig/programs/Xserver/hw/xwin/winwndproc.c xc/programs/Xserver/hw/xwin/winwndproc.c
--- xc-orig/programs/Xserver/hw/xwin/winwndproc.c 2009-03-18 18:13:40.000000000 +0100
+++ xc/programs/Xserver/hw/xwin/winwndproc.c 2012-03-16 16:12:07.167112017 +0100
@@ -66,6 +66,7 @@
extern HWND g_hwndKeyboardFocus;
extern Bool g_fSoftwareCursor;
extern DWORD g_dwCurrentThreadID;
+extern int g_iKioskX;
/*
@@ -1234,6 +1235,11 @@
}
break;
+ case WM_USER_SET_KIOSK:
+ g_iKioskX = (int)wParam;
+ ErrorF ("Setting Kiosk X to %d\n", g_iKioskX);
+ return 0;
+
case WM_ENDSESSION:
case WM_GIVEUP:
/* Delete the tray Icon */