XQuartz: Constrain the pointer to the updated display bounds on display reconfigure.

http://xquartz.macosforge.org/trac/ticket/346
This commit is contained in:
Jeremy Huddleston 2010-03-19 17:24:27 -07:00
parent 927480be12
commit ed31d50b5f
1 changed files with 11 additions and 2 deletions

View File

@ -241,6 +241,7 @@ void QuartzUpdateScreens(void) {
WindowPtr pRoot;
int x, y, width, height, sx, sy;
xEvent e;
BoxRec bounds;
if (noPseudoramiXExtension || screenInfo.numScreens != 1)
{
@ -277,8 +278,16 @@ void QuartzUpdateScreens(void) {
//pScreen->PaintWindowBackground (pRoot, &pRoot->borderClip, PW_BACKGROUND);
miPaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND);
// TODO: This is a noop in 1.6 and nuked in master... we may need to do something else now to handle it
// DefineInitialRootWindow(pRoot);
/* <rdar://problem/7770779> pointer events are clipped to old display region after display reconfiguration
* http://xquartz.macosforge.org/trac/ticket/346
*/
bounds.x1 = 0;
bounds.x2 = width;
bounds.y1 = 0;
bounds.y2 = height;
pScreen->ConstrainCursor(inputInfo.pointer, pScreen, &bounds);
inputInfo.pointer->spriteInfo->sprite->physLimits = bounds;
inputInfo.pointer->spriteInfo->sprite->hotLimits = bounds;
DEBUG_LOG("Root Window: %dx%d @ (%d, %d) darwinMainScreen (%d, %d) xy (%d, %d) dixScreenOrigins (%d, %d)\n", width, height, x - sx, y - sy, darwinMainScreenX, darwinMainScreenY, x, y, dixScreenOrigins[pScreen->myNum].x, dixScreenOrigins[pScreen->myNum].y);