Fix bug 319921: remove New Folder, and enable Copy Location for bookmark toolbar context clicks. Also land part of the code for bug 319491 (Reset Camino should clear visit counts), without yet hooking it up.

This commit is contained in:
smfr%smfr.org 2005-12-12 03:35:58 +00:00
Родитель fea1a69353
Коммит 6acc176c50
9 изменённых файлов: 79 добавлений и 58 удалений

Просмотреть файл

@ -180,17 +180,23 @@ NSString* const URLLoadSuccessKey = @"url_bool";
- (void) setLastVisit:(NSDate *)aDate
{
if (aDate) {
if (aDate && ![mLastVisit isEqual:aDate])
{
[aDate retain];
[mLastVisit release];
mLastVisit = aDate;
[self itemUpdatedNote:kBookmarkItemLastVisitChangedMask];
}
}
-(void) setNumberOfVisits:(unsigned)aNumber
{
mNumberOfVisits = aNumber;
[self itemUpdatedNote:kBookmarkItemLastVisitChangedMask];
if (mNumberOfVisits != aNumber)
{
mNumberOfVisits = aNumber;
[self itemUpdatedNote:kBookmarkItemNumVisitsChangedMask];
}
}
-(void) setIsSeparator:(BOOL)aBool

Просмотреть файл

@ -43,8 +43,8 @@
@interface BookmarkButton : NSButton
{
BookmarkItem* mItem;
BOOL lastEventWasMenu;
BookmarkItem* mItem;
BOOL mLastEventWasMenu;
}
-(id)initWithFrame:(NSRect)frame item:(BookmarkItem*)item;

Просмотреть файл

@ -75,7 +75,8 @@
[self setImagePosition: NSImageLeft];
[self setRefusesFirstResponder: YES];
[self setFont: [NSFont labelFontOfSize: 11.0]];
lastEventWasMenu = NO;
mLastEventWasMenu = NO;
}
return self;
}
@ -184,6 +185,11 @@
[[NSApp delegate] loadBookmark:item withWindowController:brController openBehavior:eBookmarkOpenBehaviorNewWindowDefault];
}
- (IBAction)copyURLs:(id)aSender
{
[[BookmarkManager sharedBookmarkManager] copyBookmarksURLs:[NSArray arrayWithObject:[self bookmarkItem]] toPasteboard:[NSPasteboard generalPasteboard]];
}
-(IBAction)showBookmarkInfo:(id)aSender
{
BookmarkInfoController *bic = [BookmarkInfoController sharedBookmarkInfoController];
@ -204,17 +210,17 @@
BookmarkManager* bmManager = [BookmarkManager sharedBookmarkManager];
BookmarkFolder* toolbarFolder = [bmManager toolbarFolder];
BookmarkFolder* aFolder = [toolbarFolder addBookmarkFolder];
[aFolder setTitle:NSLocalizedString(@"NewBookmarkFolder",@"New Folder")];
[aFolder setTitle:NSLocalizedString(@"NewBookmarkFolder", @"New Folder")];
}
-(void)drawRect:(NSRect)aRect
{
[super drawRect: aRect];
[super drawRect:aRect];
}
-(NSMenu*)menuForEvent:(NSEvent*)aEvent
{
lastEventWasMenu = YES;
mLastEventWasMenu = YES;
NSArray* theItemArray = [NSArray arrayWithObject:[self bookmarkItem]];
return [[BookmarkManager sharedBookmarkManager] contextMenuForItems:theItemArray fromView:nil target:self];
}
@ -257,13 +263,13 @@
NSPopUpButtonCell *popupCell = [[NSPopUpButtonCell alloc] initTextCell:@"" pullsDown:YES];
[popupCell setMenu: bmMenu];
[popupCell trackMouse:event inRect:[self bounds] ofView:self untilMouseUp:YES];
lastEventWasMenu = YES;
mLastEventWasMenu = YES;
[popupCell release];
}
-(void)mouseDown:(NSEvent*)aEvent
{
lastEventWasMenu = NO;
mLastEventWasMenu = NO;
[super mouseDown:aEvent];
if ([[self cell] lastClickHoldTimedOut])
[self showFolderPopup:aEvent];
@ -281,8 +287,9 @@
{
// hack to prevent a drag while viewing a popup or context menu from moving the folder unexpectedly
// (unless the drag happens on the folder itself)
if (lastEventWasMenu && ([self hitTest:[[self superview] convertPoint:[aEvent locationInWindow] fromView:nil]] == nil))
if (mLastEventWasMenu && ([self hitTest:[[self superview] convertPoint:[aEvent locationInWindow] fromView:nil]] == nil))
return;
BookmarkItem *item = [self bookmarkItem];
BOOL isSingleBookmark = [item isKindOfClass:[Bookmark class]];
NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard];

Просмотреть файл

@ -115,12 +115,18 @@ extern NSString* const kBookmarksMenuFolderIdentifier;
-(NSUndoManager *) undoManager;
-(void) setRootBookmarks:(BookmarkFolder *)anArray;
// clear visit count on all bookmarks
-(void)clearAllVisits;
// Informational things
-(NSArray *)resolveBookmarksKeyword:(NSString *)keyword;
-(NSArray *)searchBookmarksContainer:(BookmarkFolder*)container forString:(NSString *)searchString inFieldWithTag:(int)tag;
-(BOOL) isDropValid:(NSArray *)items toFolder:(BookmarkFolder *)parent;
-(NSMenu *)contextMenuForItems:(NSArray*)items fromView:(BookmarkOutlineView *)outlineView target:(id)target;
// Utilities
- (void)copyBookmarksURLs:(NSArray*)bookmarkItems toPasteboard:(NSPasteboard*)aPasteboard;
// Importing bookmarks
- (void)startImportBookmarks;
- (BOOL)importBookmarks:(NSString *)pathToFile intoFolder:(BookmarkFolder *)aFolder;

Просмотреть файл

@ -48,6 +48,7 @@
#import "NSThread+Utils.h"
#import "NSFileManager+Utils.h"
#import "NSWorkspace+Utils.h"
#import "NSPasteboard+Utils.h"
#import "PreferenceManager.h"
#import "BookmarkManager.h"
@ -566,6 +567,25 @@ static BookmarkManager* gBookmarkManager = nil;
}
}
//
// -clearAllVisits:
//
// resets all bookmarks visit counts to zero as part of Reset Camino
//
-(void)clearAllVisits
{
// XXX this will fire a lot of changed notifications.
NSEnumerator* bookmarksEnum = [[self rootBookmarks] objectEnumerator];
BookmarkItem* curItem;
while (curItem = [bookmarksEnum nextObject])
{
if ([curItem isKindOfClass:[Bookmark class]])
[(Bookmark*)curItem setNumberOfVisits:0];
}
}
-(NSArray *)resolveBookmarksKeyword:(NSString *)keyword
{
NSArray *resolvedArray = nil;
@ -708,11 +728,8 @@ static BookmarkManager* gBookmarkManager = nil;
}
BOOL allowNewFolder = NO;
if ([target isKindOfClass:[BookmarkViewController class]]) {
if (![[target activeCollection] isSmartFolder])
allowNewFolder = YES;
} else
allowNewFolder = YES;
if ([target isKindOfClass:[BookmarkViewController class]])
allowNewFolder = ![[target activeCollection] isSmartFolder];
if (allowNewFolder) {
// space
@ -740,6 +757,28 @@ static BookmarkManager* gBookmarkManager = nil;
return contextMenu;
}
//
// Copy a set of bookmarks URLs to the specified pasteboard.
// We don't care about item titles here, nor do we care about format.
//
- (void)copyBookmarksURLs:(NSArray*)bookmarkItems toPasteboard:(NSPasteboard*)aPasteboard
{
// handle URLs, and nothing else, for simplicity.
[aPasteboard declareTypes:[NSArray arrayWithObject:kCorePasteboardFlavorType_url] owner:nil];
NSMutableArray* urlList = [NSMutableArray array];
NSEnumerator* bookmarkItemsEnum = [bookmarkItems objectEnumerator];
BookmarkItem* curItem;
while (curItem = [bookmarkItemsEnum nextObject])
{
if ([curItem isKindOfClass:[Bookmark class]])
[urlList addObject:[(Bookmark*)curItem url]];
}
[aPasteboard setURLs:urlList withTitles:nil];
}
#pragma mark -
//
@ -1756,22 +1795,4 @@ static BookmarkManager* gBookmarkManager = nil;
return NO;
}
//
// -clearAllVisits:
//
// resets all bookmarks visit counts to zero as part of Reset Camino
//
-(void)clearAllVisits
{
NSEnumerator* bookmarksEnum = [[self rootBookmarks] objectEnumerator];
BookmarkItem* curItem;
while (curItem = [bookmarksEnum nextObject])
{
if ([curItem isKindOfClass:[Bookmark class]]) {
[(Bookmark*)curItem setNumberOfVisits:0];
}
}
}
@end

Просмотреть файл

@ -743,6 +743,7 @@ static void VerticalGrayGradient(void* inInfo, float const* inData, float* outDa
- (void)bookmarkChanged:(NSNotification *)aNote
{
// XXX look at change flags
[self updateButton:[aNote object]];
}

Просмотреть файл

@ -178,6 +178,5 @@
-(BOOL) canPasteFromPasteboard:(NSPasteboard*)aPasteboard;
-(void) copyBookmarks:(NSArray*)bookmarkItemsToCopy toPasteboard:(NSPasteboard*)aPasteboard;
-(void) copyBookmarksURLs:(NSArray*)bookmarkItemsToCopy toPasteboard:(NSPasteboard*)aPasteboard;
@end

Просмотреть файл

@ -685,7 +685,7 @@ static const int kDisabledQuicksearchPopupItemTag = 9999;
- (IBAction)copyURLs:(id)aSender
{
[self copyBookmarksURLs:[mBookmarksOutlineView selectedItems] toPasteboard:[NSPasteboard generalPasteboard]];
[[BookmarkManager sharedBookmarkManager] copyBookmarksURLs:[mBookmarksOutlineView selectedItems] toPasteboard:[NSPasteboard generalPasteboard]];
}
-(IBAction)quicksearchPopupChanged:(id)aSender
@ -1082,27 +1082,6 @@ static const int kDisabledQuicksearchPopupItemTag = 9999;
[aPasteboard setURLs:urlList withTitles:titleList];
}
//
// Copy a set of bookmarks URLs to the specified pasteboard.
// We don't care about item titles here, nor do we care about format.
//
- (void) copyBookmarksURLs:(NSArray*)bookmarkItemsToCopy toPasteboard:(NSPasteboard*)aPasteboard
{
// handle URLs, and nothing else, for simplicity.
[aPasteboard declareTypes:[NSArray arrayWithObject:kCorePasteboardFlavorType_url] owner:self];
NSMutableArray* urlList = [NSMutableArray array];
NSEnumerator* bookmarkItemsEnum = [bookmarkItemsToCopy objectEnumerator];
BookmarkItem* curItem;
while (curItem = [bookmarkItemsEnum nextObject])
{
if ([curItem isKindOfClass:[Bookmark class]]) {
[urlList addObject:[(Bookmark*)curItem url]];
}
}
[aPasteboard setURLs:urlList withTitles:nil];
}
-(BOOL) canPasteFromPasteboard:(NSPasteboard*)aPasteboard
{
return [[aPasteboard types] containsObject:kCaminoBookmarkListPBoardType]
@ -1874,6 +1853,7 @@ static const int kDisabledQuicksearchPopupItemTag = 9999;
- (void)bookmarkChanged:(NSNotification *)note
{
// XXX look at change flags
[self reloadDataForItem:[note object] reloadChildren:NO];
}

Просмотреть файл

@ -281,6 +281,7 @@ static int SortByProtocolAndName(NSDictionary* item1, NSDictionary* item2, void
- (void)bookmarkChanged:(NSNotification *)note
{
// XXX look at change flags
BookmarkItem *anItem = [note object];
if ([anItem isKindOfClass:[Bookmark class]]) {
[self checkForNewTop10:anItem];