winemac: Fix z-ordering between two child (owned) windows of the same parent (owner).

The window being ordered was first put in the correct place and then was moved
to the other end of the children list by the loop that was intended to adjust
the windows strictly between the window and the ancestor.

Signed-off-by: Ken Thomases <ken@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Ken Thomases 2018-05-21 13:39:02 -05:00 committed by Alexandre Julliard
parent 2bebfa2fc5
commit 64704bef18
1 changed files with 10 additions and 7 deletions

View File

@ -1590,14 +1590,17 @@ - (void) orderBelow:(WineWindow*)prev orAbove:(WineWindow*)next activate:(BOOL)a
[ancestor orderWindow:orderingMode relativeTo:[ancestorOfOther windowNumber]];
}
for (child = self;
(parent = (WineWindow*)child.parentWindow);
child = parent)
if (!ancestorOfOther || ancestor != self)
{
if ([parent isKindOfClass:[WineWindow class]])
[parent order:-orderingMode childWindow:child relativeTo:nil];
if (parent == ancestor)
break;
for (child = self;
(parent = (WineWindow*)child.parentWindow);
child = parent)
{
if ([parent isKindOfClass:[WineWindow class]])
[parent order:-orderingMode childWindow:child relativeTo:nil];
if (parent == ancestor)
break;
}
}
[self checkWineDisplayLink];