aboutsummaryrefslogtreecommitdiffstats
path: root/Frameworks/PSMTabBar/PSMTabBarControl.m
diff options
context:
space:
mode:
Diffstat (limited to 'Frameworks/PSMTabBar/PSMTabBarControl.m')
-rw-r--r--Frameworks/PSMTabBar/PSMTabBarControl.m24
1 files changed, 19 insertions, 5 deletions
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 -