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