-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
(upstream broke wow64) 9.16-1 prerelease patchset
updated cursor-clip hack, added new wayland childwindow patches + some more window management stuff
- Loading branch information
Showing
58 changed files
with
4,791 additions
and
754 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,34 +1,19 @@ | ||
From ce69ea03ddaee183541d44c7e68223b94a601245 Mon Sep 17 00:00:00 2001 | ||
From 3033371bbc918de6e37e7e9c5dd6f93f8663f963 Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <[email protected]> | ||
Date: Mon, 17 Jun 2024 11:31:59 +0200 | ||
Subject: [PATCH 1/7] server: Pass window's per-monitor DPI in set_window_pos. | ||
Subject: [PATCH 1/8] server: Pass window's per-monitor DPI in set_window_pos. | ||
|
||
--- | ||
dlls/win32u/window.c | 4 ++++ | ||
dlls/win32u/window.c | 1 + | ||
server/protocol.def | 1 + | ||
server/window.c | 20 ++++++++++---------- | ||
3 files changed, 15 insertions(+), 10 deletions(-) | ||
3 files changed, 12 insertions(+), 10 deletions(-) | ||
|
||
diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c | ||
index 44d96ea27b9..95d333dffd5 100644 | ||
index c53e4f8e0e8..3317c2fcc38 100644 | ||
--- a/dlls/win32u/window.c | ||
+++ b/dlls/win32u/window.c | ||
@@ -1948,6 +1948,7 @@ static BOOL apply_window_pos( HWND hwnd, HWND insert_after, UINT swp_flags, stru | ||
struct window_rects old_rects; | ||
RECT extra_rects[3]; | ||
struct window_surface *old_surface; | ||
+ UINT monitor_dpi; | ||
|
||
is_layered = new_surface && new_surface->alpha_mask; | ||
|
||
@@ -1965,11 +1966,14 @@ static BOOL apply_window_pos( HWND hwnd, HWND insert_after, UINT swp_flags, stru | ||
valid_rects = NULL; | ||
} | ||
|
||
+ monitor_dpi = get_monitor_dpi( monitor_from_rect( &new_rects->window, MONITOR_DEFAULTTONEAREST, get_thread_dpi() ) ); | ||
+ | ||
SERVER_START_REQ( set_window_pos ) | ||
{ | ||
@@ -1997,6 +1997,7 @@ static BOOL apply_window_pos( HWND hwnd, HWND insert_after, UINT swp_flags, stru | ||
req->handle = wine_server_user_handle( hwnd ); | ||
req->previous = wine_server_user_handle( insert_after ); | ||
req->swp_flags = swp_flags; | ||
|
@@ -37,10 +22,10 @@ index 44d96ea27b9..95d333dffd5 100644 | |
req->client = wine_server_rectangle( new_rects->client ); | ||
if (!EqualRect( &new_rects->window, &new_rects->visible ) || new_surface || valid_rects) | ||
diff --git a/server/protocol.def b/server/protocol.def | ||
index 25184641082..173368df6eb 100644 | ||
index 2c791cbdd46..f260bae2d21 100644 | ||
--- a/server/protocol.def | ||
+++ b/server/protocol.def | ||
@@ -2526,6 +2526,7 @@ enum message_type | ||
@@ -2592,6 +2592,7 @@ enum message_type | ||
@REQ(set_window_pos) | ||
unsigned short swp_flags; /* SWP_* flags */ | ||
unsigned short paint_flags; /* paint flags (see below) */ | ||
|
@@ -49,7 +34,7 @@ index 25184641082..173368df6eb 100644 | |
user_handle_t previous; /* previous window in Z order */ | ||
rectangle_t window; /* window rectangle (in parent coords) */ | ||
diff --git a/server/window.c b/server/window.c | ||
index 4ebfec3da12..b5e40bdd6f5 100644 | ||
index 564c69bf18d..16c2656b8f2 100644 | ||
--- a/server/window.c | ||
+++ b/server/window.c | ||
@@ -84,6 +84,7 @@ struct window | ||
|
@@ -60,7 +45,7 @@ index 4ebfec3da12..b5e40bdd6f5 100644 | |
lparam_t user_data; /* user-specific data */ | ||
WCHAR *text; /* window caption text */ | ||
data_size_t text_len; /* length of window caption */ | ||
@@ -244,20 +245,17 @@ static inline void update_pixel_format_flags( struct window *win ) | ||
@@ -245,20 +246,17 @@ static inline void update_pixel_format_flags( struct window *win ) | ||
win->paint_flags |= PAINT_PIXEL_FORMAT_CHILD; | ||
} | ||
|
||
|
@@ -88,15 +73,15 @@ index 4ebfec3da12..b5e40bdd6f5 100644 | |
} | ||
|
||
/* link a window at the right place in the siblings list */ | ||
@@ -577,6 +575,7 @@ static struct window *create_window( struct window *parent, struct window *owner | ||
@@ -578,6 +576,7 @@ static struct window *create_window( struct window *parent, struct window *owner | ||
win->is_layered = 0; | ||
win->is_orphan = 0; | ||
win->dpi_context = NTUSER_DPI_PER_MONITOR_AWARE; | ||
+ win->monitor_dpi = USER_DEFAULT_SCREEN_DPI; | ||
win->user_data = 0; | ||
win->text = NULL; | ||
win->text_len = 0; | ||
@@ -2475,6 +2474,7 @@ DECL_HANDLER(set_window_pos) | ||
@@ -2476,6 +2475,7 @@ DECL_HANDLER(set_window_pos) | ||
win->paint_flags = (win->paint_flags & ~PAINT_CLIENT_FLAGS) | (req->paint_flags & PAINT_CLIENT_FLAGS); | ||
if (win->paint_flags & PAINT_HAS_PIXEL_FORMAT) update_pixel_format_flags( win ); | ||
|
||
|
@@ -105,5 +90,5 @@ index 4ebfec3da12..b5e40bdd6f5 100644 | |
&visible_rect, &surface_rect, &valid_rect ); | ||
|
||
-- | ||
2.45.2 | ||
2.46.0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
From 234a5006027da75bf6be463e0b33c532face60c3 Mon Sep 17 00:00:00 2001 | ||
From c3dc5488ab797d452a5499f66ae1028986c3e9c9 Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <[email protected]> | ||
Date: Sat, 1 Jun 2024 23:03:40 +0200 | ||
Subject: [PATCH 2/7] win32u: Parameterize window_from_point dpi. | ||
Subject: [PATCH 2/8] win32u: Parameterize window_from_point dpi. | ||
|
||
--- | ||
dlls/win32u/input.c | 4 ++-- | ||
|
@@ -11,10 +11,10 @@ Subject: [PATCH 2/7] win32u: Parameterize window_from_point dpi. | |
4 files changed, 12 insertions(+), 12 deletions(-) | ||
|
||
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c | ||
index 5b25086cb6f..0d9fe0f1d38 100644 | ||
index 0324909c954..7bab5ef41b2 100644 | ||
--- a/dlls/win32u/input.c | ||
+++ b/dlls/win32u/input.c | ||
@@ -1607,7 +1607,7 @@ void update_mouse_tracking_info( HWND hwnd ) | ||
@@ -1631,7 +1631,7 @@ void update_mouse_tracking_info( HWND hwnd ) | ||
TRACE( "hwnd %p\n", hwnd ); | ||
|
||
get_cursor_pos( &pos ); | ||
|
@@ -23,7 +23,7 @@ index 5b25086cb6f..0d9fe0f1d38 100644 | |
|
||
TRACE( "point %s hwnd %p hittest %d\n", wine_dbgstr_point(&pos), hwnd, hittest ); | ||
|
||
@@ -1703,7 +1703,7 @@ BOOL WINAPI NtUserTrackMouseEvent( TRACKMOUSEEVENT *info ) | ||
@@ -1727,7 +1727,7 @@ BOOL WINAPI NtUserTrackMouseEvent( TRACKMOUSEEVENT *info ) | ||
NtUserSystemParametersInfo( SPI_GETMOUSEHOVERTIME, 0, &hover_time, 0 ); | ||
|
||
get_cursor_pos( &pos ); | ||
|
@@ -33,10 +33,10 @@ index 5b25086cb6f..0d9fe0f1d38 100644 | |
|
||
if (info->dwFlags & ~(TME_CANCEL | TME_HOVER | TME_LEAVE | TME_NONCLIENT)) | ||
diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c | ||
index d1f49ca3ed9..049773fe7e3 100644 | ||
index 73c15defb04..36f0f9a0cec 100644 | ||
--- a/dlls/win32u/message.c | ||
+++ b/dlls/win32u/message.c | ||
@@ -2424,15 +2424,16 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H | ||
@@ -2434,15 +2434,16 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H | ||
else | ||
{ | ||
HWND orig = msg->hwnd; | ||
|
@@ -56,10 +56,10 @@ index d1f49ca3ed9..049773fe7e3 100644 | |
} | ||
|
||
diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h | ||
index 96517ef081a..8e33370ee48 100644 | ||
index 28801dfd30f..ace3233a0c3 100644 | ||
--- a/dlls/win32u/win32u_private.h | ||
+++ b/dlls/win32u/win32u_private.h | ||
@@ -252,7 +252,7 @@ extern BOOL set_window_pos( WINDOWPOS *winpos, int parent_x, int parent_y ); | ||
@@ -276,7 +276,7 @@ extern BOOL set_window_pos( WINDOWPOS *winpos, int parent_x, int parent_y ); | ||
extern ULONG set_window_style( HWND hwnd, ULONG set_bits, ULONG clear_bits ); | ||
extern BOOL show_owned_popups( HWND owner, BOOL show ); | ||
extern void update_window_state( HWND hwnd ); | ||
|
@@ -69,10 +69,10 @@ index 96517ef081a..8e33370ee48 100644 | |
extern HWND get_progman_window(void); | ||
extern HWND set_progman_window( HWND hwnd ); | ||
diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c | ||
index 193e7212e02..532bbb6bfec 100644 | ||
index 3317c2fcc38..7303e849296 100644 | ||
--- a/dlls/win32u/window.c | ||
+++ b/dlls/win32u/window.c | ||
@@ -2195,7 +2195,7 @@ done: | ||
@@ -2412,7 +2412,7 @@ done: | ||
* Point is in screen coordinates. | ||
* Returned list must be freed by caller. | ||
*/ | ||
|
@@ -81,7 +81,7 @@ index 193e7212e02..532bbb6bfec 100644 | |
{ | ||
int i, size = 128; | ||
HWND *list; | ||
@@ -2211,7 +2211,7 @@ static HWND *list_children_from_point( HWND hwnd, POINT pt ) | ||
@@ -2428,7 +2428,7 @@ static HWND *list_children_from_point( HWND hwnd, POINT pt ) | ||
req->parent = wine_server_user_handle( hwnd ); | ||
req->x = pt.x; | ||
req->y = pt.y; | ||
|
@@ -90,7 +90,7 @@ index 193e7212e02..532bbb6bfec 100644 | |
wine_server_set_reply( req, list, (size-1) * sizeof(user_handle_t) ); | ||
if (!wine_server_call( req )) count = reply->count; | ||
} | ||
@@ -2236,19 +2236,18 @@ static HWND *list_children_from_point( HWND hwnd, POINT pt ) | ||
@@ -2453,19 +2453,18 @@ static HWND *list_children_from_point( HWND hwnd, POINT pt ) | ||
* | ||
* Find the window and hittest for a given point. | ||
*/ | ||
|
@@ -113,7 +113,7 @@ index 193e7212e02..532bbb6bfec 100644 | |
|
||
/* now determine the hittest */ | ||
|
||
@@ -2290,7 +2289,7 @@ HWND WINAPI NtUserWindowFromPoint( LONG x, LONG y ) | ||
@@ -2507,7 +2506,7 @@ HWND WINAPI NtUserWindowFromPoint( LONG x, LONG y ) | ||
{ | ||
POINT pt = { .x = x, .y = y }; | ||
INT hittest; | ||
|
@@ -123,5 +123,5 @@ index 193e7212e02..532bbb6bfec 100644 | |
|
||
/******************************************************************* | ||
-- | ||
2.45.2 | ||
2.46.0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,18 @@ | ||
From 1ee9763731bb7eea3ee901548094b090e96519fd Mon Sep 17 00:00:00 2001 | ||
From 879293ce8e4ea808a8ec42487a9eb442592fe88c Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <[email protected]> | ||
Date: Mon, 10 Jun 2024 12:11:20 +0200 | ||
Subject: [PATCH 3/7] win32u: Use per-monitor DPI window_from_point in | ||
Subject: [PATCH 3/8] win32u: Use per-monitor DPI window_from_point in | ||
process_mouse_message. | ||
|
||
--- | ||
dlls/win32u/message.c | 5 ++--- | ||
1 file changed, 2 insertions(+), 3 deletions(-) | ||
|
||
diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c | ||
index 049773fe7e3..9117979422f 100644 | ||
index 36f0f9a0cec..1c0f7bdeecf 100644 | ||
--- a/dlls/win32u/message.c | ||
+++ b/dlls/win32u/message.c | ||
@@ -2424,16 +2424,15 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H | ||
@@ -2434,16 +2434,15 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H | ||
else | ||
{ | ||
HWND orig = msg->hwnd; | ||
|
@@ -32,5 +32,5 @@ index 049773fe7e3..9117979422f 100644 | |
} | ||
|
||
-- | ||
2.45.2 | ||
2.46.0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,18 @@ | ||
From a768e5e79226b1120d2448dd43a1450b82b73a56 Mon Sep 17 00:00:00 2001 | ||
From 81813a1854884cffee5036f9d82954be990118fe Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <[email protected]> | ||
Date: Thu, 13 Jun 2024 09:25:53 +0200 | ||
Subject: [PATCH 4/7] win32u: Split hardware message window lookup to a | ||
Subject: [PATCH 4/8] win32u: Split hardware message window lookup to a | ||
separate helper. | ||
|
||
--- | ||
dlls/win32u/message.c | 63 +++++++++++++++++++++---------------------- | ||
1 file changed, 31 insertions(+), 32 deletions(-) | ||
|
||
diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c | ||
index 9117979422f..7ff38a923fa 100644 | ||
index 1c0f7bdeecf..d537a75aea5 100644 | ||
--- a/dlls/win32u/message.c | ||
+++ b/dlls/win32u/message.c | ||
@@ -2393,49 +2393,43 @@ static BOOL process_keyboard_message( MSG *msg, UINT hw_id, HWND hwnd_filter, | ||
@@ -2403,49 +2403,43 @@ static BOOL process_keyboard_message( MSG *msg, UINT hw_id, HWND hwnd_filter, | ||
return TRUE; | ||
} | ||
|
||
|
@@ -83,7 +83,7 @@ index 9117979422f..7ff38a923fa 100644 | |
if (!msg->hwnd || !is_current_thread_window( msg->hwnd )) | ||
{ | ||
accept_hardware_message( hw_id ); | ||
@@ -2470,7 +2464,7 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H | ||
@@ -2480,7 +2474,7 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H | ||
{ | ||
/* coordinates don't get translated while tracking a menu */ | ||
/* FIXME: should differentiate popups and top-level menus */ | ||
|
@@ -92,7 +92,7 @@ index 9117979422f..7ff38a923fa 100644 | |
screen_to_client( msg->hwnd, &pt ); | ||
} | ||
} | ||
@@ -2489,7 +2483,7 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H | ||
@@ -2499,7 +2493,7 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H | ||
* note that ...MOUSEMOVEs can slip in between | ||
* ...BUTTONDOWN and ...BUTTONDBLCLK messages */ | ||
|
||
|
@@ -101,7 +101,7 @@ index 9117979422f..7ff38a923fa 100644 | |
hittest != HTCLIENT || | ||
(get_class_long( msg->hwnd, GCL_STYLE, FALSE ) & CS_DBLCLKS)) | ||
{ | ||
@@ -2546,7 +2540,7 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H | ||
@@ -2556,7 +2550,7 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H | ||
|
||
if (remove) accept_hardware_message( hw_id ); | ||
|
||
|
@@ -110,7 +110,7 @@ index 9117979422f..7ff38a923fa 100644 | |
{ | ||
msg->message = message; | ||
return TRUE; | ||
@@ -2567,7 +2561,7 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H | ||
@@ -2577,7 +2571,7 @@ static BOOL process_mouse_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info, H | ||
|
||
/* Activate the window if needed */ | ||
|
||
|
@@ -119,7 +119,7 @@ index 9117979422f..7ff38a923fa 100644 | |
{ | ||
HWND hwndTop = NtUserGetAncestor( msg->hwnd, GA_ROOT ); | ||
|
||
@@ -2616,12 +2610,17 @@ static BOOL process_hardware_message( MSG *msg, UINT hw_id, const struct hardwar | ||
@@ -2626,12 +2620,17 @@ static BOOL process_hardware_message( MSG *msg, UINT hw_id, const struct hardwar | ||
HWND hwnd_filter, UINT first, UINT last, BOOL remove ) | ||
{ | ||
struct ntuser_thread_info *thread_info = NtUserGetThreadInfo(); | ||
|
@@ -137,7 +137,7 @@ index 9117979422f..7ff38a923fa 100644 | |
/* hardware messages are always in physical coords */ | ||
context = set_thread_dpi_awareness_context( NTUSER_DPI_PER_MONITOR_AWARE ); | ||
|
||
@@ -2630,7 +2629,7 @@ static BOOL process_hardware_message( MSG *msg, UINT hw_id, const struct hardwar | ||
@@ -2640,7 +2639,7 @@ static BOOL process_hardware_message( MSG *msg, UINT hw_id, const struct hardwar | ||
else if (is_keyboard_message( msg->message )) | ||
ret = process_keyboard_message( msg, hw_id, hwnd_filter, first, last, remove ); | ||
else if (is_mouse_message( msg->message )) | ||
|
@@ -147,5 +147,5 @@ index 9117979422f..7ff38a923fa 100644 | |
ret = process_pointer_message( msg, hw_id, msg_data ); | ||
else if (msg->message == WM_WINE_CLIPCURSOR) | ||
-- | ||
2.45.2 | ||
2.46.0 | ||
|
Oops, something went wrong.