Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
bcbc84e2
Commit
bcbc84e2
authored
Jul 20, 2017
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
user32: Don't exclude clipped children from the copied window bits since they may be up to date.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
5a61913e
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
23 additions
and
18 deletions
+23
-18
painting.c
dlls/user32/painting.c
+1
-1
server_protocol.h
include/wine/server_protocol.h
+10
-9
protocol.def
server/protocol.def
+9
-8
window.c
server/window.c
+3
-0
No files found.
dlls/user32/painting.c
View file @
bcbc84e2
...
...
@@ -774,7 +774,7 @@ static void copy_bits_from_surface( HWND hwnd, struct window_surface *surface,
char
buffer
[
FIELD_OFFSET
(
BITMAPINFO
,
bmiColors
[
256
]
)];
BITMAPINFO
*
info
=
(
BITMAPINFO
*
)
buffer
;
void
*
bits
;
UINT
flags
=
UPDATE_NOCHILDREN
;
UINT
flags
=
UPDATE_NOCHILDREN
|
UPDATE_CLIPCHILDREN
;
HRGN
rgn
=
get_update_region
(
hwnd
,
&
flags
,
NULL
);
HDC
hdc
=
GetDCEx
(
hwnd
,
rgn
,
DCX_CACHE
|
DCX_WINDOW
|
DCX_EXCLUDERGN
);
...
...
include/wine/server_protocol.h
View file @
bcbc84e2
...
...
@@ -3748,14 +3748,15 @@ struct get_update_region_reply
/* VARARG(region,rectangles); */
char
__pad_20
[
4
];
};
#define UPDATE_NONCLIENT 0x01
#define UPDATE_ERASE 0x02
#define UPDATE_PAINT 0x04
#define UPDATE_INTERNALPAINT 0x08
#define UPDATE_ALLCHILDREN 0x10
#define UPDATE_NOCHILDREN 0x20
#define UPDATE_NOREGION 0x40
#define UPDATE_DELAYED_ERASE 0x80
#define UPDATE_NONCLIENT 0x001
#define UPDATE_ERASE 0x002
#define UPDATE_PAINT 0x004
#define UPDATE_INTERNALPAINT 0x008
#define UPDATE_ALLCHILDREN 0x010
#define UPDATE_NOCHILDREN 0x020
#define UPDATE_NOREGION 0x040
#define UPDATE_DELAYED_ERASE 0x080
#define UPDATE_CLIPCHILDREN 0x100
...
...
@@ -6419,6 +6420,6 @@ union generic_reply
struct
terminate_job_reply
terminate_job_reply
;
};
#define SERVER_PROTOCOL_VERSION 53
4
#define SERVER_PROTOCOL_VERSION 53
5
#endif
/* __WINE_WINE_SERVER_PROTOCOL_H */
server/protocol.def
View file @
bcbc84e2
...
...
@@ -2694,14 +2694,15 @@ enum coords_relative
data_size_t total_size; /* total size of the resulting region */
VARARG(region,rectangles); /* list of rectangles for the region (in screen coords) */
@END
#define UPDATE_NONCLIENT 0x01 /* get region for repainting non-client area */
#define UPDATE_ERASE 0x02 /* get region for erasing client area */
#define UPDATE_PAINT 0x04 /* get region for painting client area */
#define UPDATE_INTERNALPAINT 0x08 /* get region if internal paint is pending */
#define UPDATE_ALLCHILDREN 0x10 /* force repaint of all children */
#define UPDATE_NOCHILDREN 0x20 /* don't try to repaint any children */
#define UPDATE_NOREGION 0x40 /* don't return a region, only the flags */
#define UPDATE_DELAYED_ERASE 0x80 /* still needs erase after BeginPaint */
#define UPDATE_NONCLIENT 0x001 /* get region for repainting non-client area */
#define UPDATE_ERASE 0x002 /* get region for erasing client area */
#define UPDATE_PAINT 0x004 /* get region for painting client area */
#define UPDATE_INTERNALPAINT 0x008 /* get region if internal paint is pending */
#define UPDATE_ALLCHILDREN 0x010 /* force repaint of all children */
#define UPDATE_NOCHILDREN 0x020 /* don't try to repaint any children */
#define UPDATE_NOREGION 0x040 /* don't return a region, only the flags */
#define UPDATE_DELAYED_ERASE 0x080 /* still needs erase after BeginPaint */
#define UPDATE_CLIPCHILDREN 0x100 /* remove clipped children from the update region */
/* Update the z order of a window so that a given rectangle is fully visible */
...
...
server/window.c
View file @
bcbc84e2
...
...
@@ -2587,6 +2587,9 @@ DECL_HANDLER(get_update_region)
free_region
(
region
);
return
;
}
if
((
flags
&
UPDATE_CLIPCHILDREN
)
&&
(
win
->
style
&
WS_CLIPCHILDREN
))
clip_children
(
win
,
NULL
,
region
,
win
->
client_rect
.
left
-
win
->
window_rect
.
left
,
win
->
client_rect
.
top
-
win
->
window_rect
.
top
);
map_win_region_to_screen
(
win
,
region
);
if
(
!
(
data
=
get_region_data_and_free
(
region
,
get_reply_max_size
(),
&
reply
->
total_size
)))
return
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment