aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Frameworks/PSMTabBar/PSMTabBarControl.h7
-rw-r--r--Frameworks/PSMTabBar/PSMTabBarControl.m24
2 files changed, 25 insertions, 6 deletions
diff --git a/Frameworks/PSMTabBar/PSMTabBarControl.h b/Frameworks/PSMTabBar/PSMTabBarControl.h
index d2cbc534..9aebddad 100644
--- a/Frameworks/PSMTabBar/PSMTabBarControl.h
+++ b/Frameworks/PSMTabBar/PSMTabBarControl.h
@@ -111,7 +111,12 @@ enum {
BOOL _awakenedFromNib;
NSInteger _tabBarWidth;
NSTimer *_showHideAnimationTimer;
-
+
+ // Tracking last window state for update draws
+ BOOL _lastWindowIsMainCheck;
+ BOOL _lastAttachedWindowIsMainCheck;
+ BOOL _lastAppIsActiveCheck;
+
// drag and drop
NSEvent *_lastMouseDownEvent; // keep this for dragging reference
BOOL _didDrag;
diff --git a/Frameworks/PSMTabBar/PSMTabBarControl.m b/Frameworks/PSMTabBar/PSMTabBarControl.m
index ffac0255..2cc9334a 100644
--- a/Frameworks/PSMTabBar/PSMTabBarControl.m
+++ b/Frameworks/PSMTabBar/PSMTabBarControl.m
@@ -118,6 +118,10 @@
_cells = [[NSMutableArray alloc] initWithCapacity:10];
_controller = [[PSMTabBarController alloc] initWithTabBarControl:self];
_animationTimer = nil;
+ _lastWindowIsMainCheck = NO;
+ _lastAttachedWindowIsMainCheck = NO;
+ _lastAppIsActiveCheck = NO;
+ _lastMouseDownEvent = nil;
// default config
_currentStep = kPSMIsNotBeingResized;
@@ -1805,13 +1809,23 @@
if ([[self delegate] respondsToSelector:@selector(tabView:tabBarDidHide:)]) {
[[self delegate] tabView:[self tabView] tabBarDidHide:self];
}
- }
- // The above tasks only needs to be run once, so set a flag to ensure that
- _awakenedFromNib = YES;
+ // The above tasks only needs to be run once, so set a flag to ensure that
+ _awakenedFromNib = YES;
+ }
- // Allow the tab bar to redraw itself in result to window ordering/sheet/etc changes
- [self setNeedsDisplay:YES];
+ // Determine whether a draw update in response to window state change might be required
+ BOOL isMainWindow = [[self window] isMainWindow];
+ BOOL attachedWindowIsMainWindow = [[[self window] attachedSheet] isMainWindow];
+ BOOL isActiveApplication = [NSApp isActive];
+ if (_lastWindowIsMainCheck != isMainWindow || _lastAttachedWindowIsMainCheck != attachedWindowIsMainWindow || _lastAppIsActiveCheck != isActiveApplication) {
+ _lastWindowIsMainCheck = isMainWindow;
+ _lastAttachedWindowIsMainCheck = attachedWindowIsMainWindow;
+ _lastAppIsActiveCheck = isActiveApplication;
+
+ // Allow the tab bar to redraw itself in result to window ordering/sheet/etc changes
+ [self setNeedsDisplay:YES];
+ }
}
#pragma mark -