Ken Thomases : winemac: Use only on-screen windows for Cocoa parent ( Win32 owner) and ordering sibling.
Alexandre Julliard
julliard at winehq.org
Mon Feb 18 13:27:05 CST 2013
Module: wine
Branch: master
Commit: 3799acb3ac8968353c3d8b2ce23f0834c970a098
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3799acb3ac8968353c3d8b2ce23f0834c970a098
Author: Ken Thomases <ken at codeweavers.com>
Date: Sun Feb 17 19:28:23 2013 -0600
winemac: Use only on-screen windows for Cocoa parent (Win32 owner) and ordering sibling.
---
dlls/winemac.drv/window.c | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/dlls/winemac.drv/window.c b/dlls/winemac.drv/window.c
index 7a7eda7..65f7955 100644
--- a/dlls/winemac.drv/window.c
+++ b/dlls/winemac.drv/window.c
@@ -303,10 +303,12 @@ static void release_win_data(struct macdrv_win_data *data)
*
* Return the Mac window associated with the full area of a window
*/
-static macdrv_window macdrv_get_cocoa_window(HWND hwnd)
+static macdrv_window macdrv_get_cocoa_window(HWND hwnd, BOOL require_on_screen)
{
struct macdrv_win_data *data = get_win_data(hwnd);
- macdrv_window ret = data ? data->cocoa_window : NULL;
+ macdrv_window ret = NULL;
+ if (data && (data->on_screen || !require_on_screen))
+ ret = data->cocoa_window;
release_win_data(data);
return ret;
}
@@ -330,7 +332,7 @@ static void set_cocoa_window_properties(struct macdrv_win_data *data)
ex_style = GetWindowLongW(data->hwnd, GWL_EXSTYLE);
owner = GetWindow(data->hwnd, GW_OWNER);
- owner_win = macdrv_get_cocoa_window(owner);
+ owner_win = macdrv_get_cocoa_window(owner, TRUE);
macdrv_set_cocoa_parent_window(data->cocoa_window, owner_win);
get_cocoa_window_features(data, style, ex_style, &wf);
@@ -698,14 +700,14 @@ static void sync_window_position(struct macdrv_win_data *data, UINT swp_flags)
/* find window that this one must be after */
HWND prev = GetWindow(data->hwnd, GW_HWNDPREV);
while (prev && !((GetWindowLongW(prev, GWL_STYLE) & WS_VISIBLE) &&
- (prev_window = macdrv_get_cocoa_window(prev))))
+ (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) &&
- (next_window = macdrv_get_cocoa_window(next))))
+ (next_window = macdrv_get_cocoa_window(next, TRUE))))
next = GetWindow(next, GW_HWNDNEXT);
}
@@ -988,7 +990,7 @@ void CDECL macdrv_SetWindowText(HWND hwnd, LPCWSTR text)
TRACE("%p, %s\n", hwnd, debugstr_w(text));
- if ((win = macdrv_get_cocoa_window(hwnd)))
+ if ((win = macdrv_get_cocoa_window(hwnd, FALSE)))
macdrv_set_cocoa_window_title(win, text, strlenW(text));
}
More information about the wine-cvs
mailing list