From d2a6c289701b1fcc4693f0220ec5e7a31473f0bd Mon Sep 17 00:00:00 2001 From: "stuart.morgan%alumni.case.edu" Date: Mon, 6 Nov 2006 15:52:21 +0000 Subject: [PATCH] Camino only - Bug 303628: prevent spaces in keyword fields. r=cl sr=pink --- .../src/bookmarks/BookmarkInfoController.mm | 2 ++ camino/src/bookmarks/BookmarkItem.h | 6 +++++ camino/src/bookmarks/BookmarkItem.mm | 25 +++++++++++++++++++ .../src/bookmarks/BookmarkViewController.mm | 4 +++ 4 files changed, 37 insertions(+) diff --git a/camino/src/bookmarks/BookmarkInfoController.mm b/camino/src/bookmarks/BookmarkInfoController.mm index 40ce949d4463..1eb0cdfc4dc0 100644 --- a/camino/src/bookmarks/BookmarkInfoController.mm +++ b/camino/src/bookmarks/BookmarkInfoController.mm @@ -102,6 +102,8 @@ static BookmarkInfoController* gSharedBookmarkInfoController = nil; { [self setShouldCascadeWindows:NO]; [[self window] setFrameAutosaveName:@"BookmarkInfoWindow"]; + [mBookmarkKeywordField setFormatter:[[[BookmarkKeywordFormatter alloc] init] autorelease]]; + [mFolderKeywordField setFormatter:[[[BookmarkKeywordFormatter alloc] init] autorelease]]; } - (void)windowDidLoad diff --git a/camino/src/bookmarks/BookmarkItem.h b/camino/src/bookmarks/BookmarkItem.h index c3306b5eb59d..4724a6388d72 100644 --- a/camino/src/bookmarks/BookmarkItem.h +++ b/camino/src/bookmarks/BookmarkItem.h @@ -69,6 +69,12 @@ enum kBookmarkItemEverythingChangedMask = 0xFFFFFFFE }; +// A formatter for keyword entry fields that prevents whitespace in keywords, since +// keywords with whitespace don't work. +@interface BookmarkKeywordFormatter : NSFormatter +{ +} +@end @interface BookmarkItem : NSObject { diff --git a/camino/src/bookmarks/BookmarkItem.mm b/camino/src/bookmarks/BookmarkItem.mm index cf9fb91a082c..96181987d2df 100644 --- a/camino/src/bookmarks/BookmarkItem.mm +++ b/camino/src/bookmarks/BookmarkItem.mm @@ -87,6 +87,31 @@ NSString* const CaminoBookmarkKey = @"bookmark"; NSString* const CaminoFolderKey = @"folder"; NSString* const CaminoTrueKey = @"true"; +@implementation BookmarkKeywordFormatter + +- (NSString *)stringForObjectValue:(id)anObject +{ + return anObject; +} + +- (BOOL)getObjectValue:(id *)anObject forString:(NSString *)string errorDescription:(NSString **)error +{ + *anObject = string; + return YES; +} + +- (BOOL)isPartialStringValid:(NSString *)partialString newEditingString:(NSString **)newString errorDescription:(NSString **)error +{ + if ([partialString rangeOfCharacterFromSet:[NSCharacterSet whitespaceCharacterSet]].location != NSNotFound) { + *newString = [partialString stringByRemovingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + return NO; + } + return YES; +} + +@end + +#pragma mark - @implementation BookmarkItem diff --git a/camino/src/bookmarks/BookmarkViewController.mm b/camino/src/bookmarks/BookmarkViewController.mm index 1192124e6b50..f2fab872c17f 100644 --- a/camino/src/bookmarks/BookmarkViewController.mm +++ b/camino/src/bookmarks/BookmarkViewController.mm @@ -291,6 +291,10 @@ static const unsigned int TableViewSolidVerticalGridLineMask = 1; [self ensureBookmarks]; + // set a formatter on the keyword column + BookmarkKeywordFormatter* keywordFormatter = [[[BookmarkKeywordFormatter alloc] init] autorelease]; + [[[mBookmarksOutlineView tableColumnWithIdentifier:@"keyword"] dataCell] setFormatter:keywordFormatter]; + // these should be settable in the nib. however, whenever // I try, they disappear as soon as I've saved. Very annoying. [mContainersTableView setAutosaveName:@"BMContainerView"];