make a textedit cell that leaves room for the proxy icon so that we

can use a regular NSTextField for the url bar. from nhamblen@mac.com
(bug 198095)
This commit is contained in:
pinkerton%netscape.com 2003-04-23 16:47:11 +00:00
parent 46b563aa5e
commit feee4cd410
4 changed files with 69 additions and 9 deletions

View File

@ -3,13 +3,13 @@
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>IBDocumentLocation</key> <key>IBDocumentLocation</key>
<string>263 57 653 383 0 0 1280 832 </string> <string>50 101 653 383 0 0 1024 746 </string>
<key>IBEditorPositions</key> <key>IBEditorPositions</key>
<dict> <dict>
<key>124</key> <key>124</key>
<string>83 451 170 144 0 0 1280 832 </string> <string>83 451 170 144 0 0 1280 832 </string>
<key>160</key> <key>160</key>
<string>478 172 195 666 0 0 1152 848 </string> <string>602 52 195 666 0 0 1024 746 </string>
<key>28</key> <key>28</key>
<string>542 342 195 457 0 0 1280 832 </string> <string>542 342 195 457 0 0 1280 832 </string>
<key>297</key> <key>297</key>
@ -23,16 +23,16 @@
<key>463</key> <key>463</key>
<string>268 375 213 264 0 0 1280 832 </string> <string>268 375 213 264 0 0 1280 832 </string>
<key>56</key> <key>56</key>
<string>340 478 343 68 0 0 1024 746 </string> <string>355 485 314 64 0 0 1024 746 </string>
<key>654</key> <key>654</key>
<string>159 629 198 144 0 0 1280 832 </string> <string>159 629 198 144 0 0 1280 832 </string>
<key>731</key> <key>731</key>
<string>185 277 654 459 0 0 1024 746 </string> <string>185 277 654 459 0 0 1024 746 </string>
<key>801</key> <key>801</key>
<string>418 480 188 64 0 0 1024 746 </string> <string>418 469 201 79 0 0 1024 746 </string>
</dict> </dict>
<key>IBFramework Version</key> <key>IBFramework Version</key>
<string>291.0</string> <string>286.0</string>
<key>IBGroupedObjects</key> <key>IBGroupedObjects</key>
<dict> <dict>
<key>7</key> <key>7</key>
@ -45,7 +45,11 @@
<string>8</string> <string>8</string>
<key>IBLockedObjects</key> <key>IBLockedObjects</key>
<array/> <array/>
<key>IBOpenObjects</key>
<array>
<integer>56</integer>
</array>
<key>IBSystem Version</key> <key>IBSystem Version</key>
<string>6I32</string> <string>6L29</string>
</dict> </dict>
</plist> </plist>

View File

@ -47,8 +47,34 @@ static const int kFrameMargin = 1;
{ {
return YES; return YES;
} }
@end @end
#pragma mark -
//
// AutoCompleteTextCell
//
// Text cell subclass used to make room for the proxy icon inside the textview
//
@interface AutoCompleteTextCell : NSTextFieldCell
@end
@implementation AutoCompleteTextCell
- (NSRect)drawingRectForBounds:(NSRect)theRect
{
const float kProxIconOffset = 19.0;
theRect.origin.x += kProxIconOffset;
theRect.size.width -= kProxIconOffset;
return [super drawingRectForBounds:theRect];
}
@end
#pragma mark -
class AutoCompleteListener : public nsIAutoCompleteListener class AutoCompleteListener : public nsIAutoCompleteListener
{ {
public: public:
@ -75,6 +101,8 @@ private:
NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener)
#pragma mark -
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
@interface AutoCompleteTextField(Private) @interface AutoCompleteTextField(Private)
- (void)cleanup; - (void)cleanup;
@ -83,6 +111,27 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener)
@implementation AutoCompleteTextField @implementation AutoCompleteTextField
+ (Class) cellClass
{
return [AutoCompleteTextCell class];
}
// This method shouldn't be necessary according to the docs. The superclass's
// constructors should read in the cellClass and build a properly configured
// instance on their own. Instead they ignore cellClass and build a NSTextFieldCell.
- (id)initWithCoder:(NSCoder *)coder
{
[super initWithCoder:coder];
AutoCompleteTextCell* cell = [[[AutoCompleteTextCell alloc] initTextCell:@""] autorelease];
[cell setEditable:[self isEditable]];
[cell setDrawsBackground:[self drawsBackground]];
[cell setBordered:[self isBordered]];
[cell setBezeled:[self isBezeled]];
[cell setScrollable:YES];
[self setCell:cell];
return self;
}
- (void) awakeFromNib - (void) awakeFromNib
{ {
NSTableColumn *column; NSTableColumn *column;
@ -119,8 +168,15 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener)
[mTableView setTarget:self]; [mTableView setTarget:self];
[mTableView setAction:@selector(onRowClicked:)]; [mTableView setAction:@selector(onRowClicked:)];
// Create the icon column if we have a proxy icon // if we have a proxy icon
if (mProxyIcon) { if (mProxyIcon) {
// place the proxy icon on top of this view so we can see it
[mProxyIcon retain];
[mProxyIcon removeFromSuperviewWithoutNeedingDisplay];
[self addSubview:mProxyIcon];
[mProxyIcon release];
[mProxyIcon setFrameOrigin: NSMakePoint(3, 4)];
// Create the icon column
column = [[[NSTableColumn alloc] initWithIdentifier:@"icon"] autorelease]; column = [[[NSTableColumn alloc] initWithIdentifier:@"icon"] autorelease];
[column setWidth:[mProxyIcon frame].origin.x + [mProxyIcon frame].size.width]; [column setWidth:[mProxyIcon frame].origin.x + [mProxyIcon frame].size.width];
dataCell = [[[NSImageCell alloc] initImageCell:nil] autorelease]; dataCell = [[[NSImageCell alloc] initImageCell:nil] autorelease];

View File

@ -772,8 +772,8 @@ static NSArray* sToolbarDefaults = nil;
[toolbarItem setLabel:NSLocalizedString(@"Location", @"Location")]; [toolbarItem setLabel:NSLocalizedString(@"Location", @"Location")];
[toolbarItem setPaletteLabel:NSLocalizedString(@"Location", @"Location")]; [toolbarItem setPaletteLabel:NSLocalizedString(@"Location", @"Location")];
[toolbarItem setView:mLocationToolbarView]; [toolbarItem setView:mLocationToolbarView];
[toolbarItem setMinSize:NSMakeSize(128,20)]; [toolbarItem setMinSize:NSMakeSize(128, NSHeight([mLocationToolbarView frame]))];
[toolbarItem setMaxSize:NSMakeSize(2560,32)]; [toolbarItem setMaxSize:NSMakeSize(2560, NSHeight([mLocationToolbarView frame]))];
[menuFormRep setTarget:self]; [menuFormRep setTarget:self];
[menuFormRep setAction:@selector(performAppropriateLocationAction)]; [menuFormRep setAction:@selector(performAppropriateLocationAction)];