diff options
Diffstat (limited to 'nx-X11')
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/CHANGELOG | 8 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Events.c | 31 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Screen.c | 51 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Screen.h | 5 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Window.c | 4 |
5 files changed, 30 insertions, 69 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG b/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG index 9e067d407..7310959ef 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG +++ b/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG @@ -1,5 +1,13 @@ ChangeLog: +nxagent-3.4.0-9 + +- Fixed TR06H02362. No icon was swown in the task bar. + +- Fixed keyboard grab in fullscreen mode. + +- Fixed compiler warnings. + nxagent-3.4.0-8 - Grab the keyboard in fullscreen mode on EnterNotify only if mode is diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c index 33eafa55b..40b30308c 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Events.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c @@ -1728,14 +1728,11 @@ FIXME: Don't enqueue the KeyRelease event if the key was nxagentLastEnteredWindow = NULL; } - if (nxagentPointerAndKeyboardGrabbed == 1) + if (X.xcrossing.window == nxagentDefaultWindows[0] && + X.xcrossing.detail != NotifyInferior && + X.xcrossing.mode == NotifyNormal) { - if (X.xcrossing.window == nxagentDefaultWindows[0] && - X.xcrossing.detail != NotifyInferior && - X.xcrossing.mode == NotifyNormal) - { - nxagentUngrabPointerAndKeyboard(&X); - } + nxagentUngrabPointerAndKeyboard(&X); } if (X.xcrossing.detail != NotifyInferior) @@ -2123,14 +2120,8 @@ FIXME: Don't enqueue the KeyRelease event if the key was if (nxagentWMIsRunning) { - if (nxagentOption(Fullscreen)) - { - nxagentMinimizeFromFullScreen(pScreen); - } - else - { - XIconifyWindow(nxagentDisplay, nxagentDefaultWindows[0], DefaultScreen(nxagentDisplay)); - } + XIconifyWindow(nxagentDisplay, nxagentDefaultWindows[0], + DefaultScreen(nxagentDisplay)); } } @@ -3791,6 +3782,11 @@ void nxagentGrabPointerAndKeyboard(XEvent *X) int resource; + if (nxagentPointerAndKeyboardGrabbed == 1) + { + return; + } + #ifdef TEST fprintf(stderr, "nxagentGrabPointerAndKeyboard: Grabbing pointer and keyboard with event at [%p].\n", (void *) X); @@ -3856,6 +3852,11 @@ void nxagentUngrabPointerAndKeyboard(XEvent *X) { unsigned long now; + if (nxagentPointerAndKeyboardGrabbed == 0) + { + return; + } + #ifdef TEST fprintf(stderr, "nxagentUngrabPointerAndKeyboard: Ungrabbing pointer and keyboard with event at [%p].\n", (void *) X); diff --git a/nx-X11/programs/Xserver/hw/nxagent/Screen.c b/nx-X11/programs/Xserver/hw/nxagent/Screen.c index 3522d7e2e..2db7df8fe 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c @@ -287,57 +287,6 @@ void nxagentSetPixmapFormats(ScreenInfo *screenInfo) } } -void nxagentMinimizeFromFullScreen(ScreenPtr pScreen) -{ - XUnmapWindow(nxagentDisplay, nxagentFullscreenWindow); -} - -void nxagentMaximizeToFullScreen(ScreenPtr pScreen) -{ - if(nxagentIpaq) - { - XMapWindow(nxagentDisplay, nxagentFullscreenWindow); - } - else - { -/* -FIXME: We'll chech for ReparentNotify and LeaveNotify events after XReparentWindow() - in order to avoid the session window is iconified. - We could avoid the sesssion window is iconified when a LeaveNotify event is received, - so this check would be unnecessary. -*/ - struct timeval timeout; - int i; - XEvent e; - - XReparentWindow(nxagentDisplay, nxagentFullscreenWindow, - RootWindow(nxagentDisplay, DefaultScreen(nxagentDisplay)), 0, 0); - - for (i = 0; i < 100 && nxagentWMIsRunning; i++) - { - #ifdef TEST - fprintf(stderr, "nxagentSwitchFullscreen: WARNING! Going to wait for the ReparentNotify event.\n"); - #endif - - if (XCheckTypedWindowEvent(nxagentDisplay, nxagentFullscreenWindow, ReparentNotify, &e)) - { - break; - } - - XSync(nxagentDisplay, 0); - - timeout.tv_sec = 0; - timeout.tv_usec = 50 * 1000; - - nxagentWaitEvents(nxagentDisplay, &timeout); - } - - XMapRaised(nxagentDisplay, nxagentFullscreenWindow); - - while (XCheckTypedWindowEvent(nxagentDisplay, nxagentFullscreenWindow, LeaveNotify, &e)); - } -} - Bool nxagentMagicPixelZone(int x, int y) { return (x >= nxagentOption(Width) - 1 && y < 1); diff --git a/nx-X11/programs/Xserver/hw/nxagent/Screen.h b/nx-X11/programs/Xserver/hw/nxagent/Screen.h index 3bf66b2f5..1ab6caad2 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Screen.h +++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.h @@ -60,6 +60,8 @@ extern short nxagentShadowUid; void nxagentSetScreenInfo(ScreenInfo *screenInfo); void nxagentSetPixmapFormats(ScreenInfo *screenInfo); +void nxagentPrintGeometry(); + extern Window nxagentDefaultWindows[MAXSCREENS]; extern Window nxagentInputWindows[MAXSCREENS]; extern Window nxagentScreenSaverWindows[MAXSCREENS]; @@ -85,9 +87,6 @@ extern int nxagentBitsPerPixel(int depth); void nxagentSetScreenSaverTime(void); -void nxagentMinimizeFromFullScreen(ScreenPtr pScreen); -void nxagentMaximizeToFullScreen(ScreenPtr pScreen); - Bool nxagentMagicPixelZone(int x, int y); Bool nxagentResizeScreen(ScreenPtr pScreen, int width, int height, diff --git a/nx-X11/programs/Xserver/hw/nxagent/Window.c b/nx-X11/programs/Xserver/hw/nxagent/Window.c index 2403390b8..2da21b91c 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Window.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Window.c @@ -768,10 +768,14 @@ void nxagentSwitchFullscreen(ScreenPtr pScreen, Bool switchOn) if (switchOn == 1) { nxagentFullscreenWindow = nxagentDefaultWindows[pScreen -> myNum]; + + nxagentGrabPointerAndKeyboard(NULL); } else { nxagentFullscreenWindow = None; + + nxagentUngrabPointerAndKeyboard(NULL); } } |