Tidyups an implememnted missing method

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@6587 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
richard 2000-05-09 05:31:59 +00:00
parent a1b4750227
commit a8fa7b8478
2 changed files with 285 additions and 194 deletions

View file

@ -1,3 +1,14 @@
2000-05-09 Richard Frith-Macdonald <rfm@gnu.org>
* gui/Source/NSTabView.m: General tidyup, minro fixes, and implemented
([-takeSelectedTabViewItemFromSender:])
2000-05-09 Georg Fleischmann
* gui/Source/NSTabView.m
([-initWithFram:]): retain tab_font
([-dealloc]): new method
2000-05-07 Fred Kiefer <FredKiefer@gmx.de> 2000-05-07 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSAttributedString.m: * Source/NSAttributedString.m:

View file

@ -1,21 +1,51 @@
/*
NSTabView.m
The tabular view class
Copyright (C) 1999,2000 Free Software Foundation, Inc.
Author: Michael Hanni <mhanni@sprintmail.com>
Date: 1999
This file is part of the GNUstep GUI Library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include <AppKit/NSColor.h> #include <AppKit/NSColor.h>
#include <AppKit/NSFont.h> #include <AppKit/NSFont.h>
#include <AppKit/NSGraphics.h> #include <AppKit/NSGraphics.h>
#include <AppKit/NSImage.h> #include <AppKit/NSImage.h>
#include <AppKit/NSForm.h>
#include <AppKit/NSMatrix.h>
#include <AppKit/NSTabView.h> #include <AppKit/NSTabView.h>
#include <AppKit/NSTabViewItem.h> #include <AppKit/NSTabViewItem.h>
#include <AppKit/PSOperators.h> #include <AppKit/PSOperators.h>
@implementation NSTabView @implementation NSTabView
- (id)initWithFrame:(NSRect)rect - (id) initWithFrame: (NSRect)rect
{ {
[super initWithFrame:rect]; [super initWithFrame: rect];
// setup variables // setup variables
tab_items = [NSMutableArray new]; tab_items = [NSMutableArray new];
tab_font = [NSFont systemFontOfSize:12]; tab_font = RETAIN([NSFont systemFontOfSize: 12]);
tab_selected = nil; tab_selected = nil;
return self; return self;
@ -23,181 +53,202 @@
// tab management. // tab management.
- (void)addTabViewItem:(NSTabViewItem *)tabViewItem - (void) addTabViewItem: (NSTabViewItem*)tabViewItem
{ {
[tabViewItem _setTabView:self]; [tabViewItem _setTabView: self];
[tab_items insertObject:tabViewItem atIndex:[tab_items count]]; [tab_items insertObject: tabViewItem atIndex: [tab_items count]];
if ([tab_delegate respondsToSelector: if ([tab_delegate respondsToSelector:
@selector(tabViewDidChangeNumberOfTabViewItems:)]) @selector(tabViewDidChangeNumberOfTabViewItems:)])
{ {
[tab_delegate tabViewDidChangeNumberOfTabViewItems:self]; [tab_delegate tabViewDidChangeNumberOfTabViewItems: self];
} }
} }
- (void)insertTabViewItem:(NSTabViewItem *)tabViewItem - (void) insertTabViewItem: (NSTabViewItem*)tabViewItem
atIndex:(int)index atIndex: (int)index
{ {
[tabViewItem _setTabView:self]; [tabViewItem _setTabView: self];
[tab_items insertObject:tabViewItem atIndex:index]; [tab_items insertObject: tabViewItem atIndex: index];
if ([tab_delegate respondsToSelector: if ([tab_delegate respondsToSelector:
@selector(tabViewDidChangeNumberOfTabViewItems:)]) @selector(tabViewDidChangeNumberOfTabViewItems:)])
{ {
[tab_delegate tabViewDidChangeNumberOfTabViewItems:self]; [tab_delegate tabViewDidChangeNumberOfTabViewItems: self];
} }
} }
- (void)removeTabViewItem:(NSTabViewItem *)tabViewItem - (void) removeTabViewItem: (NSTabViewItem*)tabViewItem
{ {
int i = [tab_items indexOfObject:tabViewItem]; unsigned i = [tab_items indexOfObject: tabViewItem];
if (i == -1) if (i == NSNotFound)
return; return;
[tab_items removeObjectAtIndex:i]; [tab_items removeObjectAtIndex: i];
if ([tab_delegate respondsToSelector: if ([tab_delegate respondsToSelector:
@selector(tabViewDidChangeNumberOfTabViewItems:)]) @selector(tabViewDidChangeNumberOfTabViewItems:)])
{ {
[tab_delegate tabViewDidChangeNumberOfTabViewItems:self]; [tab_delegate tabViewDidChangeNumberOfTabViewItems: self];
} }
} }
- (int)indexOfTabViewItem:(NSTabViewItem *)tabViewItem - (int) indexOfTabViewItem: (NSTabViewItem*)tabViewItem
{ {
return [tab_items indexOfObject:tabViewItem]; return [tab_items indexOfObject: tabViewItem];
} }
- (int)indexOfTabViewItemWithIdentifier:(id)identifier - (int) indexOfTabViewItemWithIdentifier: (id)identifier
{ {
int howMany = [tab_items count]; unsigned howMany = [tab_items count];
int i; unsigned i;
for (i=0;i<howMany;i++) for (i = 0; i < howMany; i++)
{ {
id anItem = [tab_items objectAtIndex:i]; id anItem = [tab_items objectAtIndex: i];
if ([[anItem identifier] isEqual:identifier]) if ([[anItem identifier] isEqual: identifier])
return i; return i;
} }
return NSNotFound; return NSNotFound;
} }
- (int)numberOfTabViewItems - (int) numberOfTabViewItems
{ {
return [tab_items count]; return [tab_items count];
} }
- (NSTabViewItem *)tabViewItemAtIndex:(int)index - (NSTabViewItem*) tabViewItemAtIndex: (int)index
{ {
return [tab_items objectAtIndex:index]; return [tab_items objectAtIndex: index];
} }
- (NSArray *)tabViewItems - (NSArray*) tabViewItems
{ {
return (NSArray *)tab_items; return (NSArray*)tab_items;
} }
- (void)selectFirstTabViewItem:(id)sender - (void) selectFirstTabViewItem: (id)sender
{ {
[self selectTabViewItemAtIndex:0]; [self selectTabViewItemAtIndex: 0];
} }
- (void)selectLastTabViewItem:(id)sender - (void) selectLastTabViewItem: (id)sender
{ {
[self selectTabViewItem:[tab_items lastObject]]; [self selectTabViewItem: [tab_items lastObject]];
} }
- (void)selectNextTabViewItem:(id)sender - (void) selectNextTabViewItem: (id)sender
{ {
[self selectTabViewItemAtIndex:tab_selected_item+1]; [self selectTabViewItemAtIndex: tab_selected_item+1];
} }
- (void)selectPreviousTabViewItem:(id)sender - (void) selectPreviousTabViewItem: (id)sender
{ {
[self selectTabViewItemAtIndex:tab_selected_item-1]; [self selectTabViewItemAtIndex: tab_selected_item-1];
} }
- (NSTabViewItem *)selectedTabViewItem - (NSTabViewItem*) selectedTabViewItem
{ {
return [tab_items objectAtIndex:tab_selected_item]; return [tab_items objectAtIndex: tab_selected_item];
} }
- (void)selectTabViewItem:(NSTabViewItem *)tabViewItem - (void) selectTabViewItem: (NSTabViewItem*)tabViewItem
{ {
BOOL canSelect = YES; BOOL canSelect = YES;
if ([tab_delegate respondsToSelector: if ([tab_delegate respondsToSelector:
@selector(tabView:shouldSelectTabViewItem:)]) @selector(tabView: shouldSelectTabViewItem:)])
{ {
canSelect = [tab_delegate tabView:self canSelect = [tab_delegate tabView: self
shouldSelectTabViewItem:tabViewItem]; shouldSelectTabViewItem: tabViewItem];
} }
if (canSelect) if (canSelect)
{ {
if (tab_selected) if (tab_selected)
{ {
[tab_selected _setTabState:NSBackgroundTab]; [tab_selected _setTabState: NSBackgroundTab];
if ([tab_selected view]) if ([tab_selected view])
[[tab_selected view] removeFromSuperview]; [[tab_selected view] removeFromSuperview];
} }
tab_selected = tabViewItem; tab_selected = tabViewItem;
if ([tab_delegate respondsToSelector: if ([tab_delegate respondsToSelector:
@selector(tabView:willSelectTabViewItem:)]) @selector(tabView: willSelectTabViewItem:)])
{ {
[tab_delegate tabView:self willSelectTabViewItem:tab_selected]; [tab_delegate tabView: self willSelectTabViewItem: tab_selected];
} }
tab_selected_item = [tab_items indexOfObject:tab_selected]; tab_selected_item = [tab_items indexOfObject: tab_selected];
[tab_selected _setTabState:NSSelectedTab]; [tab_selected _setTabState: NSSelectedTab];
[self setNeedsDisplay:YES]; [self setNeedsDisplay: YES];
if ([tab_selected view]) if ([tab_selected view])
[self addSubview:[tab_selected view]]; [self addSubview: [tab_selected view]];
if ([tab_delegate respondsToSelector: if ([tab_delegate respondsToSelector:
@selector(tabView:didSelectTabViewItem:)]) @selector(tabView: didSelectTabViewItem:)])
{ {
[tab_delegate tabView:self didSelectTabViewItem:tab_selected]; [tab_delegate tabView: self didSelectTabViewItem: tab_selected];
} }
} }
} }
- (void)selectTabViewItemAtIndex:(int)index - (void) selectTabViewItemAtIndex: (int)index
{ {
[self selectTabViewItem:[tab_items objectAtIndex:index]]; if (index < 0)
[self selectTabViewItem: nil];
else
[self selectTabViewItem: [tab_items objectAtIndex: index]];
} }
- (void)takeSelectedTabViewItemFromSender:(id)sender - (void) takeSelectedTabViewItemFromSender: (id)sender
{ {
int index = -1;
if ([sender respondsToSelector: @selector(indexOfSelectedItem)] == YES)
{
index = [sender indexOfSelectedItem];
}
else if ([sender isKindOfClass: [NSMatrix class]] == YES)
{
int cols = [sender numberOfColumns];
int row = [sender selectedRow];
int col = [sender selectedColumn];
if (row >= 0 && col >= 0)
{
index = row * cols + col;
}
}
[self selectTabViewItem: [tab_items objectAtIndex: index]];
} }
- (void)setFont:(NSFont *)font - (void) setFont: (NSFont*)font
{ {
ASSIGN(tab_font, font); ASSIGN(tab_font, font);
} }
- (NSFont *)font - (NSFont*) font
{ {
return tab_font; return tab_font;
} }
- (void)setTabViewType:(NSTabViewType)tabViewType - (void) setTabViewType: (NSTabViewType)tabViewType
{ {
tab_type = tabViewType; tab_type = tabViewType;
} }
- (NSTabViewType)tabViewType - (NSTabViewType) tabViewType
{ {
return tab_type; return tab_type;
} }
- (void)setDrawsBackground:(BOOL)flag - (void) setDrawsBackground: (BOOL)flag
{ {
tab_draws_background = flag; tab_draws_background = flag;
} }
@ -207,34 +258,34 @@
return tab_draws_background; return tab_draws_background;
} }
- (void)setAllowsTruncatedLabels:(BOOL)allowTruncatedLabels - (void) setAllowsTruncatedLabels: (BOOL)allowTruncatedLabels
{ {
tab_truncated_label = allowTruncatedLabels; tab_truncated_label = allowTruncatedLabels;
} }
- (BOOL)allowsTruncatedLabels - (BOOL) allowsTruncatedLabels
{ {
return tab_truncated_label; return tab_truncated_label;
} }
- (void)setDelegate:(id)anObject - (void) setDelegate: (id)anObject
{ {
tab_delegate = anObject; tab_delegate = anObject;
} }
- (id)delegate - (id) delegate
{ {
return tab_delegate; return tab_delegate;
} }
// content and size // content and size
- (NSSize)minimumSize - (NSSize) minimumSize
{ {
return NSZeroSize; return NSZeroSize;
} }
- (NSRect)contentRect - (NSRect) contentRect
{ {
NSRect cRect = _frame; NSRect cRect = _frame;
@ -259,48 +310,53 @@
// Drawing. // Drawing.
- (void)drawRect:(NSRect)rect - (void) drawRect: (NSRect)rect
{ {
NSGraphicsContext *ctxt = GSCurrentContext(); NSGraphicsContext *ctxt = GSCurrentContext();
float borderThickness; float borderThickness;
int howMany = [tab_items count]; int howMany = [tab_items count];
int i; int i;
NSRect previousRect; NSRect previousRect;
int previousState = 0; int previousState = 0;
rect = NSIntersectionRect(_bounds, rect); rect = NSIntersectionRect(_bounds, rect);
DPSgsave(ctxt); DPSgsave(ctxt);
switch (tab_type) { switch (tab_type)
case NSTopTabsBezelBorder: {
rect.size.height -= 16; case NSTopTabsBezelBorder:
NSDrawButton(rect, rect); rect.size.height -= 16;
borderThickness = 2; NSDrawButton(rect, rect);
break; borderThickness = 2;
case NSBottomTabsBezelBorder: break;
rect.size.height -= 16;
rect.origin.y += 16; case NSBottomTabsBezelBorder:
NSDrawButton(rect, rect); rect.size.height -= 16;
rect.origin.y -= 16; rect.origin.y += 16;
borderThickness = 2; NSDrawButton(rect, rect);
break; rect.origin.y -= 16;
case NSNoTabsBezelBorder: borderThickness = 2;
NSDrawButton(rect, rect); break;
borderThickness = 2;
break; case NSNoTabsBezelBorder:
case NSNoTabsLineBorder: NSDrawButton(rect, rect);
[[NSColor controlDarkShadowColor] set]; borderThickness = 2;
NSFrameRect(rect); break;
borderThickness = 1;
break; case NSNoTabsLineBorder:
case NSNoTabsNoBorder: [[NSColor controlDarkShadowColor] set];
borderThickness = 0; NSFrameRect(rect);
break; borderThickness = 1;
} break;
case NSNoTabsNoBorder:
borderThickness = 0;
break;
}
if (!tab_selected) if (!tab_selected)
[self selectFirstTabViewItem:nil]; [self selectFirstTabViewItem: nil];
if (tab_type == NSNoTabsBezelBorder || tab_type == NSNoTabsLineBorder) if (tab_type == NSNoTabsBezelBorder || tab_type == NSNoTabsLineBorder)
{ {
@ -310,18 +366,18 @@
if (tab_type == NSBottomTabsBezelBorder) if (tab_type == NSBottomTabsBezelBorder)
{ {
for (i=0;i<howMany;i++) for (i = 0; i < howMany; i++)
{ {
// where da tab be at? // where da tab be at?
NSSize s; NSSize s;
NSRect r; NSRect r;
NSPoint iP; NSPoint iP;
NSTabViewItem *anItem = [tab_items objectAtIndex:i]; NSTabViewItem *anItem = [tab_items objectAtIndex: i];
NSTabState itemState; NSTabState itemState;
itemState = [anItem tabState]; itemState = [anItem tabState];
s = [anItem sizeOfLabel:NO]; s = [anItem sizeOfLabel: NO];
if (i == 0) if (i == 0)
{ {
@ -332,16 +388,16 @@
if (itemState == NSSelectedTab) if (itemState == NSSelectedTab)
{ {
iP.y += 1; iP.y += 1;
[[NSImage imageNamed:@"common_TabDownSelectedLeft.tiff"] [[NSImage imageNamed: @"common_TabDownSelectedLeft.tiff"]
compositeToPoint:iP operation: NSCompositeSourceOver]; compositeToPoint: iP operation: NSCompositeSourceOver];
iP.y -= 1; iP.y -= 1;
iFlex = 1; iFlex = 1;
} }
else if (itemState == NSBackgroundTab) else if (itemState == NSBackgroundTab)
{ {
iP.y += 1; iP.y += 1;
[[NSImage imageNamed:@"common_TabDownUnSelectedLeft.tiff"] [[NSImage imageNamed: @"common_TabDownUnSelectedLeft.tiff"]
compositeToPoint:iP operation: NSCompositeSourceOver]; compositeToPoint: iP operation: NSCompositeSourceOver];
iP.y -= 1; iP.y -= 1;
} }
else else
@ -358,12 +414,15 @@
DPSrlineto(ctxt, r.size.width, 0); DPSrlineto(ctxt, r.size.width, 0);
DPSstroke(ctxt); DPSstroke(ctxt);
[anItem drawLabel:NO inRect:r]; [anItem drawLabel: NO inRect: r];
previousRect = r; previousRect = r;
previousState = itemState; previousState = itemState;
} else { }
int iFlex = 0; else
{
int iFlex = 0;
iP.x = previousRect.origin.x + previousRect.size.width; iP.x = previousRect.origin.x + previousRect.size.width;
iP.y = rect.origin.y; iP.y = rect.origin.y;
@ -371,26 +430,31 @@
{ {
iP.y += 1; iP.y += 1;
iFlex = 1; iFlex = 1;
[[NSImage imageNamed:@"common_TabDownUnSelectedToSelectedJunction.tiff"] [[NSImage imageNamed:
compositeToPoint:iP operation: NSCompositeSourceOver]; @"common_TabDownUnSelectedToSelectedJunction.tiff"]
compositeToPoint: iP operation: NSCompositeSourceOver];
iP.y -= 1; iP.y -= 1;
} }
else if (itemState == NSBackgroundTab) else if (itemState == NSBackgroundTab)
{ {
if (previousState == NSSelectedTab) if (previousState == NSSelectedTab)
{ {
iP.y += 1; iP.y += 1;
[[NSImage imageNamed:@"common_TabDownSelectedToUnSelectedJunction.tiff"] [[NSImage imageNamed:
compositeToPoint:iP operation: NSCompositeSourceOver]; @"common_TabDownSelectedToUnSelectedJunction.tiff"]
iP.y -= 1; compositeToPoint: iP operation: NSCompositeSourceOver];
iFlex = -1; iP.y -= 1;
} else { iFlex = -1;
// iP.y += 1; }
[[NSImage imageNamed:@"common_TabDownUnSelectedJunction.tiff"] else
compositeToPoint:iP operation: NSCompositeSourceOver]; {
//iP.y -= 1; // iP.y += 1;
iFlex = -1; [[NSImage imageNamed:
} @"common_TabDownUnSelectedJunction.tiff"]
compositeToPoint: iP operation: NSCompositeSourceOver];
//iP.y -= 1;
iFlex = -1;
}
} }
else else
NSLog(@"Not finished yet. Luff ya.\n"); NSLog(@"Not finished yet. Luff ya.\n");
@ -408,7 +472,7 @@
DPSrlineto(ctxt, r.size.width, 0); DPSrlineto(ctxt, r.size.width, 0);
DPSstroke(ctxt); DPSstroke(ctxt);
[anItem drawLabel:NO inRect:r]; [anItem drawLabel: NO inRect: r];
previousRect = r; previousRect = r;
previousState = itemState; previousState = itemState;
@ -419,13 +483,13 @@
iP.x += s.width + 13; iP.x += s.width + 13;
if ([anItem tabState] == NSSelectedTab) if ([anItem tabState] == NSSelectedTab)
[[NSImage imageNamed:@"common_TabDownSelectedRight.tiff"] [[NSImage imageNamed: @"common_TabDownSelectedRight.tiff"]
compositeToPoint:iP operation: NSCompositeSourceOver]; compositeToPoint: iP operation: NSCompositeSourceOver];
else if ([anItem tabState] == NSBackgroundTab) else if ([anItem tabState] == NSBackgroundTab)
{ {
// iP.y += 1; // iP.y += 1;
[[NSImage imageNamed:@"common_TabDownUnSelectedRight.tiff"] [[NSImage imageNamed: @"common_TabDownUnSelectedRight.tiff"]
compositeToPoint:iP operation: NSCompositeSourceOver]; compositeToPoint: iP operation: NSCompositeSourceOver];
// iP.y -= 1; // iP.y -= 1;
} }
else else
@ -435,18 +499,18 @@
} }
else if (tab_type == NSTopTabsBezelBorder) else if (tab_type == NSTopTabsBezelBorder)
{ {
for (i=0;i<howMany;i++) for (i = 0; i < howMany; i++)
{ {
// where da tab be at? // where da tab be at?
NSSize s; NSSize s;
NSRect r; NSRect r;
NSPoint iP; NSPoint iP;
NSTabViewItem *anItem = [tab_items objectAtIndex:i]; NSTabViewItem *anItem = [tab_items objectAtIndex: i];
NSTabState itemState; NSTabState itemState;
itemState = [anItem tabState]; itemState = [anItem tabState];
s = [anItem sizeOfLabel:NO]; s = [anItem sizeOfLabel: NO];
if (i == 0) if (i == 0)
{ {
@ -456,12 +520,12 @@
if (itemState == NSSelectedTab) if (itemState == NSSelectedTab)
{ {
iP.y -= 1; iP.y -= 1;
[[NSImage imageNamed:@"common_TabSelectedLeft.tiff"] [[NSImage imageNamed: @"common_TabSelectedLeft.tiff"]
compositeToPoint:iP operation: NSCompositeSourceOver]; compositeToPoint: iP operation: NSCompositeSourceOver];
} }
else if (itemState == NSBackgroundTab) else if (itemState == NSBackgroundTab)
[[NSImage imageNamed:@"common_TabUnSelectedLeft.tiff"] [[NSImage imageNamed: @"common_TabUnSelectedLeft.tiff"]
compositeToPoint:iP operation: NSCompositeSourceOver]; compositeToPoint: iP operation: NSCompositeSourceOver];
else else
NSLog(@"Not finished yet. Luff ya.\n"); NSLog(@"Not finished yet. Luff ya.\n");
@ -476,31 +540,38 @@
DPSrlineto(ctxt, r.size.width, 0); DPSrlineto(ctxt, r.size.width, 0);
DPSstroke(ctxt); DPSstroke(ctxt);
[anItem drawLabel:NO inRect:r]; [anItem drawLabel: NO inRect: r];
previousRect = r; previousRect = r;
previousState = itemState; previousState = itemState;
} else { }
else
{
iP.x = previousRect.origin.x + previousRect.size.width; iP.x = previousRect.origin.x + previousRect.size.width;
iP.y = rect.size.height; iP.y = rect.size.height;
if (itemState == NSSelectedTab) if (itemState == NSSelectedTab)
{ {
iP.y -= 1; iP.y -= 1;
[[NSImage imageNamed:@"common_TabUnSelectToSelectedJunction.tiff"] [[NSImage imageNamed:
compositeToPoint:iP operation: NSCompositeSourceOver]; @"common_TabUnSelectToSelectedJunction.tiff"]
compositeToPoint: iP operation: NSCompositeSourceOver];
} }
else if (itemState == NSBackgroundTab) else if (itemState == NSBackgroundTab)
{ {
if (previousState == NSSelectedTab) if (previousState == NSSelectedTab)
{ {
iP.y -= 1; iP.y -= 1;
[[NSImage imageNamed:@"common_TabSelectedToUnSelectedJunction.tiff"] [[NSImage imageNamed:
compositeToPoint:iP operation: NSCompositeSourceOver]; @"common_TabSelectedToUnSelectedJunction.tiff"]
compositeToPoint: iP operation: NSCompositeSourceOver];
iP.y += 1; iP.y += 1;
} else { }
[[NSImage imageNamed:@"common_TabUnSelectedJunction.tiff"] else
compositeToPoint:iP operation: NSCompositeSourceOver]; {
[[NSImage imageNamed:
@"common_TabUnSelectedJunction.tiff"]
compositeToPoint: iP operation: NSCompositeSourceOver];
} }
} }
else else
@ -517,7 +588,7 @@
DPSrlineto(ctxt, r.size.width, 0); DPSrlineto(ctxt, r.size.width, 0);
DPSstroke(ctxt); DPSstroke(ctxt);
[anItem drawLabel:NO inRect:r]; [anItem drawLabel: NO inRect: r];
previousRect = r; previousRect = r;
previousState = itemState; previousState = itemState;
@ -525,16 +596,16 @@
if (i == howMany-1) if (i == howMany-1)
{ {
iP.x += s.width + 13; iP.x += s.width + 13;
if ([anItem tabState] == NSSelectedTab) if ([anItem tabState] == NSSelectedTab)
[[NSImage imageNamed:@"common_TabSelectedRight.tiff"] [[NSImage imageNamed: @"common_TabSelectedRight.tiff"]
compositeToPoint:iP operation: NSCompositeSourceOver]; compositeToPoint: iP operation: NSCompositeSourceOver];
else if ([anItem tabState] == NSBackgroundTab) else if ([anItem tabState] == NSBackgroundTab)
[[NSImage imageNamed:@"common_TabUnSelectedRight.tiff"] [[NSImage imageNamed: @"common_TabUnSelectedRight.tiff"]
compositeToPoint:iP operation: NSCompositeSourceOver]; compositeToPoint: iP operation: NSCompositeSourceOver];
else else
NSLog(@"Not finished yet. Luff ya.\n"); NSLog(@"Not finished yet. Luff ya.\n");
} }
} }
} }
@ -549,37 +620,38 @@
// Event handling. // Event handling.
- (NSTabViewItem *)tabViewItemAtPoint:(NSPoint)point - (NSTabViewItem*) tabViewItemAtPoint: (NSPoint)point
{ {
int howMany = [tab_items count]; int howMany = [tab_items count];
int i; int i;
point = [self convertPoint:point fromView:nil]; point = [self convertPoint: point fromView: nil];
for (i=0;i<howMany;i++) { for (i = 0; i < howMany; i++)
NSTabViewItem *anItem = [tab_items objectAtIndex:i]; {
NSTabViewItem *anItem = [tab_items objectAtIndex: i];
if(NSPointInRect(point,[anItem _tabRect])) if(NSPointInRect(point,[anItem _tabRect]))
return anItem; return anItem;
} }
return nil; return nil;
} }
- (NSView*) hitTest: (NSPoint)aPoint - (NSView*) hitTest: (NSPoint)aPoint
{ {
NSTabViewItem *anItem = [self tabViewItemAtPoint:aPoint]; NSTabViewItem *anItem = [self tabViewItemAtPoint: aPoint];
if (anItem && ![anItem isEqual:tab_selected]) if (anItem && ![anItem isEqual: tab_selected])
{ {
[self selectTabViewItem:anItem]; [self selectTabViewItem: anItem];
} }
// [self setNeedsDisplay:YES]; // [self setNeedsDisplay: YES];
// [_window update]; // [_window update];
return [super hitTest:aPoint]; return [super hitTest: aPoint];
} }
// Coding. // Coding.
@ -588,12 +660,12 @@
{ {
[super encodeWithCoder: aCoder]; [super encodeWithCoder: aCoder];
[aCoder encodeObject:tab_items]; [aCoder encodeObject: tab_items];
[aCoder encodeObject:tab_font]; [aCoder encodeObject: tab_font];
[aCoder encodeValueOfObjCType: @encode(NSTabViewType) at: &tab_type]; [aCoder encodeValueOfObjCType: @encode(NSTabViewType) at: &tab_type];
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &tab_draws_background]; [aCoder encodeValueOfObjCType: @encode(BOOL) at: &tab_draws_background];
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &tab_truncated_label]; [aCoder encodeValueOfObjCType: @encode(BOOL) at: &tab_truncated_label];
[aCoder encodeObject:tab_delegate]; [aCoder encodeObject: tab_delegate];
[aCoder encodeValueOfObjCType: "i" at: &tab_selected_item]; [aCoder encodeValueOfObjCType: "i" at: &tab_selected_item];
} }
@ -603,7 +675,7 @@
[aDecoder decodeValueOfObjCType: @encode(id) at: &tab_items]; [aDecoder decodeValueOfObjCType: @encode(id) at: &tab_items];
[aDecoder decodeValueOfObjCType: @encode(id) at: &tab_font]; [aDecoder decodeValueOfObjCType: @encode(id) at: &tab_font];
[aDecoder decodeValueOfObjCType: @encode(NSTabViewType) at:&tab_type]; [aDecoder decodeValueOfObjCType: @encode(NSTabViewType) at: &tab_type];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &tab_draws_background]; [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &tab_draws_background];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &tab_truncated_label]; [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &tab_truncated_label];
[aDecoder decodeValueOfObjCType: @encode(id) at: &tab_delegate]; [aDecoder decodeValueOfObjCType: @encode(id) at: &tab_delegate];
@ -611,4 +683,12 @@
return self; return self;
} }
- (void) dealloc
{
RELEASE(tab_items);
RELEASE(tab_font);
[super dealloc];
}
@end @end