Ken Thomases : winemac: Consider minimized windows as "on screen" for our purposes.

Alexandre Julliard julliard at winehq.org
Fri May 17 14:24:33 CDT 2013


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

Author: Ken Thomases <ken at codeweavers.com>
Date:   Thu May 16 18:43:25 2013 -0500

winemac: Consider minimized windows as "on screen" for our purposes.

---

 dlls/winemac.drv/cocoa_window.m |   19 ++++++++++++-------
 1 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m
index 6bc6183..a7b27a6 100644
--- a/dlls/winemac.drv/cocoa_window.m
+++ b/dlls/winemac.drv/cocoa_window.m
@@ -573,6 +573,11 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
         [self setHasShadow:wf->shadow];
     }
 
+    - (BOOL) isOrderedIn
+    {
+        return [self isVisible] || [self isMiniaturized];
+    }
+
     - (void) adjustWindowLevel
     {
         WineApplicationController* controller = [WineApplicationController sharedController];
@@ -619,14 +624,14 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
                Also, any windows which are supposed to be in front of it had
                better have the same or higher window level.  If not, bump them
                up. */
-            if (index != NSNotFound && [self isVisible])
+            if (index != NSNotFound && [self isOrderedIn])
             {
                 for (; index > 0; index--)
                 {
                     other = [[controller orderedWineWindows] objectAtIndex:index - 1];
                     if ([other level] < level)
                         [other setLevelWhenActive:level];
-                    else
+                    else if ([self isVisible])
                     {
                         [self orderWindow:NSWindowBelow relativeTo:[other windowNumber]];
                         break;
@@ -654,13 +659,13 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
         if (state->excluded_by_cycle)
         {
             behavior |= NSWindowCollectionBehaviorIgnoresCycle;
-            if ([self isVisible])
+            if ([self isOrderedIn])
                 [NSApp removeWindowsItem:self];
         }
         else
         {
             behavior |= NSWindowCollectionBehaviorParticipatesInCycle;
-            if ([self isVisible])
+            if ([self isOrderedIn])
                 [NSApp addWindowsItem:self title:[self title] filename:NO];
         }
         [self setCollectionBehavior:behavior];
@@ -756,7 +761,7 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
     - (BOOL) setFrameIfOnScreen:(NSRect)contentRect
     {
         NSArray* screens = [NSScreen screens];
-        BOOL on_screen = [self isVisible];
+        BOOL on_screen = [self isOrderedIn];
         NSRect frame, oldFrame;
 
         if (![screens count]) return on_screen;
@@ -892,7 +897,7 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
         /* If a borderless window is offscreen, orderFront: won't move
            it onscreen like it would for a titled window.  Do that ourselves. */
         screens = [NSScreen screens];
-        if (!([self styleMask] & NSTitledWindowMask) && ![self isVisible] &&
+        if (!([self styleMask] & NSTitledWindowMask) && ![self isOrderedIn] &&
             !frame_intersects_screens([self frame], screens))
         {
             NSScreen* primaryScreen = [screens objectAtIndex:0];
@@ -1482,7 +1487,7 @@ void macdrv_set_cocoa_window_title(macdrv_window w, const unsigned short* title,
         titleString = @"";
     OnMainThreadAsync(^{
         [window setTitle:titleString];
-        if ([window isVisible] && ![window isExcludedFromWindowsMenu])
+        if ([window isOrderedIn] && ![window isExcludedFromWindowsMenu])
             [NSApp changeWindowsItem:window title:titleString filename:NO];
     });
 




More information about the wine-cvs mailing list