From 602d4b82b1e6b95e6806fb7fd912ff46a34cb69b Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Thu, 5 Sep 2019 22:15:20 +0200 Subject: Events.c: add nxagentSwitchEventsAllScreens helper --- nx-X11/programs/Xserver/hw/nxagent/Events.c | 54 ++++++++++------------------- 1 file changed, 19 insertions(+), 35 deletions(-) (limited to 'nx-X11') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c index 72c39c38c..43504370b 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Events.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c @@ -3746,18 +3746,29 @@ int nxagentHandleReparentNotify(XEvent* X) return 1; } -void nxagentEnableKeyboardEvents(void) +/* + * Helper for nxagent(Enable|Disable)(Keyboard|Pointer)Events + */ +static void nxagentSwitchEventsAllScreens(Mask mask, Bool enable) { - Mask mask = nxagentGetDefaultEventMask(); + Mask newmask = nxagentGetDefaultEventMask(); - mask |= NXAGENT_KEYBOARD_EVENT_MASK; + if (enable) + newmask |= mask; + else + newmask &= ~mask; - nxagentSetDefaultEventMask(mask); + nxagentSetDefaultEventMask(newmask); for (int i = 0; i < nxagentNumScreens; i++) { - XSelectInput(nxagentDisplay, nxagentDefaultWindows[i], mask); + XSelectInput(nxagentDisplay, nxagentDefaultWindows[i], newmask); } +} + +void nxagentEnableKeyboardEvents(void) +{ + nxagentSwitchEventsAllScreens(NXAGENT_KEYBOARD_EVENT_MASK, True); XkbSelectEvents(nxagentDisplay, XkbUseCoreKbd, NXAGENT_KEYBOARD_EXTENSION_EVENT_MASK, @@ -3766,46 +3777,19 @@ void nxagentEnableKeyboardEvents(void) void nxagentDisableKeyboardEvents(void) { - Mask mask = nxagentGetDefaultEventMask(); - - mask &= ~NXAGENT_KEYBOARD_EVENT_MASK; - - nxagentSetDefaultEventMask(mask); - - for (int i = 0; i < nxagentNumScreens; i++) - { - XSelectInput(nxagentDisplay, nxagentDefaultWindows[i], mask); - } + nxagentSwitchEventsAllScreens(NXAGENT_KEYBOARD_EVENT_MASK, False); XkbSelectEvents(nxagentDisplay, XkbUseCoreKbd, 0x0, 0x0); } void nxagentEnablePointerEvents(void) { - Mask mask = nxagentGetDefaultEventMask(); - - mask |= NXAGENT_POINTER_EVENT_MASK; - - nxagentSetDefaultEventMask(mask); - - for (int i = 0; i < nxagentNumScreens; i++) - { - XSelectInput(nxagentDisplay, nxagentDefaultWindows[i], mask); - } + nxagentSwitchEventsAllScreens(NXAGENT_POINTER_EVENT_MASK, True); } void nxagentDisablePointerEvents(void) { - Mask mask = nxagentGetDefaultEventMask(); - - mask &= ~NXAGENT_POINTER_EVENT_MASK; - - nxagentSetDefaultEventMask(mask); - - for (int i = 0; i < nxagentNumScreens; i++) - { - XSelectInput(nxagentDisplay, nxagentDefaultWindows[i], mask); - } + nxagentSwitchEventsAllScreens(NXAGENT_POINTER_EVENT_MASK, False); } void nxagentSendFakeKey(int key) -- cgit v1.2.3