Commit 602d4b82 authored by Ulrich Sibiller's avatar Ulrich Sibiller Committed by Mike Gabriel

Events.c: add nxagentSwitchEventsAllScreens helper

parent 15ac7a80
...@@ -3746,18 +3746,29 @@ int nxagentHandleReparentNotify(XEvent* X) ...@@ -3746,18 +3746,29 @@ int nxagentHandleReparentNotify(XEvent* X)
return 1; 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++) 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, XkbSelectEvents(nxagentDisplay, XkbUseCoreKbd,
NXAGENT_KEYBOARD_EXTENSION_EVENT_MASK, NXAGENT_KEYBOARD_EXTENSION_EVENT_MASK,
...@@ -3766,46 +3777,19 @@ void nxagentEnableKeyboardEvents(void) ...@@ -3766,46 +3777,19 @@ void nxagentEnableKeyboardEvents(void)
void nxagentDisableKeyboardEvents(void) void nxagentDisableKeyboardEvents(void)
{ {
Mask mask = nxagentGetDefaultEventMask(); nxagentSwitchEventsAllScreens(NXAGENT_KEYBOARD_EVENT_MASK, False);
mask &= ~NXAGENT_KEYBOARD_EVENT_MASK;
nxagentSetDefaultEventMask(mask);
for (int i = 0; i < nxagentNumScreens; i++)
{
XSelectInput(nxagentDisplay, nxagentDefaultWindows[i], mask);
}
XkbSelectEvents(nxagentDisplay, XkbUseCoreKbd, 0x0, 0x0); XkbSelectEvents(nxagentDisplay, XkbUseCoreKbd, 0x0, 0x0);
} }
void nxagentEnablePointerEvents(void) void nxagentEnablePointerEvents(void)
{ {
Mask mask = nxagentGetDefaultEventMask(); nxagentSwitchEventsAllScreens(NXAGENT_POINTER_EVENT_MASK, True);
mask |= NXAGENT_POINTER_EVENT_MASK;
nxagentSetDefaultEventMask(mask);
for (int i = 0; i < nxagentNumScreens; i++)
{
XSelectInput(nxagentDisplay, nxagentDefaultWindows[i], mask);
}
} }
void nxagentDisablePointerEvents(void) void nxagentDisablePointerEvents(void)
{ {
Mask mask = nxagentGetDefaultEventMask(); nxagentSwitchEventsAllScreens(NXAGENT_POINTER_EVENT_MASK, False);
mask &= ~NXAGENT_POINTER_EVENT_MASK;
nxagentSetDefaultEventMask(mask);
for (int i = 0; i < nxagentNumScreens; i++)
{
XSelectInput(nxagentDisplay, nxagentDefaultWindows[i], mask);
}
} }
void nxagentSendFakeKey(int key) void nxagentSendFakeKey(int key)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment