From: Dmitry Timoshkov dmitry@baikal.ru
Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru --- server/window.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/server/window.c b/server/window.c index fc16acc1822..cc48b8343ee 100644 --- a/server/window.c +++ b/server/window.c @@ -1313,7 +1313,19 @@ static struct region *crop_region_to_win_rect( struct window *win, struct region rectangle_t rect; struct region *tmp;
- if (!get_window_visible_rect( win, &rect, frame )) return NULL; + if (win->parent && is_window_using_parent_dc( win )) + { + int offset_x, offset_y; + + if (!get_window_visible_rect( win->parent, &rect, 0 )) return NULL; + + offset_x = rect.left + (frame ? win->window_rect.left : win->client_rect.left); + offset_y = rect.top + (frame ? win->window_rect.top : win->client_rect.top); + offset_rect( &rect, -offset_x, -offset_y ); + } + else + if (!get_window_visible_rect( win, &rect, frame )) return NULL; + if (!(tmp = create_empty_region())) return NULL; set_region_rect( tmp, &rect );