[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: NSTabView Fix
Re: NSTabView Fix
Sat, 24 Feb 2007 15:00:09 +0100
Andreas Höschler wrote:
and we need to make sure these two match in some way. And what I
tried to do was just this. If I failed on doing so, please show
me my > wrongs.
Create a tabView and add four tabViewItems. _selected_item will
be 4. Then call selectedTabViewItem! Boohm!!!
So what? Fred's change looked okay to me (and still looks so). The
just that NSTabView fails to initialize the _selected_item
properly. Adding the line
_selected_item = NSNotFound;
in -initWithFrame: should fix this issue.
If NSNotFound is and will stay defined as -1 then YES! Can we build
No, because 0x7fffffff != -1 :-) (see NSObject.h; it's the same on
there is really no need to do so because the code (with two
exceptions, see below)
carefully checks whether _selected_item is NSNotFound before
decrementing the instance variable.
The two methods were the check is absent are -selectNextTabViewItem: and
-selectPreviousTabViewItem:. These methods might be changed as follows
- (void) selectNextTabViewItem: (id)sender
/* the check below does work because 0x80000000 is cast to
unsigned and thus
* greater than the number of items; nevertheless, checking
* NSNotFound improves code clarity */
if ((unsigned)(_selected_item + 1) < [_items count])
if (_selected_item != NSNotFound && (unsigned)(_selected_item +
1) < [_items count]))
[self selectTabViewItemAtIndex: _selected_item+1];
- (void) selectPreviousTabViewItem: (id)sender
/* the check below works just because even NSNotFound-1 is
greater than the
index of any item in the tab view and therefore
will set the selected item (redundantly) to nil (and thereby
_selected_item to NSNotFound); nevertheless, checking
NSNotFound improves code clarity. */
if (_selected_item > 0)
if (_selected_item != NSNotFound && _selected_item > 0)
[self selectTabViewItemAtIndex: _selected_item-1];
Sorry (to Fred), I haven't looked for a fix for the fix yesterday.
I just discovered that the modification broke my code and therefore
rolled back to the older implementation. I suppose _selected_item =
-1; in the init method will do the trick.
No, it won't. You have to use _selected_item = NSNotFound or you are
break other things in NSTabView.m.