mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 07:00:46 +00:00
* Source/NSTabView.m (-dealloc): Reset _selected to nil at top of
dealloc. * Source/NSBox.m(-drawRect:, -initWithCoder:): Implement transparent handling for custom boxes. Patch by Marcian Lytwyn <marcian.lytwyn@advcsi.com> * Source/NSTabView.m (-selectTabViewItem:): Remove duplicated code. * Source/NSTabView.m (-removeTabViewItem:): Retain the item while removing it. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@35773 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
3e2aacab04
commit
65cac93a7b
3 changed files with 33 additions and 19 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2012-10-31 Fred Kiefer <FredKiefer@gmx.de>
|
||||
|
||||
* Source/NSTabView.m (-dealloc): Reset _selected to nil at top of dealloc.
|
||||
* Source/NSBox.m(-drawRect:, -initWithCoder:): Implement
|
||||
transparent handling for custom boxes.
|
||||
Patch by Marcian Lytwyn <marcian.lytwyn@advcsi.com>
|
||||
* Source/NSTabView.m (-selectTabViewItem:): Remove duplicated code.
|
||||
* Source/NSTabView.m (-removeTabViewItem:): Retain the item while
|
||||
removing it.
|
||||
|
||||
2012-10-26 German A. Arias <german@xelalug.org>
|
||||
|
||||
* Source/GSThemeMenu.m (-setMenu:forWindow:): Revert last change. After
|
||||
|
|
|
@ -457,7 +457,14 @@
|
|||
rect = NSIntersectionRect(_bounds, rect);
|
||||
if (_box_type == NSBoxCustom)
|
||||
{
|
||||
color = _fill_color;
|
||||
if (_transparent)
|
||||
{
|
||||
color = [NSColor clearColor];
|
||||
}
|
||||
else
|
||||
{
|
||||
color = _fill_color;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -582,7 +589,7 @@
|
|||
[aCoder encodeInt: [self borderType] forKey: @"NSBorderType"];
|
||||
[aCoder encodeInt: [self boxType] forKey: @"NSBoxType"];
|
||||
[aCoder encodeInt: [self titlePosition] forKey: @"NSTitlePosition"];
|
||||
[aCoder encodeBool: _transparent forKey: @"NSTransparent"];
|
||||
[aCoder encodeBool: _transparent forKey: @"NSFullyTransparent"];
|
||||
[aCoder encodeSize: [self contentViewMargins] forKey: @"NSOffsets"];
|
||||
}
|
||||
else
|
||||
|
@ -623,9 +630,14 @@
|
|||
}
|
||||
if ([aDecoder containsValueForKey: @"NSTransparent"])
|
||||
{
|
||||
// On Apple this is always NO, we keep it for old GNUstep archives
|
||||
_transparent = [aDecoder decodeBoolForKey: @"NSTransparent"];
|
||||
}
|
||||
if ([aDecoder containsValueForKey: @"NSOffsets"])
|
||||
if ([aDecoder containsValueForKey: @"NSFullyTransparent"])
|
||||
{
|
||||
_transparent = [aDecoder decodeBoolForKey: @"NSFullyTransparent"];
|
||||
}
|
||||
if ([aDecoder containsValueForKey: @"NSOffsets"])
|
||||
{
|
||||
[self setContentViewMargins: [aDecoder decodeSizeForKey: @"NSOffsets"]];
|
||||
}
|
||||
|
|
|
@ -86,11 +86,11 @@
|
|||
|
||||
- (void) dealloc
|
||||
{
|
||||
RELEASE(_items);
|
||||
RELEASE(_font);
|
||||
// Reset the _selected attribute to prevent crash when -dealloc calls
|
||||
// -setNextKeyView:
|
||||
_selected = nil;
|
||||
RELEASE(_items);
|
||||
RELEASE(_font);
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
@ -139,8 +139,9 @@
|
|||
if (i == NSNotFound)
|
||||
return;
|
||||
|
||||
RETAIN(tabViewItem);
|
||||
// Do this BEFORE removing from array...in case it gets released...
|
||||
[tabViewItem _setTabView:nil];
|
||||
[tabViewItem _setTabView: nil];
|
||||
[_items removeObjectAtIndex: i];
|
||||
|
||||
if (tabViewItem == _selected)
|
||||
|
@ -156,6 +157,7 @@
|
|||
[self selectTabViewItem: [_items objectAtIndex: newIndex]];
|
||||
}
|
||||
}
|
||||
RELEASE(tabViewItem);
|
||||
|
||||
if ([_delegate respondsToSelector: @selector(tabViewDidChangeNumberOfTabViewItems:)])
|
||||
{
|
||||
|
@ -237,14 +239,14 @@
|
|||
BOOL canSelect = YES;
|
||||
NSView *selectedView = nil;
|
||||
|
||||
if ([_delegate respondsToSelector: @selector(tabView: shouldSelectTabViewItem:)])
|
||||
if ([_delegate respondsToSelector: @selector(tabView:shouldSelectTabViewItem:)])
|
||||
{
|
||||
canSelect = [_delegate tabView: self shouldSelectTabViewItem: tabViewItem];
|
||||
}
|
||||
|
||||
if (canSelect)
|
||||
{
|
||||
if ([_delegate respondsToSelector: @selector(tabView: willSelectTabViewItem:)])
|
||||
if ([_delegate respondsToSelector: @selector(tabView:willSelectTabViewItem:)])
|
||||
{
|
||||
[_delegate tabView: self willSelectTabViewItem: tabViewItem];
|
||||
}
|
||||
|
@ -256,21 +258,11 @@
|
|||
/* NB: If [_selected view] is nil this does nothing, which
|
||||
is fine. */
|
||||
[[_selected view] removeFromSuperview];
|
||||
_selected = nil;
|
||||
}
|
||||
|
||||
if ([_delegate respondsToSelector:
|
||||
@selector(tabView: willSelectTabViewItem:)])
|
||||
{
|
||||
[_delegate tabView: self willSelectTabViewItem: tabViewItem];
|
||||
}
|
||||
|
||||
_selected = tabViewItem;
|
||||
_selected_item = [_items indexOfObject: _selected];
|
||||
[_selected _setTabState: NSSelectedTab];
|
||||
|
||||
selectedView = [_selected view];
|
||||
|
||||
if (selectedView != nil)
|
||||
{
|
||||
NSView *firstResponder;
|
||||
|
@ -296,7 +288,7 @@
|
|||
[self setNeedsDisplay: YES];
|
||||
|
||||
if ([_delegate respondsToSelector:
|
||||
@selector(tabView: didSelectTabViewItem:)])
|
||||
@selector(tabView:didSelectTabViewItem:)])
|
||||
{
|
||||
[_delegate tabView: self didSelectTabViewItem: _selected];
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue