From 5bd366163ee0b1e4cd7aa5e20db9e99a26f4d0d6 Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 23 Oct 2000 07:42:34 +0000 Subject: [PATCH] more NSTab* related fixed git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@7887 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 8 ++++++++ Source/NSTabView.m | 25 +++++++++++++++---------- Source/NSTabViewItem.m | 11 ++++++++++- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index f658b2ccf..180b99a4d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2000-10-21 Michael Hanni + + * Source/NSTabView.m: ([-dealloc:]) updated. + ([-removeTabViewItem:]) updated to not crash + when a tabViewItem which had been the + selected tab is dealloc'ed. + * Source/NSTabViewItem.m: ([-dealloc:]) implemented. + 2000-10-20 Richard Frith-Macdonald * Source/NSClipView.m: ([-viewFrameChanged:]) fix test for when to diff --git a/Source/NSTabView.m b/Source/NSTabView.m index f6decc456..4ca04bb9e 100644 --- a/Source/NSTabView.m +++ b/Source/NSTabView.m @@ -44,13 +44,21 @@ // setup variables - tab_items = [NSMutableArray new]; - tab_font = RETAIN([NSFont systemFontOfSize: 0]); + ASSIGN (tab_items, [NSMutableArray array]); + ASSIGN (tab_font, [NSFont systemFontOfSize: 0]); tab_selected = nil; return self; } +- (void) dealloc +{ + RELEASE(tab_items); + TEST_RELEASE(tab_selected); + RELEASE(tab_font); + [super dealloc]; +} + // tab management. - (void) addTabViewItem: (NSTabViewItem*)tabViewItem @@ -85,6 +93,11 @@ if (i == NSNotFound) return; + if ([tabViewItem isEqual: tab_selected]) + { + tab_selected = nil; + } + [tab_items removeObjectAtIndex: i]; if ([tab_delegate respondsToSelector: @@ -688,12 +701,4 @@ return self; } - -- (void) dealloc -{ - RELEASE(tab_items); - RELEASE(tab_font); - [super dealloc]; -} - @end diff --git a/Source/NSTabViewItem.m b/Source/NSTabViewItem.m index 6243d1504..3a7ff83b5 100644 --- a/Source/NSTabViewItem.m +++ b/Source/NSTabViewItem.m @@ -15,6 +15,15 @@ return self; } +- (void) dealloc +{ + TEST_RELEASE(item_ident); + RELEASE(item_label); + RELEASE(item_view); + RELEASE(item_color); + [super dealloc]; +} + // Set identifier. - (void)setIdentifier:(id)identifier @@ -61,7 +70,7 @@ - (void)setView:(NSView *)view { if (item_view) - RELEASE(item_view); + TEST_RELEASE(item_view); ASSIGN(item_view, view); }