Switch to use IsFloating()
This is not a straightforward search/replacement due to a long-standing issue. dev->u.master is the same field as dev->u.lastSlave. Thus, if dev is a master device, a check for dev->u.master may give us false positives and false negatives. The switch to IsFloating() spells out these cases and modifies the conditions accordingly to cover both cases. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Benjamin Tissoires <tissoire@cena.fr>
This commit is contained in:
parent
e48bf3b640
commit
dc57f89959
|
@ -713,7 +713,7 @@ ChangeMasterDeviceClasses(DeviceIntPtr device, DeviceChangedEvent *dce)
|
||||||
if (IsMaster(slave))
|
if (IsMaster(slave))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!slave->u.master)
|
if (IsFloating(slave))
|
||||||
return; /* set floating since the event */
|
return; /* set floating since the event */
|
||||||
|
|
||||||
if (slave->u.master->id != dce->masterid)
|
if (slave->u.master->id != dce->masterid)
|
||||||
|
@ -1009,7 +1009,7 @@ ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device)
|
||||||
b = device->button;
|
b = device->button;
|
||||||
k = device->key;
|
k = device->key;
|
||||||
|
|
||||||
if (IsMaster(device) || !device->u.master)
|
if (IsMaster(device) || IsFloating(device))
|
||||||
CheckMotion(event, device);
|
CheckMotion(event, device);
|
||||||
|
|
||||||
switch (event->type)
|
switch (event->type)
|
||||||
|
@ -1226,7 +1226,7 @@ DeviceFocusEvent(DeviceIntPtr dev, int type, int mode, int detail,
|
||||||
DeviceIntPtr mouse;
|
DeviceIntPtr mouse;
|
||||||
int btlen, len, i;
|
int btlen, len, i;
|
||||||
|
|
||||||
mouse = (IsMaster(dev) || dev->u.master) ? GetMaster(dev, MASTER_POINTER) : dev;
|
mouse = IsFloating(dev) ? dev : GetMaster(dev, MASTER_POINTER);
|
||||||
|
|
||||||
/* XI 2 event */
|
/* XI 2 event */
|
||||||
btlen = (mouse->button) ? bits_to_bytes(mouse->button->numButtons) : 0;
|
btlen = (mouse->button) ? bits_to_bytes(mouse->button->numButtons) : 0;
|
||||||
|
|
|
@ -162,10 +162,7 @@ ProcXIPassiveGrabDevice(ClientPtr client)
|
||||||
if (!modifiers_failed)
|
if (!modifiers_failed)
|
||||||
return BadAlloc;
|
return BadAlloc;
|
||||||
|
|
||||||
if (!IsMaster(dev) && dev->u.master)
|
mod_dev = (IsFloating(dev)) ? dev : GetMaster(dev, MASTER_KEYBOARD);
|
||||||
mod_dev = GetMaster(dev, MASTER_KEYBOARD);
|
|
||||||
else
|
|
||||||
mod_dev = dev;
|
|
||||||
|
|
||||||
for (i = 0; i < stuff->num_modifiers; i++, modifiers++)
|
for (i = 0; i < stuff->num_modifiers; i++, modifiers++)
|
||||||
{
|
{
|
||||||
|
@ -280,10 +277,7 @@ ProcXIPassiveUngrabDevice(ClientPtr client)
|
||||||
if (rc != Success)
|
if (rc != Success)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
if (!IsMaster(dev) && dev->u.master)
|
mod_dev = (IsFloating(dev)) ? dev : GetMaster(dev, MASTER_KEYBOARD);
|
||||||
mod_dev = GetMaster(dev, MASTER_KEYBOARD);
|
|
||||||
else
|
|
||||||
mod_dev = dev;
|
|
||||||
|
|
||||||
tempGrab.resource = client->clientAsMask;
|
tempGrab.resource = client->clientAsMask;
|
||||||
tempGrab.device = dev;
|
tempGrab.device = dev;
|
||||||
|
|
|
@ -383,7 +383,7 @@ int GetDeviceUse(DeviceIntPtr dev, uint16_t *attachment)
|
||||||
DeviceIntPtr paired = GetPairedDevice(dev);
|
DeviceIntPtr paired = GetPairedDevice(dev);
|
||||||
use = IsPointerDevice(dev) ? XIMasterPointer : XIMasterKeyboard;
|
use = IsPointerDevice(dev) ? XIMasterPointer : XIMasterKeyboard;
|
||||||
*attachment = (paired ? paired->id : 0);
|
*attachment = (paired ? paired->id : 0);
|
||||||
} else if (master)
|
} else if (!IsFloating(dev))
|
||||||
{
|
{
|
||||||
use = IsPointerDevice(master) ? XISlavePointer : XISlaveKeyboard;
|
use = IsPointerDevice(master) ? XISlavePointer : XISlaveKeyboard;
|
||||||
*attachment = master->id;
|
*attachment = master->id;
|
||||||
|
|
|
@ -93,7 +93,7 @@ ProcXIQueryPointer(ClientPtr client)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pDev->valuator == NULL || IsKeyboardDevice(pDev) ||
|
if (pDev->valuator == NULL || IsKeyboardDevice(pDev) ||
|
||||||
(!IsMaster(pDev) && pDev->u.master)) /* no attached devices */
|
(!IsMaster(pDev) && !IsFloating(pDev))) /* no attached devices */
|
||||||
{
|
{
|
||||||
client->errorValue = stuff->deviceid;
|
client->errorValue = stuff->deviceid;
|
||||||
return BadDevice;
|
return BadDevice;
|
||||||
|
|
|
@ -97,7 +97,7 @@ ProcXIWarpPointer(ClientPtr client)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((!IsMaster(pDev) && pDev->u.master) ||
|
if ((!IsMaster(pDev) && !IsFloating(pDev)) ||
|
||||||
(IsMaster(pDev) && !IsPointerDevice(pDev)))
|
(IsMaster(pDev) && !IsPointerDevice(pDev)))
|
||||||
{
|
{
|
||||||
client->errorValue = stuff->deviceid;
|
client->errorValue = stuff->deviceid;
|
||||||
|
|
|
@ -987,7 +987,7 @@ CloseDownDevices(void)
|
||||||
*/
|
*/
|
||||||
for (dev = inputInfo.devices; dev; dev = dev->next)
|
for (dev = inputInfo.devices; dev; dev = dev->next)
|
||||||
{
|
{
|
||||||
if (!IsMaster(dev) && dev->u.master)
|
if (!IsMaster(dev) && !IsFloating(dev))
|
||||||
dev->u.master = NULL;
|
dev->u.master = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2397,11 +2397,11 @@ AttachDevice(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr master)
|
||||||
return BadDevice;
|
return BadDevice;
|
||||||
|
|
||||||
/* set from floating to floating? */
|
/* set from floating to floating? */
|
||||||
if (!dev->u.master && !master && dev->enabled)
|
if (IsFloating(dev) && !master && dev->enabled)
|
||||||
return Success;
|
return Success;
|
||||||
|
|
||||||
/* free the existing sprite. */
|
/* free the existing sprite. */
|
||||||
if (!dev->u.master && dev->spriteInfo->paired == dev)
|
if (IsFloating(dev) && dev->spriteInfo->paired == dev)
|
||||||
{
|
{
|
||||||
screen = miPointerGetScreen(dev);
|
screen = miPointerGetScreen(dev);
|
||||||
screen->DeviceCursorCleanup(dev, screen);
|
screen->DeviceCursorCleanup(dev, screen);
|
||||||
|
@ -2459,7 +2459,7 @@ AttachDevice(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr master)
|
||||||
DeviceIntPtr
|
DeviceIntPtr
|
||||||
GetPairedDevice(DeviceIntPtr dev)
|
GetPairedDevice(DeviceIntPtr dev)
|
||||||
{
|
{
|
||||||
if (!IsMaster(dev) && dev->u.master)
|
if (!IsMaster(dev) && !IsFloating(dev))
|
||||||
dev = dev->u.master;
|
dev = dev->u.master;
|
||||||
|
|
||||||
return dev->spriteInfo->paired;
|
return dev->spriteInfo->paired;
|
||||||
|
|
|
@ -1404,7 +1404,7 @@ CheckGrabForSyncs(DeviceIntPtr thisDev, Bool thisMode, Bool otherMode)
|
||||||
static void
|
static void
|
||||||
DetachFromMaster(DeviceIntPtr dev)
|
DetachFromMaster(DeviceIntPtr dev)
|
||||||
{
|
{
|
||||||
if (!dev->u.master)
|
if (!IsFloating(dev))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
dev->saved_master_id = dev->u.master->id;
|
dev->saved_master_id = dev->u.master->id;
|
||||||
|
@ -2806,7 +2806,7 @@ WindowsRestructured(void)
|
||||||
DeviceIntPtr pDev = inputInfo.devices;
|
DeviceIntPtr pDev = inputInfo.devices;
|
||||||
while(pDev)
|
while(pDev)
|
||||||
{
|
{
|
||||||
if (IsMaster(pDev) || !pDev->u.master)
|
if (IsMaster(pDev) || IsFloating(pDev))
|
||||||
CheckMotion(NULL, pDev);
|
CheckMotion(NULL, pDev);
|
||||||
pDev = pDev->next;
|
pDev = pDev->next;
|
||||||
}
|
}
|
||||||
|
@ -3401,7 +3401,7 @@ CheckPassiveGrabsOnWindow(
|
||||||
* attached master keyboard. Since the slave may have been
|
* attached master keyboard. Since the slave may have been
|
||||||
* reattached after the grab, the modifier device may not be the
|
* reattached after the grab, the modifier device may not be the
|
||||||
* same. */
|
* same. */
|
||||||
if (!IsMaster(grab->device) && device->u.master)
|
if (!IsMaster(grab->device) && !IsFloating(device))
|
||||||
gdev = GetMaster(device, MASTER_KEYBOARD);
|
gdev = GetMaster(device, MASTER_KEYBOARD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -767,7 +767,7 @@ moveRelative(DeviceIntPtr dev, int *x, int *y, ValuatorMask *mask)
|
||||||
/* if attached, clip both x and y to the defined limits (usually
|
/* if attached, clip both x and y to the defined limits (usually
|
||||||
* co-ord space limit). If it is attached, we need x/y to go over the
|
* co-ord space limit). If it is attached, we need x/y to go over the
|
||||||
* limits to be able to change screens. */
|
* limits to be able to change screens. */
|
||||||
if(dev->u.master && dev->valuator) {
|
if(dev->valuator && IsMaster(dev) || !IsFloating(dev)) {
|
||||||
if (valuator_get_mode(dev, 0) == Absolute)
|
if (valuator_get_mode(dev, 0) == Absolute)
|
||||||
clipAxis(dev, 0, x);
|
clipAxis(dev, 0, x);
|
||||||
if (valuator_get_mode(dev, 1) == Absolute)
|
if (valuator_get_mode(dev, 1) == Absolute)
|
||||||
|
@ -865,7 +865,7 @@ positionSprite(DeviceIntPtr dev, int *x, int *y, float x_frac, float y_frac,
|
||||||
* to the current screen. */
|
* to the current screen. */
|
||||||
miPointerSetPosition(dev, screenx, screeny);
|
miPointerSetPosition(dev, screenx, screeny);
|
||||||
|
|
||||||
if (dev->u.master) {
|
if(!IsMaster(dev) || !IsFloating(dev)) {
|
||||||
DeviceIntPtr master = GetMaster(dev, MASTER_POINTER);
|
DeviceIntPtr master = GetMaster(dev, MASTER_POINTER);
|
||||||
master->last.valuators[0] = *screenx;
|
master->last.valuators[0] = *screenx;
|
||||||
master->last.valuators[1] = *screeny;
|
master->last.valuators[1] = *screeny;
|
||||||
|
@ -912,7 +912,7 @@ updateHistory(DeviceIntPtr dev, ValuatorMask *mask, CARD32 ms)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
updateMotionHistory(dev, ms, mask, dev->last.valuators);
|
updateMotionHistory(dev, ms, mask, dev->last.valuators);
|
||||||
if (dev->u.master)
|
if(!IsMaster(dev) || !IsFloating(dev))
|
||||||
{
|
{
|
||||||
DeviceIntPtr master = GetMaster(dev, MASTER_POINTER);
|
DeviceIntPtr master = GetMaster(dev, MASTER_POINTER);
|
||||||
updateMotionHistory(master, ms, mask, dev->last.valuators);
|
updateMotionHistory(master, ms, mask, dev->last.valuators);
|
||||||
|
|
|
@ -273,7 +273,7 @@ change_modmap(ClientPtr client, DeviceIntPtr dev, KeyCode *modkeymap,
|
||||||
do_modmap_change(client, tmp, modmap);
|
do_modmap_change(client, tmp, modmap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (dev->u.master && dev->u.master->u.lastSlave == dev) {
|
else if (!IsFloating(dev) && dev->u.master->u.lastSlave == dev) {
|
||||||
/* If this fails, expect the results to be weird. */
|
/* If this fails, expect the results to be weird. */
|
||||||
if (check_modmap_change(client, dev->u.master, modmap))
|
if (check_modmap_change(client, dev->u.master, modmap))
|
||||||
do_modmap_change(client, dev->u.master, modmap);
|
do_modmap_change(client, dev->u.master, modmap);
|
||||||
|
|
|
@ -325,7 +325,7 @@ CopyGetMasterEvent(DeviceIntPtr sdev,
|
||||||
CHECKEVENT(original);
|
CHECKEVENT(original);
|
||||||
|
|
||||||
/* ET_XQuartz has sdev == NULL */
|
/* ET_XQuartz has sdev == NULL */
|
||||||
if (!sdev || IsMaster(sdev) || !sdev->u.master)
|
if (!sdev || IsMaster(sdev) || IsFloating(sdev))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
#if XFreeXDGA
|
#if XFreeXDGA
|
||||||
|
@ -410,7 +410,7 @@ mieqProcessDeviceEvent(DeviceIntPtr dev,
|
||||||
handler(screenNum, event, dev);
|
handler(screenNum, event, dev);
|
||||||
/* Check for the SD's master in case the device got detached
|
/* Check for the SD's master in case the device got detached
|
||||||
* during event processing */
|
* during event processing */
|
||||||
if (master && dev->u.master)
|
if (master && !IsFloating(dev))
|
||||||
handler(screenNum, &mevent, master);
|
handler(screenNum, &mevent, master);
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
|
@ -419,7 +419,7 @@ mieqProcessDeviceEvent(DeviceIntPtr dev,
|
||||||
|
|
||||||
/* Check for the SD's master in case the device got detached
|
/* Check for the SD's master in case the device got detached
|
||||||
* during event processing */
|
* during event processing */
|
||||||
if (master && dev->u.master)
|
if (master && !IsFloating(dev))
|
||||||
master->public.processInputProc(&mevent, master);
|
master->public.processInputProc(&mevent, master);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,7 +73,7 @@ DevPrivateKeyRec miPointerScreenKeyRec;
|
||||||
DevPrivateKeyRec miPointerPrivKeyRec;
|
DevPrivateKeyRec miPointerPrivKeyRec;
|
||||||
|
|
||||||
#define MIPOINTER(dev) \
|
#define MIPOINTER(dev) \
|
||||||
((!IsMaster(dev) && !dev->u.master) ? \
|
(IsFloating(dev) ? \
|
||||||
(miPointerPtr)dixLookupPrivate(&(dev)->devPrivates, miPointerPrivKey): \
|
(miPointerPtr)dixLookupPrivate(&(dev)->devPrivates, miPointerPrivKey): \
|
||||||
(miPointerPtr)dixLookupPrivate(&(GetMaster(dev, MASTER_POINTER))->devPrivates, miPointerPrivKey))
|
(miPointerPtr)dixLookupPrivate(&(GetMaster(dev, MASTER_POINTER))->devPrivates, miPointerPrivKey))
|
||||||
|
|
||||||
|
@ -332,7 +332,7 @@ miPointerDeviceCleanup(DeviceIntPtr pDev, ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
SetupScreen(pScreen);
|
SetupScreen(pScreen);
|
||||||
|
|
||||||
if (!IsMaster(pDev) && pDev->u.master)
|
if (!IsMaster(pDev) && !IsFloating(pDev))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
(*pScreenPriv->spriteFuncs->DeviceCursorCleanup)(pDev, pScreen);
|
(*pScreenPriv->spriteFuncs->DeviceCursorCleanup)(pDev, pScreen);
|
||||||
|
|
|
@ -143,7 +143,7 @@ typedef struct {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MISPRITE(dev) \
|
#define MISPRITE(dev) \
|
||||||
((!IsMaster(dev) && !dev->u.master) ? \
|
(IsFloating(dev) ? \
|
||||||
(miCursorInfoPtr)dixLookupPrivate(&dev->devPrivates, miSpriteDevPrivatesKey) : \
|
(miCursorInfoPtr)dixLookupPrivate(&dev->devPrivates, miSpriteDevPrivatesKey) : \
|
||||||
(miCursorInfoPtr)dixLookupPrivate(&(GetMaster(dev, MASTER_POINTER))->devPrivates, miSpriteDevPrivatesKey))
|
(miCursorInfoPtr)dixLookupPrivate(&(GetMaster(dev, MASTER_POINTER))->devPrivates, miSpriteDevPrivatesKey))
|
||||||
|
|
||||||
|
@ -766,7 +766,7 @@ miSpriteRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
|
||||||
{
|
{
|
||||||
miCursorInfoPtr pCursorInfo;
|
miCursorInfoPtr pCursorInfo;
|
||||||
|
|
||||||
if (!IsMaster(pDev) && !pDev->u.master)
|
if (IsFloating(pDev))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
pCursorInfo = MISPRITE(pDev);
|
pCursorInfo = MISPRITE(pDev);
|
||||||
|
@ -790,7 +790,7 @@ miSpriteSetCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
|
||||||
miCursorInfoPtr pPointer;
|
miCursorInfoPtr pPointer;
|
||||||
miSpriteScreenPtr pScreenPriv;
|
miSpriteScreenPtr pScreenPriv;
|
||||||
|
|
||||||
if (!IsMaster(pDev) && !pDev->u.master)
|
if (IsFloating(pDev))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pPointer = MISPRITE(pDev);
|
pPointer = MISPRITE(pDev);
|
||||||
|
@ -848,7 +848,7 @@ miSpriteMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
|
||||||
{
|
{
|
||||||
CursorPtr pCursor;
|
CursorPtr pCursor;
|
||||||
|
|
||||||
if (!IsMaster(pDev) && !pDev->u.master)
|
if (IsFloating(pDev))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pCursor = MISPRITE(pDev)->pCursor;
|
pCursor = MISPRITE(pDev)->pCursor;
|
||||||
|
@ -905,7 +905,7 @@ miSpriteRemoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen)
|
||||||
miCursorInfoPtr pCursorInfo;
|
miCursorInfoPtr pCursorInfo;
|
||||||
|
|
||||||
|
|
||||||
if (!IsMaster(pDev) && !pDev->u.master)
|
if (IsFloating(pDev))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
DamageDrawInternal (pScreen, TRUE);
|
DamageDrawInternal (pScreen, TRUE);
|
||||||
|
@ -944,7 +944,7 @@ miSpriteSaveUnderCursor(DeviceIntPtr pDev, ScreenPtr pScreen)
|
||||||
CursorPtr pCursor;
|
CursorPtr pCursor;
|
||||||
miCursorInfoPtr pCursorInfo;
|
miCursorInfoPtr pCursorInfo;
|
||||||
|
|
||||||
if (!IsMaster(pDev) && !pDev->u.master)
|
if (IsFloating(pDev))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
DamageDrawInternal (pScreen, TRUE);
|
DamageDrawInternal (pScreen, TRUE);
|
||||||
|
@ -985,7 +985,7 @@ miSpriteRestoreCursor (DeviceIntPtr pDev, ScreenPtr pScreen)
|
||||||
CursorPtr pCursor;
|
CursorPtr pCursor;
|
||||||
miCursorInfoPtr pCursorInfo;
|
miCursorInfoPtr pCursorInfo;
|
||||||
|
|
||||||
if (!IsMaster(pDev) && !pDev->u.master)
|
if (IsFloating(pDev))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
DamageDrawInternal (pScreen, TRUE);
|
DamageDrawInternal (pScreen, TRUE);
|
||||||
|
@ -1025,7 +1025,7 @@ miSpriteComputeSaved (DeviceIntPtr pDev, ScreenPtr pScreen)
|
||||||
CursorPtr pCursor;
|
CursorPtr pCursor;
|
||||||
miCursorInfoPtr pCursorInfo;
|
miCursorInfoPtr pCursorInfo;
|
||||||
|
|
||||||
if (!IsMaster(pDev) && !pDev->u.master)
|
if (IsFloating(pDev))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pCursorInfo = MISPRITE(pDev);
|
pCursorInfo = MISPRITE(pDev);
|
||||||
|
|
|
@ -5883,7 +5883,7 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
nkn.changed|= XkbNKN_GeometryMask;
|
nkn.changed|= XkbNKN_GeometryMask;
|
||||||
XkbSendNewKeyboardNotify(dev,&nkn);
|
XkbSendNewKeyboardNotify(dev,&nkn);
|
||||||
|
|
||||||
if (!IsMaster(dev) && dev->u.master)
|
if (!IsMaster(dev) && !IsFloating(dev))
|
||||||
{
|
{
|
||||||
DeviceIntPtr master = dev->u.master;
|
DeviceIntPtr master = dev->u.master;
|
||||||
if (master->u.lastSlave == dev)
|
if (master->u.lastSlave == dev)
|
||||||
|
|
|
@ -694,7 +694,7 @@ ProcessInputProc backupproc;
|
||||||
xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(mouse);
|
xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(mouse);
|
||||||
DeviceEvent *event = &ev->device_event;
|
DeviceEvent *event = &ev->device_event;
|
||||||
|
|
||||||
dev = (IsMaster(mouse) || mouse->u.master) ? GetMaster(mouse, MASTER_KEYBOARD) : mouse;
|
dev = IsFloating(mouse) ? mouse : GetMaster(mouse, MASTER_KEYBOARD);
|
||||||
|
|
||||||
if (dev && dev->key)
|
if (dev && dev->key)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1367,7 +1367,7 @@ InjectPointerKeyEvents(DeviceIntPtr dev, int type, int button, int flags, Valuat
|
||||||
mpointer = GetMaster(dev, MASTER_POINTER);
|
mpointer = GetMaster(dev, MASTER_POINTER);
|
||||||
lastSlave = mpointer->u.lastSlave;
|
lastSlave = mpointer->u.lastSlave;
|
||||||
ptr = GetXTestDevice(mpointer);
|
ptr = GetXTestDevice(mpointer);
|
||||||
} else if (!dev->u.master)
|
} else if (IsFloating(dev))
|
||||||
ptr = dev;
|
ptr = dev;
|
||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
|
@ -1397,7 +1397,7 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y)
|
||||||
int gpe_flags = 0;
|
int gpe_flags = 0;
|
||||||
|
|
||||||
/* ignore attached SDs */
|
/* ignore attached SDs */
|
||||||
if (!IsMaster(dev) && GetMaster(dev, MASTER_POINTER) != NULL)
|
if (!IsMaster(dev) && !IsFloating(dev))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY)
|
if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY)
|
||||||
|
@ -1427,7 +1427,7 @@ XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button)
|
||||||
if (IsMaster(dev)) {
|
if (IsMaster(dev)) {
|
||||||
DeviceIntPtr mpointer = GetMaster(dev, MASTER_POINTER);
|
DeviceIntPtr mpointer = GetMaster(dev, MASTER_POINTER);
|
||||||
ptr = GetXTestDevice(mpointer);
|
ptr = GetXTestDevice(mpointer);
|
||||||
} else if (!dev->u.master)
|
} else if (IsFloating(dev))
|
||||||
ptr = dev;
|
ptr = dev;
|
||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue