Update PSMTabBarControl to github.com/dorianj/PSMTabBarControl/commit/1c6eaae fixes #15822 and #16262 and #16426 and #16437.
(transplanted from b3e449c9e778e8308edf0b0d2b4873219ada45fa)
--- a/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/NSBezierPath_AMShading.h Mon Jan 20 13:48:06 2014 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-// NSBezierPath_AMShading.h
-// ------------------------
-// Created by Andreas on 2005-06-01.
-// Copyright 2005 Andreas Mayer. All rights reserved.
-// based on http://www.cocoadev.com/index.pl?GradientFill
-@interface NSBezierPath (AMShading)
-- (void)customHorizontalFillWithCallbacks:(CGFunctionCallbacks)functionCallbacks firstColor:(NSColor *)firstColor secondColor:(NSColor *)secondColor;
-- (void)customVerticalFillWithCallbacks:(CGFunctionCallbacks)functionCallbacks firstColor:(NSColor *)firstColor secondColor:(NSColor *)secondColor;
-- (void)linearGradientFillWithStartColor:(NSColor *)startColor endColor:(NSColor *)endColor;
-- (void)linearVerticalGradientFillWithStartColor:(NSColor *)startColor endColor:(NSColor *)endColor;
-- (void)bilinearGradientFillWithOuterColor:(NSColor *)outerColor innerColor:(NSColor *)innerColor;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/NSString_AITruncation.h Sat Oct 26 23:01:44 2013 -0400
@@ -0,0 +1,12 @@
+// NSString_AITruncation.h +// Created by Evan Schoenberg on 7/14/07. +@interface NSString (AITruncation) +- (NSString *)stringWithEllipsisByTruncatingToLength:(NSUInteger)length; --- a/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMAdiumTabStyle.h Mon Jan 20 13:48:06 2014 -0500
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMAdiumTabStyle.h Sat Oct 26 23:01:44 2013 -0400
@@ -11,17 +11,19 @@
@interface PSMAdiumTabStyle : NSObject <PSMTabStyle>
- NSImage *_closeButton, *_closeButtonDown, *_closeButtonOver;
- NSImage *_closeDirtyButton, *_closeDirtyButtonDown, *_closeDirtyButtonOver;
- NSImage *_addTabButtonImage, *_addTabButtonPressedImage, *_addTabButtonRolloverImage;
- NSImage *_gradientImage;
- NSDictionary *_objectCountStringAttributes;
- PSMTabBarOrientation orientation;
- PSMTabBarControl *tabBar;
- BOOL _drawsUnified, _drawsRight;
+ NSImage *_closeButtonDown; + NSImage *_closeButtonOver; + NSImage *_closeDirtyButton; + NSImage *_closeDirtyButtonDown; + NSImage *_closeDirtyButtonOver; + NSImage *_addTabButtonImage; + NSImage *_addTabButtonPressedImage; + NSImage *_addTabButtonRolloverImage; + NSImage *_gradientImage; @@ -31,8 +33,6 @@
- (void)setDrawsRight:(BOOL)value;
-- (void)drawInteriorWithTabCell:(PSMTabBarCell *)cell inView:(NSView*)controlView;
- (void)encodeWithCoder:(NSCoder *)aCoder;
- (id)initWithCoder:(NSCoder *)aDecoder;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMAquaTabStyle.h Sat Oct 26 23:01:44 2013 -0400
@@ -0,0 +1,35 @@
+// Created by John Pannell on 2/17/06. +// Copyright 2006 Positive Spin Media. All rights reserved. +@interface PSMAquaTabStyle : NSObject <PSMTabStyle> { + NSImage *aquaTabBgDown; + NSImage *aquaTabBgDownGraphite; + NSImage *aquaTabBgDownNonKey; + NSImage *aquaDividerDown; + NSImage *aquaCloseButton; + NSImage *aquaCloseButtonDown; + NSImage *aquaCloseButtonOver; + NSImage *aquaCloseDirtyButton; + NSImage *aquaCloseDirtyButtonDown; + NSImage *aquaCloseDirtyButtonOver; + NSImage *_addTabButtonImage; + NSImage *_addTabButtonPressedImage; + NSImage *_addTabButtonRolloverImage; +- (void)encodeWithCoder:(NSCoder *)aCoder; +- (id)initWithCoder:(NSCoder *)aDecoder; --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMCardTabStyle.h Sat Oct 26 23:01:44 2013 -0400
@@ -0,0 +1,30 @@
+// Created by Michael Monscheuer on 9/3/12. +@interface PSMCardTabStyle : NSObject <PSMTabStyle> + NSImage *cardCloseButton; + NSImage *cardCloseButtonDown; + NSImage *cardCloseButtonOver; + NSImage *cardCloseDirtyButton; + NSImage *cardCloseDirtyButtonDown; + NSImage *cardCloseDirtyButtonOver; + NSImage *_addTabButtonImage; + NSImage *_addTabButtonPressedImage; + NSImage *_addTabButtonRolloverImage; +@property (assign) CGFloat leftMarginForTabBarControl; --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMLiveChatTabStyle.h Sat Oct 26 23:01:44 2013 -0400
@@ -0,0 +1,30 @@
+// PSMLiveChatTabStyle.h +// Created by Keith Blount on 30/04/2006. +// Copyright 2006 __MyCompanyName__. All rights reserved. +@interface PSMLiveChatTabStyle : NSObject <PSMTabStyle> { + NSImage *liveChatCloseButton; + NSImage *liveChatCloseButtonDown; + NSImage *liveChatCloseButtonOver; + NSImage *liveChatCloseDirtyButton; + NSImage *liveChatCloseDirtyButtonDown; + NSImage *liveChatCloseDirtyButtonOver; + NSImage *_addTabButtonImage; + NSImage *_addTabButtonPressedImage; + NSImage *_addTabButtonRolloverImage; + NSDictionary *_objectCountStringAttributes; +@property (assign) CGFloat leftMarginForTabBarControl; --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMMetalTabStyle.h Sat Oct 26 23:01:44 2013 -0400
@@ -0,0 +1,29 @@
+// Created by John Pannell on 2/17/06. +// Copyright 2006 Positive Spin Media. All rights reserved. +@interface PSMMetalTabStyle : NSObject <PSMTabStyle> { + NSImage *metalCloseButton; + NSImage *metalCloseButtonDown; + NSImage *metalCloseButtonOver; + NSImage *metalCloseDirtyButton; + NSImage *metalCloseDirtyButtonDown; + NSImage *metalCloseDirtyButtonOver; + NSImage *_addTabButtonImage; + NSImage *_addTabButtonPressedImage; + NSImage *_addTabButtonRolloverImage; + NSDictionary *_objectCountStringAttributes; +- (void)encodeWithCoder:(NSCoder *)aCoder; +- (id)initWithCoder:(NSCoder *)aDecoder; --- a/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMOverflowPopUpButton.h Mon Jan 20 13:48:06 2014 -0500
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMOverflowPopUpButton.h Sat Oct 26 23:01:44 2013 -0400
@@ -10,12 +10,12 @@
@interface PSMOverflowPopUpButton : NSPopUpButton {
- NSImage *_PSMTabBarOverflowPopUpImage;
- NSImage *_PSMTabBarOverflowDownPopUpImage;
- BOOL _animatingAlternateImage;
- NSTimer *_animationTimer;
- CGFloat _animationValue;
+ NSImage *_PSMTabBarOverflowPopUpImage; + NSImage *_PSMTabBarOverflowDownPopUpImage; + BOOL _animatingAlternateImage; + NSTimer *_animationTimer; + CGFloat _animationValue; //alternate image display
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMProgressIndicator.h Sat Oct 26 23:01:44 2013 -0400
@@ -0,0 +1,16 @@
+// PSMProgressIndicator.h +// Created by John Pannell on 2/23/06. +// Copyright 2006 Positive Spin Media. All rights reserved. +@interface PSMProgressIndicator : NSProgressIndicator { --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMRolloverButton.h Sat Oct 26 23:01:44 2013 -0400
@@ -0,0 +1,19 @@
+// PSMOverflowPopUpButton.h +// Created by John Pannell on 8/4/04. +// Copyright 2004 Positive Spin Media. All rights reserved. +@interface PSMRolloverButton : NSButton { + NSImage *_rolloverImage; +@property (retain) NSImage *usualImage; +@property (retain) NSImage *rolloverImage; \ No newline at end of file
--- a/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMTabBarCell.h Mon Jan 20 13:48:06 2014 -0500
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMTabBarCell.h Sat Oct 26 23:01:44 2013 -0400
@@ -8,97 +8,121 @@
#import "PSMTabBarControl.h"
+#import "PSMProgressIndicator.h" -@class PSMTabBarControl;
-@class PSMProgressIndicator;
+typedef enum PSMCloseButtonImageType : NSUInteger + PSMCloseButtonImageTypeStandard = 0, + PSMCloseButtonImageTypeRollover, + PSMCloseButtonImageTypePressed, + PSMCloseButtonImageTypeDirty, + PSMCloseButtonImageTypeDirtyRollover, + PSMCloseButtonImageTypeDirtyPressed +} PSMCloseButtonImageType; +typedef enum PSMTabBarCellTrackingAreaType : NSUInteger + PSMTabBarCellTrackingAreaCellFrameType = 0, + PSMTabBarCellTrackingAreaCloseButtonType = 1 +} PSMTabBarCellTrackingAreaType; @interface PSMTabBarCell : NSActionCell {
- NSInteger _currentStep;
- NSTrackingRectTag _closeButtonTrackingTag; // left side tracking, if dragging
- NSTrackingRectTag _cellTrackingTag; // right side tracking, if dragging
- BOOL _closeButtonPressed;
- PSMProgressIndicator *_indicator;
- BOOL _isInOverflowMenu;
- BOOL _isCloseButtonSuppressed;
+ NSSize _attributedStringSize; + NSInteger _currentStep; + PSMTabStateMask _tabState; + BOOL _closeButtonPressed; + PSMProgressIndicator *_indicator; + BOOL _isInOverflowMenu; + BOOL _isCloseButtonSuppressed;
-- (id)initWithControlView:(PSMTabBarControl *)controlView;
-- (id)initPlaceholderWithFrame:(NSRect)frame expanded:(BOOL)value inControlView:(PSMTabBarControl *)controlView;
+@property (assign) PSMTabStateMask tabState; +@property (assign) BOOL hasCloseButton; +@property (assign) BOOL hasIcon; +@property (assign) BOOL hasLargeImage; +@property (assign) NSInteger count; +@property (retain) NSColor *countColor; +@property (assign) BOOL isPlaceholder; +@property (assign) BOOL isEdited; +@property (assign) BOOL closeButtonPressed; +#pragma mark Creation/Destruction +- (id)initPlaceholderWithFrame:(NSRect) frame expanded:(BOOL) value inTabBarControl:(PSMTabBarControl *)tabBarControl;
-- (void)setControlView:(id)view;
-- (NSTrackingRectTag)closeButtonTrackingTag;
-- (void)setCloseButtonTrackingTag:(NSTrackingRectTag)tag;
-- (NSTrackingRectTag)cellTrackingTag;
-- (void)setCellTrackingTag:(NSTrackingRectTag)tag;
+- (PSMTabBarControl *)controlView; +- (void)setControlView:(PSMTabBarControl *)newControl; - (void)setFrame:(NSRect)rect;
-- (void)setStringValue:(NSString *)aString;
+- (NSSize)attributedStringSize; - (NSAttributedString *)attributedStringValue;
-- (void)setTabState:(NSInteger)state;
+- (NSAttributedString *)attributedObjectCountStringValue; - (NSProgressIndicator *)indicator;
- (BOOL)isInOverflowMenu;
- (void)setIsInOverflowMenu:(BOOL)value;
-- (BOOL)closeButtonPressed;
-- (void)setCloseButtonPressed:(BOOL)value;
- (void)setCloseButtonOver:(BOOL)value;
-- (void)setHasCloseButton:(BOOL)set;
- (void)setCloseButtonSuppressed:(BOOL)suppress;
- (BOOL)isCloseButtonSuppressed;
-- (void)setHasIcon:(BOOL)value;
-- (void)setHasLargeImage:(BOOL)value;
-- (void)setCount:(NSInteger)value;
-- (NSColor *)countColor;
-- (void)setCountColor:(NSColor *)value;
-- (void)setIsPlaceholder:(BOOL)value;
- (NSInteger)currentStep;
- (void)setCurrentStep:(NSInteger)value;
-- (void)setIsEdited:(BOOL)value;
+#pragma mark Providing Images +- (NSImage *)closeButtonImageOfType:(PSMCloseButtonImageType)type;
-- (NSRect)indicatorRectForFrame:(NSRect)cellFrame;
-- (NSRect)closeButtonRectForFrame:(NSRect)cellFrame;
+#pragma mark Determining Cell Size +- (NSRect)drawingRectForBounds:(NSRect)theRect; +- (NSRect)titleRectForBounds:(NSRect)theRect ; +- (NSRect)iconRectForBounds:(NSRect)theRect; +- (NSRect)largeImageRectForBounds:(NSRect)theRect; +- (NSRect)indicatorRectForBounds:(NSRect)theRect; +- (NSSize)objectCounterSize; +- (NSRect)objectCounterRectForBounds:(NSRect)theRect; +- (NSRect)closeButtonRectForBounds:(NSRect)theRect; - (CGFloat)minimumWidthOfCell;
- (CGFloat)desiredWidthOfCell;
-- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView;
+#pragma mark Image Scaling +- (NSSize)scaleImageWithSize:(NSSize)imageSize toFitInSize:(NSSize)canvasSize scalingType:(NSImageScaling)scalingType;
+- (BOOL)shouldDrawCloseButton; +- (BOOL)shouldDrawObjectCounter; +- (void)drawWithFrame:(NSRect) cellFrame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawInteriorWithFrame:(NSRect)cellFrame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawLargeImageWithFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawIconWithFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawTitleWithFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawObjectCounterWithFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawIndicatorWithFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawCloseButtonWithFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +#pragma mark Tracking Area Support +- (void)addTrackingAreasForView:(NSView *)view inRect:(NSRect)cellFrame withUserInfo:(NSDictionary *)userInfo mouseLocation:(NSPoint)currentPoint; - (void)mouseEntered:(NSEvent *)theEvent;
- (void)mouseExited:(NSEvent *)theEvent;
+#pragma mark Drag Support
- (void)encodeWithCoder:(NSCoder *)aCoder;
- (id)initWithCoder:(NSCoder *)aDecoder;
@@ -115,3 +139,5 @@
--- a/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMTabBarControl.h Mon Jan 20 13:48:06 2014 -0500
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMTabBarControl.h Sat Oct 26 23:01:44 2013 -0400
@@ -7,120 +7,148 @@
- This view provides a control interface to manage a regular NSTabView. It looks and works like the tabbed browsing interface of many popular browsers.
+ This view provides a control interface to manage a regular NSTabView. It looks and works like the tabbed browsing interface of many popular browsers. -#define PSMTabDragDidEndNotification @"PSMTabDragDidEndNotification"
-#define PSMTabDragDidBeginNotification @"PSMTabDragDidBeginNotification"
+#define PSMTabDragDidEndNotification @ "PSMTabDragDidEndNotification" +#define PSMTabDragDidBeginNotification @ "PSMTabDragDidBeginNotification" -#define kPSMTabBarControlHeight 22
+#define kPSMTabBarControlHeight 22
// padding between objects
-#define kPSMTabBarCellPadding 4
+#define kPSMTabBarCellPadding 4 -#define kPSMMinimumTitleWidth 30
-#define kPSMTabBarIndicatorWidth 16.0f
-#define kPSMTabBarIconWidth 16.0f
-#define kPSMHideAnimationSteps 3.0f
+#define kPSMMinimumTitleWidth 30 +#define kPSMTabBarIndicatorWidth 16.0 +#define kPSMTabBarIconWidth 16.0 +#define kPSMHideAnimationSteps 3.0 +#define kPSMObjectCounterMinWidth 20.0 +#define kPSMObjectCounterRadius 7.0 +#define kPSMTabBarControlSourceListHeight 28 // Value used in _currentStep to indicate that resizing operation is not in progress
-#define kPSMIsNotBeingResized -1
+#define kPSMIsNotBeingResized -1 // Value used in _currentStep when a resizing operation has just been started
-#define kPSMStartResizeAnimation 0
+#define kPSMStartResizeAnimation 0 -@class PSMOverflowPopUpButton, PSMRolloverButton, PSMTabBarCell, PSMTabBarController;
+@class PSMOverflowPopUpButton; +@class PSMRolloverButton; +@class PSMTabBarController;
+typedef enum PSMTabBarOrientation : NSUInteger { PSMTabBarHorizontalOrientation,
PSMTabBarVerticalOrientation
+typedef enum PSMTabBarTearOffStyle : NSUInteger { PSMTabBarTearOffAlphaWindow,
PSMTabBarTearOffMiniwindow
- PSMTab_SelectedMask = 1 << 1,
- PSMTab_LeftIsSelectedMask = 1 << 2,
- PSMTab_RightIsSelectedMask = 1 << 3,
- PSMTab_PositionLeftMask = 1 << 4,
- PSMTab_PositionMiddleMask = 1 << 5,
- PSMTab_PositionRightMask = 1 << 6,
- PSMTab_PositionSingleMask = 1 << 7
+typedef enum PSMTabStateMask : NSUInteger { + PSMTab_SelectedMask = 1 << 1, + PSMTab_LeftIsSelectedMask = 1 << 2, + PSMTab_RightIsSelectedMask = 1 << 3, + PSMTab_PositionLeftMask = 1 << 4, + PSMTab_PositionMiddleMask = 1 << 5, + PSMTab_PositionRightMask = 1 << 6, + PSMTab_PositionSingleMask = 1 << 7, +@protocol PSMTabBarControlDelegate; @interface PSMTabBarControl : NSControl {
- NSMutableArray *_cells; // the cells that draw the tabs
- IBOutlet NSTabView *tabView; // the tab view being navigated
- PSMOverflowPopUpButton *_overflowPopUpButton; // for too many tabs
- PSMRolloverButton *_addTabButton;
- PSMTabBarController *_controller;
+ NSMutableArray *_cells; // the cells that draw the tabs + IBOutlet NSTabView *tabView; // the tab view being navigated + PSMOverflowPopUpButton *_overflowPopUpButton; // for too many tabs + PSMRolloverButton *_addTabButton; + PSMTabBarController *_controller; + NSTabViewItem *_tabViewItemWithSpring; + BOOL _hideForSingleTab; + BOOL _showAddTabButton; + BOOL _alwaysShowActiveTab; + NSInteger _resizeAreaCompensation; + PSMTabBarOrientation _orientation; + BOOL _automaticallyAnimates; + NSTimer *_animationTimer; + PSMTabBarTearOffStyle _tearOffStyle;
- NSTabViewItem *_tabViewItemWithSpring;
- BOOL _hideForSingleTab;
- BOOL _showAddTabButton;
- BOOL _alwaysShowActiveTab;
- NSInteger _resizeAreaCompensation;
- PSMTabBarOrientation _orientation;
- BOOL _automaticallyAnimates;
- NSTimer *_animationTimer;
- PSMTabBarTearOffStyle _tearOffStyle;
- BOOL _allowsBackgroundTabClosing;
- BOOL _selectsTabsOnMouseDown;
+ BOOL _allowsBackgroundTabClosing; + BOOL _selectsTabsOnMouseDown;
- NSInteger _cellMinWidth;
- NSInteger _cellMaxWidth;
- NSInteger _cellOptimumWidth;
- // animation for hide/show
- NSInteger _currentStep;
- IBOutlet id partnerView; // gets resized when hide/show
- NSInteger _tabBarWidth;
- NSTimer *_showHideAnimationTimer;
+ NSInteger _cellMinWidth; + NSInteger _cellMaxWidth; + NSInteger _cellOptimumWidth;
- NSEvent *_lastMouseDownEvent; // keep this for dragging reference
+ // animation for hide/show + NSInteger _currentStep; + IBOutlet id partnerView; // gets resized when hide/show + NSInteger _tabBarWidth; + NSTimer *_showHideAnimationTimer; + NSEvent *_lastMouseDownEvent; // keep this for dragging reference + IBOutlet id<PSMTabBarControlDelegate> delegate; -// control characteristics
+#pragma mark Control Characteristics - (CGFloat)availableCellWidth;
+- (CGFloat)availableCellHeight; - (NSRect)genericCellRect;
+#pragma mark Style Class Registry -// control configuration
++ (void)registerDefaultTabStyleClasses; ++ (void)registerTabStyleClass:(Class <PSMTabStyle>)aStyleClass; ++ (void)unregisterTabStyleClass:(Class <PSMTabStyle>)aStyleClass; ++ (NSArray *)registeredTabStyleClasses; ++ (Class <PSMTabStyle>)registeredClassForStyleName:(NSString *)name; +#pragma mark Cell Management (KVC Compliant) +- (void)addCell:(PSMTabBarCell *)aCell; +- (void)insertCell:(PSMTabBarCell *)aCell atIndex:(NSUInteger)index; +- (void)removeCellAtIndex:(NSUInteger)index; +- (void)replaceCellAtIndex:(NSUInteger)index withCell:(PSMTabBarCell *)aCell; +#pragma mark Control Configuration - (PSMTabBarOrientation)orientation;
- (void)setOrientation:(PSMTabBarOrientation)value;
@@ -159,26 +187,47 @@
- (void)setAllowsScrubbing:(BOOL)value;
- (PSMTabBarTearOffStyle)tearOffStyle;
- (void)setTearOffStyle:(PSMTabBarTearOffStyle)tearOffStyle;
+- (CGFloat)heightOfTabCells;
- (void)setTabView:(NSTabView *)view;
-- (void)setDelegate:(id)object;
+- (id<PSMTabBarControlDelegate>)delegate; +- (void)setDelegate:(id<PSMTabBarControlDelegate>)object; - (void)setPartnerView:(id)view;
+#pragma mark Determining Sizes +- (NSSize)addTabButtonSize; +- (NSRect)addTabButtonRect; +- (NSSize)overflowButtonSize; +- (NSRect)overflowButtonRect; +#pragma mark Determining Margins +- (CGFloat)bottomMargin; +#pragma mark The Buttons - (PSMRolloverButton *)addTabButton;
- (PSMOverflowPopUpButton *)overflowPopUpButton;
+#pragma mark Tab Information - (NSMutableArray *)representedTabViewItems;
- (NSInteger)numberOfVisibleTabs;
- (PSMTabBarCell *)lastVisibleTab;
-- (void)hideTabBar:(BOOL)hide animate:(BOOL)animate;
+#pragma mark Special Effects +- (void)hideTabBar:(BOOL) hide animate:(BOOL)animate; @@ -188,20 +237,26 @@
+@protocol PSMTabBarControlDelegate <NSTabViewDelegate> -@interface NSObject (TabBarControlDelegateMethods)
//Standard NSTabView methods
- (BOOL)tabView:(NSTabView *)aTabView shouldCloseTabViewItem:(NSTabViewItem *)tabViewItem;
+- (void)tabView:(NSTabView *)aTabView willCloseTabViewItem:(NSTabViewItem *)tabViewItem; - (void)tabView:(NSTabView *)aTabView didCloseTabViewItem:(NSTabViewItem *)tabViewItem;
+- (void)tabView:(NSTabView *)aTabView didDetachTabViewItem:(NSTabViewItem *)tabViewItem; //"Spring-loaded" tabs methods
- (NSArray *)allowedDraggedTypesForTabView:(NSTabView *)aTabView;
-- (void)tabView:(NSTabView *)aTabView acceptedDraggingInfo:(id <NSDraggingInfo>)draggingInfo onTabViewItem:(NSTabViewItem *)tabViewItem;
+- (void)tabView:(NSTabView *)aTabView acceptedDraggingInfo:(id <NSDraggingInfo>) draggingInfo onTabViewItem:(NSTabViewItem *)tabViewItem; - (NSMenu *)tabView:(NSTabView *)aTabView menuForTabViewItem:(NSTabViewItem *)tabViewItem;
+- (void)tabView:(NSTabView *)aTabView tabViewItem:(NSTabViewItem *)tabViewItem event:(NSEvent *)event; - (BOOL)tabView:(NSTabView *)aTabView shouldDragTabViewItem:(NSTabViewItem *)tabViewItem fromTabBar:(PSMTabBarControl *)tabBarControl;
- (BOOL)tabView:(NSTabView *)aTabView shouldDropTabViewItem:(NSTabViewItem *)tabViewItem inTabBar:(PSMTabBarControl *)tabBarControl;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMTabBarController.h Sat Oct 26 23:01:44 2013 -0400
@@ -0,0 +1,29 @@
+// PSMTabBarController.h +// Created by Kent Sutherland on 11/24/06. +// Copyright 2006 Kent Sutherland. All rights reserved. +@class PSMTabBarControl, PSMTabBarCell; +@interface PSMTabBarController : NSObject <NSMenuDelegate> + PSMTabBarControl *_control; + NSMutableArray *_cellFrames; +- (id)initWithTabBarControl:(PSMTabBarControl *)control; +- (NSMenu *)overflowMenu; +- (NSRect)cellFrameAtIndex:(NSInteger)index; +- (void)setSelectedCell:(PSMTabBarCell *)cell; --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMTabDragAssistant.h Sat Oct 26 23:01:44 2013 -0400
@@ -0,0 +1,90 @@
+// PSMTabDragAssistant.h +// Created by John Pannell on 4/10/06. +// Copyright 2006 Positive Spin Media. All rights reserved. + This class is a sigleton that manages the details of a tab drag and drop. The details were beginning to overwhelm me when keeping all of this in the control and cells :-) +#import "PSMTabBarControl.h" +#define kPSMTabDragAnimationSteps 8 +@class PSMTabBarCell, PSMTabDragWindowController; +@interface PSMTabDragAssistant : NSObject { + PSMTabBarControl *_sourceTabBar; + PSMTabBarControl *_destinationTabBar; + NSMutableSet *_participatingTabBars; + PSMTabBarCell *_draggedCell; + NSInteger _draggedCellIndex; // for snap back + // Support for dragging into new windows + PSMTabDragWindowController *_draggedTab; + PSMTabDragWindowController *_draggedView; + NSSize _dragWindowOffset; + BOOL _centersDragWindows; + PSMTabBarTearOffStyle _currentTearOffStyle; + NSTimer *_animationTimer; + NSMutableArray *_sineCurveWidths; + NSPoint _currentMouseLoc; + PSMTabBarCell *_targetCell; ++ (PSMTabDragAssistant *)sharedDragAssistant; +- (PSMTabBarControl *)sourceTabBar; +- (void)setSourceTabBar:(PSMTabBarControl *)tabBar; +- (PSMTabBarControl *)destinationTabBar; +- (void)setDestinationTabBar:(PSMTabBarControl *)tabBar; +- (PSMTabBarCell *)draggedCell; +- (void)setDraggedCell:(PSMTabBarCell *)cell; +- (NSInteger)draggedCellIndex; +- (void)setDraggedCellIndex:(NSInteger)value; +- (void)setIsDragging:(BOOL)value; +- (NSPoint)currentMouseLoc; +- (void)setCurrentMouseLoc:(NSPoint)point; +- (PSMTabBarCell *)targetCell; +- (void)setTargetCell:(PSMTabBarCell *)cell; +- (void)startDraggingCell:(PSMTabBarCell *)cell fromTabBarControl:(PSMTabBarControl *)tabBarControl withMouseDownEvent:(NSEvent *)event; +- (void)draggingEnteredTabBarControl:(PSMTabBarControl *)tabBarControl atPoint:(NSPoint)mouseLoc; +- (void)draggingUpdatedInTabBarControl:(PSMTabBarControl *)tabBarControl atPoint:(NSPoint)mouseLoc; +- (void)draggingExitedTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)performDragOperation; +- (void)draggedImageEndedAt:(NSPoint)aPoint operation:(NSDragOperation)operation; +- (void)draggingBeganAt:(NSPoint)aPoint; +- (void)draggingMovedTo:(NSPoint)aPoint; +- (void)animateDrag:(NSTimer *)timer; +- (void)calculateDragAnimationForTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)distributePlaceholdersInTabBarControl:(PSMTabBarControl *)tabBarControl withDraggedCell:(PSMTabBarCell *)cell; +- (void)distributePlaceholdersInTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)removeAllPlaceholdersFromTabBarControl:(PSMTabBarControl *)tabBarControl; +void CGContextCopyWindowCaptureContentsToRect(void *grafport, CGRect rect, NSInteger cid, NSInteger wid, NSInteger zero); +OSStatus CGSSetWindowTransform(NSInteger cid, NSInteger wid, CGAffineTransform transform); +@interface NSApplication (CoreGraphicsUndocumented) --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMTabDragView.h Sat Oct 26 23:01:44 2013 -0400
@@ -0,0 +1,21 @@
+// Created by Kent Sutherland on 6/17/07. +// Copyright 2007 Kent Sutherland. All rights reserved. +@interface PSMTabDragView : NSView { + NSImage *_alternateImage; +- (void)setFadeValue:(CGFloat)value; +- (void)setImage:(NSImage *)image; +- (NSImage *)alternateImage; +- (void)setAlternateImage:(NSImage *)image; --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMTabDragWindow.h Sat Oct 26 23:01:44 2013 -0400
@@ -0,0 +1,20 @@
+// Created by Kent Sutherland on 6/1/06. +// Copyright 2006 Kent Sutherland. All rights reserved. +@interface PSMTabDragWindow : NSWindow { + PSMTabDragView *_dragView; ++ (PSMTabDragWindow *)dragWindowWithImage:(NSImage *)image styleMask:(NSUInteger)styleMask; +- (id)initWithImage:(NSImage *)image styleMask:(NSUInteger)styleMask; +- (PSMTabDragView *)dragView; --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMTabDragWindowController.h Sat Oct 26 23:01:44 2013 -0400
@@ -0,0 +1,33 @@
+// PSMTabDragWindowController.h +// Created by Kent Sutherland on 6/18/07. +// Copyright 2007 Kent Sutherland. All rights reserved. +#import "PSMTabBarControl.h" +#define kPSMTabDragWindowAlpha 0.75 +#define kPSMTabDragAlphaInterval 0.15 +@interface PSMTabDragWindowController : NSWindowController { + PSMTabBarTearOffStyle _tearOffStyle; + NSAnimation *_animation; + BOOL _showingAlternate; + NSRect _originalWindowFrame; +- (id)initWithImage:(NSImage *)image styleMask:(NSUInteger) styleMask tearOffStyle:(PSMTabBarTearOffStyle)tearOffStyle; +- (NSImage *)alternateImage; +- (void)setAlternateImage:(NSImage *)image; --- a/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMTabStyle.h Mon Jan 20 13:48:06 2014 -0500
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMTabStyle.h Sat Oct 26 23:01:44 2013 -0400
@@ -6,9 +6,9 @@
// Copyright 2006 Positive Spin Media. All rights reserved.
-Protocol to be observed by all style delegate objects. These objects handle the drawing responsibilities for PSMTabBarCell; once the control has been assigned a style, the background and cells draw consistent with that style. Design pattern and implementation by David Smith, Seth Willits, and Chris Forsythe, all touch up and errors by John P. :-)
+ Protocol to be observed by all style delegate objects. These objects handle the drawing responsibilities for PSMTabBarCell; once the control has been assigned a style, the background and cells draw consistent with that style. Design pattern and implementation by David Smith, Seth Willits, and Chris Forsythe, all touch up and errors by John P. :-) #import "PSMTabBarCell.h"
#import "PSMTabBarControl.h"
@@ -16,42 +16,81 @@
@protocol PSMTabStyle <NSObject>
-// control specific parameters
-- (CGFloat)leftMarginForTabBarControl;
-- (CGFloat)rightMarginForTabBarControl;
-- (CGFloat)topMarginForTabBarControl;
-- (void)setOrientation:(PSMTabBarOrientation)value;
- (NSImage *)addTabButtonImage;
- (NSImage *)addTabButtonPressedImage;
- (NSImage *)addTabButtonRolloverImage;
-// cell specific parameters
-- (NSRect)dragRectForTabCell:(PSMTabBarCell *)cell orientation:(PSMTabBarOrientation)orientation;
-- (NSRect)closeButtonRectForTabCell:(PSMTabBarCell *)cell withFrame:(NSRect)cellFrame;
-- (NSRect)iconRectForTabCell:(PSMTabBarCell *)cell;
-- (NSRect)indicatorRectForTabCell:(PSMTabBarCell *)cell;
-- (NSRect)objectCounterRectForTabCell:(PSMTabBarCell *)cell;
-- (CGFloat)minimumWidthOfTabCell:(PSMTabBarCell *)cell;
-- (CGFloat)desiredWidthOfTabCell:(PSMTabBarCell *)cell;
-- (CGFloat)tabCellHeight;
+// control specific parameters +- (CGFloat)leftMarginForTabBarControl:(PSMTabBarControl *)tabBarControl; +- (CGFloat)rightMarginForTabBarControl:(PSMTabBarControl *)tabBarControl; +- (CGFloat)topMarginForTabBarControl:(PSMTabBarControl *)tabBarControl; +- (CGFloat)bottomMarginForTabBarControl:(PSMTabBarControl *)tabBarControl; +- (NSSize)addTabButtonSizeForTabBarControl:(PSMTabBarControl *)tabBarControl; +- (NSRect)addTabButtonRectForTabBarControl:(PSMTabBarControl *)tabBarControl; +- (NSSize)overflowButtonSizeForTabBarControl:(PSMTabBarControl *)tabBarControl; +- (NSRect)overflowButtonRectForTabBarControl:(PSMTabBarControl *)tabBarControl; -- (NSAttributedString *)attributedObjectCountValueForTabCell:(PSMTabBarCell *)cell;
+- (NSAttributedString *)attributedObjectCountStringValueForTabCell:(PSMTabBarCell *)cell; - (NSAttributedString *)attributedStringValueForTabCell:(PSMTabBarCell *)cell;
-- (void)drawTabCell:(PSMTabBarCell *)cell;
-- (void)drawBackgroundInRect:(NSRect)rect;
-- (void)drawTabBar:(PSMTabBarControl *)bar inRect:(NSRect)rect;
+- (CGFloat)minimumWidthOfTabCell:(PSMTabBarCell *)cell; +- (CGFloat)desiredWidthOfTabCell:(PSMTabBarCell *)cell; +- (NSImage *)closeButtonImageOfType:(PSMCloseButtonImageType)type forTabCell:(PSMTabBarCell *)cell; +// Determining Cell Size +- (CGFloat)heightOfTabCellsForTabBarControl:(PSMTabBarControl *)tabBarControl; +- (NSRect)drawingRectForBounds:(NSRect)theRect ofTabCell:(PSMTabBarCell *)cell; +- (NSRect)titleRectForBounds:(NSRect)theRect ofTabCell:(PSMTabBarCell *)cell; +- (NSRect)iconRectForBounds:(NSRect)theRect ofTabCell:(PSMTabBarCell *)cell; +- (NSRect)largeImageRectForBounds:(NSRect)theRect ofTabCell:(PSMTabBarCell *)cell; +- (NSRect)indicatorRectForBounds:(NSRect)theRect ofTabCell:(PSMTabBarCell *)cell; +- (NSSize)objectCounterSizeOfTabCell:(PSMTabBarCell *)cell; +- (NSRect)objectCounterRectForBounds:(NSRect)theRect ofTabCell:(PSMTabBarCell *)cell; +- (NSRect)closeButtonRectForBounds:(NSRect)theRect ofTabCell:(PSMTabBarCell *)cell; +- (void)drawTabBarControl:(PSMTabBarControl *)tabBarControl inRect:(NSRect)rect; +- (void)drawBezelOfTabBarControl:(PSMTabBarControl *)tabBarControl inRect:(NSRect)rect; +- (void)drawInteriorOfTabBarControl:(PSMTabBarControl *)tabBarControl inRect:(NSRect)rect; +- (void)drawTabBarCell:(PSMTabBarCell *)cell withFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawBezelOfTabCell:(PSMTabBarCell *)cell withFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawInteriorOfTabCell:(PSMTabBarCell *)cell withFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawTitleOfTabCell:(PSMTabBarCell *)cell withFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawIconOfTabCell:(PSMTabBarCell *)cell withFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl;; +- (void)drawLargeImageOfTabCell:(PSMTabBarCell *)cell withFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawIndicatorOfTabCell:(PSMTabBarCell *)cell withFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawObjectCounterOfTabCell:(PSMTabBarCell *)cell withFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawCloseButtonOfTabCell:(PSMTabBarCell *)cell withFrame:(NSRect)frame inTabBarControl:(PSMTabBarControl *)tabBarControl; +- (NSRect)dragRectForTabCell:(PSMTabBarCell *)cell ofTabBarControl:(PSMTabBarControl *)tabBarControl; +- (void)drawTabCell:(PSMTabBarCell *)cell DEPRECATED_ATTRIBUTE; +- (NSRect)closeButtonRectForTabCell:(PSMTabBarCell *)cell withFrame:(NSRect)cellFrame DEPRECATED_ATTRIBUTE; +- (NSRect)iconRectForTabCell:(PSMTabBarCell *)cell DEPRECATED_ATTRIBUTE; +- (NSRect)indicatorRectForTabCell:(PSMTabBarCell *)cell DEPRECATED_ATTRIBUTE; +- (NSRect)objectCounterRectForTabCell:(PSMTabBarCell *)cell DEPRECATED_ATTRIBUTE; +- (void)setOrientation:(PSMTabBarOrientation)value DEPRECATED_ATTRIBUTE; +- (void)drawBackgroundInRect:(NSRect)rect DEPRECATED_ATTRIBUTE; +- (void)drawTabBar:(PSMTabBarControl *)bar inRect:(NSRect)rect DEPRECATED_ATTRIBUTE; +- (CGFloat)tabCellHeight DEPRECATED_ATTRIBUTE; +- (NSRect)dragRectForTabCell:(PSMTabBarCell *)cell orientation:(PSMTabBarOrientation)orientation DEPRECATED_ATTRIBUTE; +- (NSAttributedString *)attributedObjectCountValueForTabCell:(PSMTabBarCell *)cell DEPRECATED_ATTRIBUTE; +- (CGFloat)leftMarginForTabBarControl DEPRECATED_ATTRIBUTE; +- (CGFloat)rightMarginForTabBarControl DEPRECATED_ATTRIBUTE; +- (CGFloat)topMarginForTabBarControl DEPRECATED_ATTRIBUTE; -@interface PSMTabBarControl (StyleAccessors)
-- (NSMutableArray *)cells;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Headers/PSMUnifiedTabStyle.h Sat Oct 26 23:01:44 2013 -0400
@@ -0,0 +1,29 @@
+// Created by Keith Blount on 30/04/2006. +// Copyright 2006 __MyCompanyName__. All rights reserved. +@interface PSMUnifiedTabStyle : NSObject <PSMTabStyle> { + NSImage *unifiedCloseButton; + NSImage *unifiedCloseButtonDown; + NSImage *unifiedCloseButtonOver; + NSImage *unifiedCloseDirtyButton; + NSImage *unifiedCloseDirtyButtonDown; + NSImage *unifiedCloseDirtyButtonOver; + NSImage *_addTabButtonImage; + NSImage *_addTabButtonPressedImage; + NSImage *_addTabButtonRolloverImage; +@property (assign) CGFloat leftMarginForTabBarControl; Binary file Frameworks/PSMTabBarControl.framework/Versions/A/PSMTabBarControl has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/32x32_log.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/32x32cancel.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AdiumGradient.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AquaTabClose_Front.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AquaTabClose_Front@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AquaTabClose_Front_Pressed.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AquaTabClose_Front_Pressed@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AquaTabClose_Front_Rollover.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AquaTabClose_Front_Rollover@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AquaTabNew@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AquaTabNewPressed@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AquaTabNewRollover@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AquaTabsBackground.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AquaTabsDown.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AquaTabsDownNonKey.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/AquaTabsSeparatorDown.png has changed
--- a/Frameworks/PSMTabBarControl.framework/Versions/A/Resources/Info.plist Mon Jan 20 13:48:06 2014 -0500
+++ b/Frameworks/PSMTabBarControl.framework/Versions/A/Resources/Info.plist Sat Oct 26 23:01:44 2013 -0400
@@ -3,7 +3,7 @@
<key>BuildMachineOSBuild</key>
+ <string>13A603</string> <key>CFBundleDevelopmentRegion</key>
<key>CFBundleExecutable</key>
@@ -12,27 +12,27 @@
<string>com.positivespinmedia.PSMTabBarControlFramework</string>
<key>CFBundleInfoDictionaryVersion</key>
+ <key>CFBundleName</key> + <string>PSMTabBarControl</string> <key>CFBundlePackageType</key>
<key>CFBundleSignature</key>
<key>CFBundleVersion</key>
+ <string>com.apple.compilers.llvm.clang.1_0</string> <key>DTPlatformBuild</key>
+ <string>5A2053</string> <key>DTPlatformVersion</key>
- <string>10K549</string>
+ <string>13A595</string> - <string>macosx10.6</string>
+ <string>macosx10.9</string>
- <key>NSPrincipalClass</key>
- <string>PSMTabBarControl</string>
+ <string>5A2053</string> Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/TabClose_Dirty.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/TabClose_Dirty@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/TabClose_Dirty_Pressed.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/TabClose_Dirty_Pressed@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/TabClose_Dirty_Rollover.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/TabClose_Dirty_Rollover@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/TabClose_Front.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/TabClose_Front@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/TabClose_Front_Pressed.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/TabClose_Front_Pressed@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/TabClose_Front_Rollover.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/TabClose_Front_Rollover@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/TabNewMetalRollover.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/overflowImage.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/overflowImage@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/overflowImagePressed.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/overflowImagePressed@2x.png has changed
Binary file Frameworks/PSMTabBarControl.framework/Versions/A/Resources/pi.png has changed