Skip to content

Commit

Permalink
Rootless: mi doesn't let us resize root, so we need to do it ourselve…
Browse files Browse the repository at this point in the history
…s...

(cherry picked from commit c1ec36e)
  • Loading branch information
jeremyhu committed May 5, 2008
1 parent be8d218 commit 9e9612c
Showing 1 changed file with 46 additions and 25 deletions.
71 changes: 46 additions & 25 deletions miext/rootless/rootlessWindow.c
Expand Up @@ -1338,34 +1338,55 @@ RootlessResizeWindow(WindowPtr pWin, int x, int y,
RegionRec saveRoot;

RL_DEBUG_MSG("resizewindow start (win 0x%x) ", pWin);

if(pWin->parent) {
if (winRec) {
oldBW = winRec->borderWidth;
oldX = winRec->x;
oldY = winRec->y;
oldW = winRec->width;
oldH = winRec->height;

if (winRec) {
oldBW = winRec->borderWidth;
oldX = winRec->x;
oldY = winRec->y;
oldW = winRec->width;
oldH = winRec->height;

newBW = oldBW;
newX = x;
newY = y;
newW = w + 2*newBW;
newH = h + 2*newBW;

resize_after = StartFrameResize(pWin, TRUE,
oldX, oldY, oldW, oldH, oldBW,
newX, newY, newW, newH, newBW);
}
newBW = oldBW;
newX = x;
newY = y;
newW = w + 2*newBW;
newH = h + 2*newBW;

HUGE_ROOT(pWin);
SCREEN_UNWRAP(pScreen, ResizeWindow);
pScreen->ResizeWindow(pWin, x, y, w, h, pSib);
SCREEN_WRAP(pScreen, ResizeWindow);
NORMAL_ROOT(pWin);
resize_after = StartFrameResize(pWin, TRUE,
oldX, oldY, oldW, oldH, oldBW,
newX, newY, newW, newH, newBW);
}

if (winRec) {
FinishFrameResize(pWin, TRUE, oldX, oldY, oldW, oldH, oldBW,
newX, newY, newW, newH, newBW, resize_after);
HUGE_ROOT(pWin);
SCREEN_UNWRAP(pScreen, ResizeWindow);
pScreen->ResizeWindow(pWin, x, y, w, h, pSib);
SCREEN_WRAP(pScreen, ResizeWindow);
NORMAL_ROOT(pWin);

if (winRec) {
FinishFrameResize(pWin, TRUE, oldX, oldY, oldW, oldH, oldBW,
newX, newY, newW, newH, newBW, resize_after);
}
} else {
/* Special case for resizing the root window */
BoxRec box;

pWin->drawable.x = x;
pWin->drawable.y = y;
pWin->drawable.width = w;
pWin->drawable.height = h;

box.x1 = x; box.y1 = y;
box.x2 = x + w; box.y2 = y + h;
REGION_UNINIT(pScreen, &pWin->winSize);
REGION_INIT(pScreen, &pWin->winSize, &box, 1);
REGION_COPY(pScreen, &pWin->borderSize, &pWin->winSize);
REGION_COPY(pScreen, &pWin->clipList, &pWin->winSize);
REGION_COPY(pScreen, &pWin->borderClip, &pWin->winSize);

miSendExposures(pWin, &pWin->borderClip,
pWin->drawable.x, pWin->drawable.y);
}

RL_DEBUG_MSG("resizewindow end\n");
Expand Down

0 comments on commit 9e9612c

Please sign in to comment.