Module: wine Branch: master Commit: 4ad9d5f04affb22f6e3724b66da814088a89c897 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4ad9d5f04affb22f6e3724b66d...
Author: Ken Thomases ken@codeweavers.com Date: Wed Sep 18 13:01:03 2013 -0500
winemac: Send WM_ENTER/EXITSIZEMOVE messages at start/end of a resizing operation.
---
dlls/winemac.drv/cocoa_window.m | 7 +++++++ dlls/winemac.drv/event.c | 4 ++++ dlls/winemac.drv/macdrv.h | 1 + dlls/winemac.drv/macdrv_cocoa.h | 1 + dlls/winemac.drv/window.c | 16 ++++++++++++++++ 5 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m index d833d04..a602adb 100644 --- a/dlls/winemac.drv/cocoa_window.m +++ b/dlls/winemac.drv/cocoa_window.m @@ -1476,6 +1476,13 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
- (void) windowDidEndLiveResize:(NSNotification *)notification { + macdrv_query* query = macdrv_create_query(); + query->type = QUERY_RESIZE_END; + query->window = (macdrv_window)[self retain]; + + [self.queue query:query timeout:0.3]; + macdrv_release_query(query); + self.liveResizeDisplayTimer = nil; }
diff --git a/dlls/winemac.drv/event.c b/dlls/winemac.drv/event.c index 97f1e3b..709079a 100644 --- a/dlls/winemac.drv/event.c +++ b/dlls/winemac.drv/event.c @@ -146,6 +146,10 @@ static void macdrv_query_event(HWND hwnd, const macdrv_event *event) TRACE("QUERY_PASTEBOARD_DATA\n"); success = query_pasteboard_data(hwnd, query->pasteboard_data.type); break; + case QUERY_RESIZE_END: + TRACE("QUERY_RESIZE_END\n"); + success = query_resize_end(hwnd); + break; case QUERY_RESIZE_START: TRACE("QUERY_RESIZE_START\n"); success = query_resize_start(hwnd); diff --git a/dlls/winemac.drv/macdrv.h b/dlls/winemac.drv/macdrv.h index d308e69..a0e0b52 100644 --- a/dlls/winemac.drv/macdrv.h +++ b/dlls/winemac.drv/macdrv.h @@ -161,6 +161,7 @@ extern void macdrv_app_deactivated(void) DECLSPEC_HIDDEN; extern void macdrv_app_quit_requested(const macdrv_event *event) DECLSPEC_HIDDEN; extern void macdrv_window_did_minimize(HWND hwnd) DECLSPEC_HIDDEN; extern void macdrv_window_did_unminimize(HWND hwnd) DECLSPEC_HIDDEN; +extern BOOL query_resize_end(HWND hwnd) DECLSPEC_HIDDEN; extern BOOL query_resize_start(HWND hwnd) DECLSPEC_HIDDEN;
extern void macdrv_mouse_button(HWND hwnd, const macdrv_event *event) DECLSPEC_HIDDEN; diff --git a/dlls/winemac.drv/macdrv_cocoa.h b/dlls/winemac.drv/macdrv_cocoa.h index 71d8c9f..2f26b34 100644 --- a/dlls/winemac.drv/macdrv_cocoa.h +++ b/dlls/winemac.drv/macdrv_cocoa.h @@ -272,6 +272,7 @@ enum { QUERY_DRAG_OPERATION, QUERY_IME_CHAR_RECT, QUERY_PASTEBOARD_DATA, + QUERY_RESIZE_END, QUERY_RESIZE_START, NUM_QUERY_TYPES }; diff --git a/dlls/winemac.drv/window.c b/dlls/winemac.drv/window.c index 411270c..4cb8082 100644 --- a/dlls/winemac.drv/window.c +++ b/dlls/winemac.drv/window.c @@ -1991,6 +1991,22 @@ fail: BOOL query_resize_start(HWND hwnd) { TRACE("hwnd %p\n", hwnd); + sync_window_min_max_info(hwnd); + SendMessageW(hwnd, WM_ENTERSIZEMOVE, 0, 0); + + return TRUE; +} + + +/*********************************************************************** + * query_resize_end + * + * Handler for QUERY_RESIZE_END query. + */ +BOOL query_resize_end(HWND hwnd) +{ + TRACE("hwnd %p\n", hwnd); + SendMessageW(hwnd, WM_EXITSIZEMOVE, 0, 0); return TRUE; }