Ken Thomases : winemac: Send WM_ENTER/EXITSIZEMOVE messages at start/ end of a resizing operation.
Alexandre Julliard
julliard at winehq.org
Wed Sep 18 15:49:59 CDT 2013
Module: wine
Branch: master
Commit: 4ad9d5f04affb22f6e3724b66da814088a89c897
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4ad9d5f04affb22f6e3724b66da814088a89c897
Author: Ken Thomases <ken at 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;
}
More information about the wine-cvs
mailing list