mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-02-15 13:50:33 +01:00
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>
(cherry picked from commit b4061cf5f7)
This commit is contained in:
parent
d23171754a
commit
df4f69d462
1 changed files with 9 additions and 4 deletions
|
|
@ -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…
Add table
Reference in a new issue