Ken Thomases : winemac: Make show_window() and hide_window() tolerate being called when there's no Cocoa window.

Alexandre Julliard julliard at wine.codeweavers.com
Sat May 14 10:07:28 CDT 2016


Module: wine
Branch: master
Commit: 225482f5ad3055d0d1ea7a68013d5d547d2c6a82
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=225482f5ad3055d0d1ea7a68013d5d547d2c6a82

Author: Ken Thomases <ken at codeweavers.com>
Date:   Thu May 12 18:50:44 2016 -0500

winemac: Make show_window() and hide_window() tolerate being called when there's no Cocoa window.

Minor no-op refactoring that makes subsequent commits cleaner.

Signed-off-by: Ken Thomases <ken at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/winemac.drv/window.c | 74 +++++++++++++++++++++++++----------------------
 1 file changed, 39 insertions(+), 35 deletions(-)

diff --git a/dlls/winemac.drv/window.c b/dlls/winemac.drv/window.c
index a48ac17..bb82927 100644
--- a/dlls/winemac.drv/window.c
+++ b/dlls/winemac.drv/window.c
@@ -731,40 +731,43 @@ static struct macdrv_win_data *macdrv_create_win_data(HWND hwnd, const RECT *win
  */
 static void show_window(struct macdrv_win_data *data)
 {
-    HWND prev = NULL;
-    HWND next = NULL;
-    macdrv_window prev_window = NULL;
-    macdrv_window next_window = NULL;
-    BOOL activate = FALSE;
-    HWND hwndFocus;
-
-    /* find window that this one must be after */
-    prev = GetWindow(data->hwnd, GW_HWNDPREV);
-    while (prev && !((GetWindowLongW(prev, GWL_STYLE) & (WS_VISIBLE | WS_MINIMIZE)) == WS_VISIBLE &&
-                     (prev_window = macdrv_get_cocoa_window(prev, TRUE))))
-        prev = GetWindow(prev, GW_HWNDPREV);
-    if (!prev_window)
-    {
-        /* find window that this one must be before */
-        next = GetWindow(data->hwnd, GW_HWNDNEXT);
-        while (next && !((GetWindowLongW(next, GWL_STYLE) & (WS_VISIBLE | WS_MINIMIZE)) == WS_VISIBLE &&
-                         (next_window = macdrv_get_cocoa_window(next, TRUE))))
-            next = GetWindow(next, GW_HWNDNEXT);
-    }
-
-    TRACE("win %p/%p below %p/%p above %p/%p\n",
-          data->hwnd, data->cocoa_window, prev, prev_window, next, next_window);
-
-    if (!prev_window)
-        activate = activate_on_focus_time && (GetTickCount() - activate_on_focus_time < 2000);
-    macdrv_order_cocoa_window(data->cocoa_window, prev_window, next_window, activate);
-    data->on_screen = TRUE;
-
-    hwndFocus = GetFocus();
-    if (hwndFocus && (data->hwnd == hwndFocus || IsChild(data->hwnd, hwndFocus)))
-        macdrv_SetFocus(hwndFocus);
-    if (activate)
-        activate_on_focus_time = 0;
+    if (data->cocoa_window)
+    {
+        HWND prev = NULL;
+        HWND next = NULL;
+        macdrv_window prev_window = NULL;
+        macdrv_window next_window = NULL;
+        BOOL activate = FALSE;
+        HWND hwndFocus;
+
+        /* find window that this one must be after */
+        prev = GetWindow(data->hwnd, GW_HWNDPREV);
+        while (prev && !((GetWindowLongW(prev, GWL_STYLE) & (WS_VISIBLE | WS_MINIMIZE)) == WS_VISIBLE &&
+                         (prev_window = macdrv_get_cocoa_window(prev, TRUE))))
+            prev = GetWindow(prev, GW_HWNDPREV);
+        if (!prev_window)
+        {
+            /* find window that this one must be before */
+            next = GetWindow(data->hwnd, GW_HWNDNEXT);
+            while (next && !((GetWindowLongW(next, GWL_STYLE) & (WS_VISIBLE | WS_MINIMIZE)) == WS_VISIBLE &&
+                             (next_window = macdrv_get_cocoa_window(next, TRUE))))
+                next = GetWindow(next, GW_HWNDNEXT);
+        }
+
+        TRACE("win %p/%p below %p/%p above %p/%p\n",
+              data->hwnd, data->cocoa_window, prev, prev_window, next, next_window);
+
+        if (!prev_window)
+            activate = activate_on_focus_time && (GetTickCount() - activate_on_focus_time < 2000);
+        macdrv_order_cocoa_window(data->cocoa_window, prev_window, next_window, activate);
+        data->on_screen = TRUE;
+
+        hwndFocus = GetFocus();
+        if (hwndFocus && (data->hwnd == hwndFocus || IsChild(data->hwnd, hwndFocus)))
+            macdrv_SetFocus(hwndFocus);
+        if (activate)
+            activate_on_focus_time = 0;
+    }
 }
 
 
@@ -775,7 +778,8 @@ static void hide_window(struct macdrv_win_data *data)
 {
     TRACE("win %p/%p\n", data->hwnd, data->cocoa_window);
 
-    macdrv_hide_cocoa_window(data->cocoa_window);
+    if (data->cocoa_window)
+        macdrv_hide_cocoa_window(data->cocoa_window);
     data->on_screen = FALSE;
 }
 




More information about the wine-cvs mailing list