Fix border tile origin when background is ParentRelative
According to http://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.html#requests:CreateWindow "The border tile origin is always the same as the background tile origin." ChangeWindowAttributes goes to some effort to make sure it repaints the border tile whenever the background origin may have changed, but miPaintWindow was ignoring the background origin. Found by xts XChangeWindowAttributes-3 Signed-off-by: Peter Harris <pharris@opentext.com> Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
8a8d51358c
commit
b4061cf5f7
|
@ -478,14 +478,21 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
|
|||
else {
|
||||
PixmapPtr pixmap;
|
||||
|
||||
tile_x_off = drawable->x;
|
||||
tile_y_off = drawable->y;
|
||||
fill = pWin->border;
|
||||
solid = pWin->borderIsPixel;
|
||||
|
||||
/* servers without pixmaps draw their own borders */
|
||||
if (!pScreen->GetWindowPixmap)
|
||||
return;
|
||||
pixmap = (*pScreen->GetWindowPixmap) ((WindowPtr) drawable);
|
||||
drawable = &pixmap->drawable;
|
||||
|
||||
while (pWin->backgroundState == ParentRelative)
|
||||
pWin = pWin->parent;
|
||||
|
||||
tile_x_off = pWin->drawable.x;
|
||||
tile_y_off = pWin->drawable.y;
|
||||
|
||||
#ifdef COMPOSITE
|
||||
draw_x_off = pixmap->screen_x;
|
||||
draw_y_off = pixmap->screen_y;
|
||||
|
@ -495,8 +502,6 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
|
|||
draw_x_off = 0;
|
||||
draw_y_off = 0;
|
||||
#endif
|
||||
fill = pWin->border;
|
||||
solid = pWin->borderIsPixel;
|
||||
}
|
||||
|
||||
gcval[0].val = GXcopy;
|
||||
|
|
Loading…
Reference in New Issue
Block a user