mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-30 04:40:37 +00:00
Forgot to commit NSToolbarItem.m and NSToolbarItem.h
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@19694 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
605f60b151
commit
6b519561bf
3 changed files with 93 additions and 50 deletions
|
@ -29,6 +29,7 @@
|
|||
* Source/GSToolbarView:
|
||||
* Source/NSToolbar.m:
|
||||
* Source/NSWindow+Toolbar.m:
|
||||
* Source/NSToolbarItem.m:
|
||||
Related changes and lot of memory leaks fixed permitting to have now
|
||||
the toolbar system properly deallocated when the toolbar is not anymore
|
||||
retained by the user and the toolbar view.
|
||||
|
@ -36,7 +37,7 @@
|
|||
a window, you need to have the option "Window released when closed"
|
||||
checked.
|
||||
Actual retain logic is strictly :
|
||||
- Superview in the view hierachy retains toolbar view
|
||||
- Superview in the view hierarchy retains toolbar view
|
||||
- Toolbar view retains toolbar
|
||||
- Toolbar view retains toolbar items view
|
||||
- Toolbar retains toolbar items
|
||||
|
@ -48,6 +49,7 @@
|
|||
* Headers/Additions/GNUstepGUI/GSToolbar.h:
|
||||
* Headers/AppKit/NSToolbar.h:
|
||||
Moved the _window ivar from GSToolbar class to NSToolbar class.
|
||||
* Headers/AppKit/NSToolbarItem.h: Added a _tag ivar and other minor changes.
|
||||
|
||||
2004-07-07 01:23 Alexander Malmberg <alexander@malmberg.org>
|
||||
|
||||
|
|
|
@ -62,14 +62,15 @@ APPKIT_EXPORT NSString *NSToolbarPrintItemIdentifier;
|
|||
BOOL _allowsDuplicatesInToolbar;
|
||||
NSString *_itemIdentifier;
|
||||
NSString *_label;
|
||||
NSMenuItem *_menuFormRepresentation;
|
||||
NSString *_paletteLabel;
|
||||
NSImage *_image;
|
||||
id _view;
|
||||
NSMenuItem *_menuFormRepresentation;
|
||||
NSString *_toolTip;
|
||||
int _tag;
|
||||
|
||||
// toolbar
|
||||
GSToolbar *_toolbar;
|
||||
NSString *_toolTip;
|
||||
id _view;
|
||||
NSView *_backView;
|
||||
BOOL _modified;
|
||||
BOOL _selectable;
|
||||
|
|
|
@ -56,6 +56,11 @@
|
|||
* initWithToolbarItemIdentifier: returns differents concrete subclass in accordance
|
||||
* with the item identifier.
|
||||
*/
|
||||
|
||||
static NSFont *NormalFont = nil; // See NSToolbarItem -initialize method
|
||||
// [NSFont smallSystemFontSize] or better should be NSControlContentFontSize
|
||||
|
||||
static NSFont *SmallFont = nil;
|
||||
|
||||
@interface GSToolbar (GNUstepPrivate)
|
||||
- (GSToolbarView *) _toolbarView;
|
||||
|
@ -69,6 +74,7 @@
|
|||
- (BOOL) _isFlexibleSpace;
|
||||
- (BOOL) _isModified;
|
||||
- (BOOL) _selectable;
|
||||
- (GSToolbar *) _toolbar;
|
||||
- (void) _setSelectable: (BOOL)selectable;
|
||||
- (BOOL) _selected;
|
||||
- (void) _setSelected: (BOOL)selected;
|
||||
|
@ -105,14 +111,15 @@
|
|||
|
||||
if (self != nil)
|
||||
{
|
||||
ASSIGN(_toolbarItem, toolbarItem);
|
||||
// Don't do an ASSIGN here, the toolbar item itself retains us.
|
||||
_toolbarItem = toolbarItem;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) dealloc
|
||||
{
|
||||
RELEASE(_toolbarItem);
|
||||
{
|
||||
// Nothing to do currently
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
@ -122,12 +129,14 @@
|
|||
float textWidth, layoutedWidth = -1, layoutedHeight = -1;
|
||||
NSAttributedString *attrStr;
|
||||
NSDictionary *attr;
|
||||
NSFont *font = [NSFont systemFontOfSize: 11]; // [NSFont smallSystemFontSize] or better should NSControlContentFontSize
|
||||
NSFont *font;
|
||||
unsigned int borderMask = [[[_toolbarItem toolbar] _toolbarView] borderMask];
|
||||
NSString *label = [_toolbarItem label];
|
||||
|
||||
// Adjust the layout in accordance with NSToolbarSizeMode
|
||||
|
||||
font = NormalFont;
|
||||
|
||||
switch ([[_toolbarItem toolbar] sizeMode])
|
||||
{
|
||||
case NSToolbarSizeModeDefault:
|
||||
|
@ -148,10 +157,10 @@
|
|||
// set to NSNoImage. Even if NSToolbarDisplayModeTextOnly is not true anymore
|
||||
// -setImagePosition: is only called below, then [self image] can still returns
|
||||
// nil.
|
||||
font = [NSFont systemFontOfSize: 9];
|
||||
font = SmallFont;
|
||||
break;
|
||||
default:
|
||||
; // invalid
|
||||
; // Invalid
|
||||
}
|
||||
|
||||
[[self cell] setFont: font];
|
||||
|
@ -201,7 +210,7 @@
|
|||
layoutedHeight = [attrStr size].height + _InsetItemTextY * 2;
|
||||
break;
|
||||
default:
|
||||
; // invalid
|
||||
; // Invalid
|
||||
}
|
||||
|
||||
// Set the frame size to use the new layout
|
||||
|
@ -257,13 +266,14 @@
|
|||
@interface GSToolbarBackView : NSView
|
||||
{
|
||||
NSToolbarItem *_toolbarItem;
|
||||
NSFont *_font;
|
||||
BOOL _enabled;
|
||||
BOOL _showLabel;
|
||||
NSFont *_font;
|
||||
}
|
||||
|
||||
- (id) initWithToolbarItem: (NSToolbarItem *)toolbarItem;
|
||||
- (NSToolbarItem *) toolbarItem;
|
||||
- (BOOL) enabled;
|
||||
- (void) setEnabled: (BOOL)enabled;
|
||||
@end
|
||||
|
||||
|
@ -277,16 +287,17 @@
|
|||
|
||||
if (self != nil)
|
||||
{
|
||||
ASSIGN(_toolbarItem, toolbarItem);
|
||||
// Don't do an ASSIGN here, the toolbar item itself retains us.
|
||||
_toolbarItem = toolbarItem;
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) dealloc
|
||||
{
|
||||
RELEASE(_toolbarItem);
|
||||
//RELEASE(_font);
|
||||
{
|
||||
// _font is pointing on a static variable then we do own it and don't need
|
||||
// to release it.
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
@ -311,7 +322,7 @@
|
|||
|
||||
if (_showLabel)
|
||||
{
|
||||
// we draw the label
|
||||
// We draw the label
|
||||
attr = [NSDictionary dictionaryWithObjectsAndKeys: _font,
|
||||
@"NSFontAttributeName",
|
||||
color,
|
||||
|
@ -333,7 +344,7 @@
|
|||
unsigned int borderMask = [[[_toolbarItem toolbar] _toolbarView] borderMask];
|
||||
NSString *label = [_toolbarItem label];
|
||||
|
||||
_font = [NSFont systemFontOfSize: 11]; // [NSFont smallSystemFontSize] or better should be NSControlContentFontSize
|
||||
_font = NormalFont;
|
||||
|
||||
if ([view superview] == nil) // Show the view to eventually hide it later
|
||||
[self addSubview: view];
|
||||
|
@ -357,7 +368,7 @@
|
|||
case NSToolbarSizeModeSmall:
|
||||
layoutedWidth = _ItemBackViewSmallWidth;
|
||||
layoutedHeight = _ItemBackViewSmallHeight;
|
||||
_font = [NSFont systemFontOfSize: 9];
|
||||
_font = SmallFont;
|
||||
if ([view frame].size.height > 24)
|
||||
[view removeFromSuperview];
|
||||
break;
|
||||
|
@ -394,7 +405,7 @@
|
|||
|
||||
_enabled = YES;
|
||||
_showLabel = YES;
|
||||
// this boolean variable is used to known when it's needed to draw the label in the -drawRect:
|
||||
// This boolean variable is used to known when it's needed to draw the label in the -drawRect:
|
||||
// method.
|
||||
|
||||
switch ([[_toolbarItem toolbar] displayMode])
|
||||
|
@ -414,7 +425,7 @@
|
|||
[view removeFromSuperview];
|
||||
break;
|
||||
default:
|
||||
; // invalid
|
||||
; // Invalid
|
||||
}
|
||||
|
||||
// If the view is visible...
|
||||
|
@ -456,6 +467,18 @@
|
|||
return _toolbarItem;
|
||||
}
|
||||
|
||||
- (BOOL) enabled
|
||||
{
|
||||
id view = [_toolbarItem view];
|
||||
|
||||
if ([view respondsToSelector: @selector(setEnabled:)])
|
||||
{
|
||||
return [view enabled];
|
||||
}
|
||||
|
||||
return _enabled;
|
||||
}
|
||||
|
||||
- (void) setEnabled: (BOOL)enabled
|
||||
{
|
||||
id view = [_toolbarItem view];
|
||||
|
@ -498,14 +521,14 @@
|
|||
|
||||
- (NSMenuItem *) _defaultMenuFormRepresentation
|
||||
{
|
||||
return nil; // override the default implementation in order to do nothing
|
||||
return nil; // Override the default implementation in order to do nothing
|
||||
}
|
||||
|
||||
- (void) _layout
|
||||
{
|
||||
NSView *backView = [self _backView];
|
||||
|
||||
// override the default implementation
|
||||
// Override the default implementation
|
||||
|
||||
[(id)backView layout];
|
||||
[backView setFrameSize: NSMakeSize(30, [backView frame].size.height)];
|
||||
|
@ -529,7 +552,7 @@
|
|||
|
||||
- (NSMenuItem *) _defaultMenuFormRepresentation
|
||||
{
|
||||
return nil;// override the default implementation in order to do nothing
|
||||
return nil; // Override the default implementation in order to do nothing
|
||||
}
|
||||
@end
|
||||
|
||||
|
@ -551,7 +574,7 @@
|
|||
|
||||
- (NSMenuItem *) _defaultMenuFormRepresentation
|
||||
{
|
||||
return nil;// override the default implementation in order to do nothing
|
||||
return nil; // Override the default implementation in order to do nothing
|
||||
}
|
||||
|
||||
- (void) _layout
|
||||
|
@ -562,7 +585,7 @@
|
|||
|
||||
[backView setFrameSize: NSMakeSize(0, [backView frame].size.height)];
|
||||
|
||||
// override the default implementation in order to reset the _backView to a zero width
|
||||
// Override the default implementation in order to reset the _backView to a zero width
|
||||
}
|
||||
@end
|
||||
|
||||
|
@ -581,8 +604,8 @@
|
|||
[self setImage: image];
|
||||
[self setLabel: @"Colors"]; // FIX ME: localize
|
||||
|
||||
// set action...
|
||||
[self setTarget: nil]; // goes to first responder..
|
||||
// Set action...
|
||||
[self setTarget: nil]; // Goes to first responder..
|
||||
[self setAction: @selector(orderFrontColorPanel:)];
|
||||
|
||||
return self;
|
||||
|
@ -604,8 +627,8 @@
|
|||
[self setImage: image];
|
||||
[self setLabel: @"Fonts"]; // FIX ME: localize
|
||||
|
||||
// set action...
|
||||
[self setTarget: nil]; // goes to first responder..
|
||||
// Set action...
|
||||
[self setTarget: nil]; // Goes to first responder..
|
||||
[self setAction: @selector(orderFrontFontPanel:)];
|
||||
|
||||
return self;
|
||||
|
@ -627,8 +650,8 @@
|
|||
[self setImage: image];
|
||||
[self setLabel: @"Customize"]; // FIX ME: localize
|
||||
|
||||
// set action...
|
||||
[self setTarget: nil]; // goes to first responder..
|
||||
// Set action...
|
||||
[self setTarget: nil]; // Goes to first responder..
|
||||
[self setAction: @selector(runCustomizationPalette:)];
|
||||
|
||||
return self;
|
||||
|
@ -650,7 +673,7 @@
|
|||
[self setImage: image];
|
||||
[self setLabel: @"Print..."]; // FIX ME: localize
|
||||
|
||||
// set action...
|
||||
// Set action...
|
||||
[self setTarget: nil]; // goes to first responder..
|
||||
[self setAction: @selector(print:)];
|
||||
|
||||
|
@ -660,18 +683,12 @@
|
|||
|
||||
|
||||
@implementation NSToolbarItem
|
||||
- (BOOL) allowsDuplicatesInToolbar
|
||||
+ (void) initialize
|
||||
{
|
||||
return _allowsDuplicatesInToolbar;
|
||||
}
|
||||
|
||||
- (NSImage *)image
|
||||
{
|
||||
if(_flags._image)
|
||||
{
|
||||
return _image;
|
||||
}
|
||||
return nil;
|
||||
NormalFont = RETAIN([NSFont systemFontOfSize: 11]);
|
||||
// [NSFont smallSystemFontSize] or better should be NSControlContentFontSize
|
||||
|
||||
SmallFont = RETAIN([NSFont systemFontOfSize: 9]);
|
||||
}
|
||||
|
||||
- (id) initWithItemIdentifier: (NSString *)itemIdentifier
|
||||
|
@ -747,7 +764,8 @@
|
|||
[button setImagePosition: NSImageAbove];
|
||||
[cell setBezeled: YES];
|
||||
[cell setHighlightsBy: NSChangeGrayCellMask | NSChangeBackgroundCellMask];
|
||||
[cell setFont: [NSFont systemFontOfSize: 11]]; // [NSFont smallSystemFontSize] or better should be controlContentFontSize
|
||||
[cell setFont: [NSFont systemFontOfSize: 11]];
|
||||
// [NSFont smallSystemFontSize] or better should be controlContentFontSize
|
||||
|
||||
[_backView release];
|
||||
_backView = button;
|
||||
|
@ -785,6 +803,11 @@
|
|||
[super dealloc];
|
||||
}
|
||||
|
||||
- (BOOL) allowsDuplicatesInToolbar
|
||||
{
|
||||
return _allowsDuplicatesInToolbar;
|
||||
}
|
||||
|
||||
- (BOOL) isEnabled
|
||||
{
|
||||
if(_flags._isEnabled)
|
||||
|
@ -794,6 +817,15 @@
|
|||
return NO;
|
||||
}
|
||||
|
||||
- (NSImage *)image
|
||||
{
|
||||
if(_flags._image)
|
||||
{
|
||||
return _image;
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSString *) itemIdentifier
|
||||
{
|
||||
return _itemIdentifier;
|
||||
|
@ -905,7 +937,7 @@
|
|||
- (void) setTag: (int)tag
|
||||
{
|
||||
if(_flags._tag)
|
||||
[_backView setTag: tag];
|
||||
_tag = tag;
|
||||
}
|
||||
|
||||
- (void) setTarget: (id)target
|
||||
|
@ -960,7 +992,7 @@
|
|||
- (int) tag
|
||||
{
|
||||
if(_flags._tag)
|
||||
return [_backView tag];
|
||||
return _tag;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -977,7 +1009,7 @@
|
|||
|
||||
- (void) validate
|
||||
{
|
||||
// validate by default, we know that all of the
|
||||
// Validate by default, we know that all of the
|
||||
// "standard" items are correct.
|
||||
NSMenuItem *menuItem = [self menuFormRepresentation];
|
||||
id target = [self target];
|
||||
|
@ -992,6 +1024,8 @@
|
|||
if ([target respondsToSelector: @selector(validateToolbarItem:)])
|
||||
[self setEnabled: [target validateToolbarItem: self]];
|
||||
}
|
||||
|
||||
// We can get a crash here when the target is pointing garbage memory...
|
||||
}
|
||||
|
||||
- (NSView *) view
|
||||
|
@ -1044,6 +1078,11 @@
|
|||
return [(GSToolbarButton *)_backView state];
|
||||
}
|
||||
|
||||
- (GSToolbar *) _toolbar
|
||||
{
|
||||
return _toolbar;
|
||||
}
|
||||
|
||||
- (void) _setSelected: (BOOL)selected
|
||||
{
|
||||
if (_selectable && ![self _selected] && selected)
|
||||
|
@ -1075,7 +1114,8 @@
|
|||
|
||||
- (void) _setToolbar: (GSToolbar *)toolbar
|
||||
{
|
||||
ASSIGN(_toolbar, toolbar);
|
||||
// Don't do an ASSIGN here, the toolbar itself retains us.
|
||||
_toolbar = toolbar;
|
||||
}
|
||||
|
||||
// NSValidatedUserInterfaceItem protocol
|
||||
|
@ -1105,7 +1145,7 @@
|
|||
{
|
||||
NSToolbarItem *new = [[NSToolbarItem allocWithZone: zone] initWithItemIdentifier: _itemIdentifier];
|
||||
|
||||
// copy all items individually...
|
||||
// Copy all items individually...
|
||||
[new setTarget: [self target]];
|
||||
[new setAction: [self action]];
|
||||
[new setView: [self view]];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue