version 1.17, 2002/03/10 08:14:36
|
version 1.25, 2002/04/18 00:27:51
|
Line 60
|
Line 60
|
{ |
{ |
[super init]; |
[super init]; |
mBookmarks = nsnull; |
mBookmarks = nsnull; |
|
mCachedParent = nsnull; |
|
mCachedHref = nil; |
return self; |
return self; |
} |
} |
|
|
-(void) dealloc |
-(void) dealloc |
{ |
{ |
[super dealloc]; | [super dealloc]; |
} |
} |
|
|
-(void) windowClosing |
-(void) windowClosing |
{ |
{ |
if (mBookmarks) { | if (mBookmarks) { |
mBookmarks->RemoveObserver(); | mBookmarks->RemoveObserver(); |
delete mBookmarks; | delete mBookmarks; |
} | } |
} |
} |
|
|
-(void) ensureBookmarks |
-(void) ensureBookmarks |
Line 91
|
Line 93
|
|
|
-(IBAction)addBookmark:(id)aSender |
-(IBAction)addBookmark:(id)aSender |
{ |
{ |
if (!mBookmarks) | [self addBookmark: aSender useSelection: YES isFolder: NO]; |
return; | } |
| |
nsCOMPtr<nsIContent> content; | -(IBAction)addFolder:(id)aSender |
| { |
| [self addBookmark: aSender useSelection: YES isFolder: YES]; |
| } |
| |
| -(void)addBookmark:(id)aSender useSelection:(BOOL)aUseSel isFolder:(BOOL)aIsFolder |
| { |
| if (!mBookmarks) |
| return; |
| |
| nsCOMPtr<nsIContent> content; |
| if (aUseSel) { |
int index = [mOutlineView selectedRow]; |
int index = [mOutlineView selectedRow]; |
| |
if (index >= 0) { |
if (index >= 0) { |
BookmarkItem* item = [mOutlineView itemAtRow: index]; | BookmarkItem* item = [mOutlineView itemAtRow: index]; |
if ([mOutlineView isExpandable: item]) | if ([mOutlineView isExpandable: item]) |
content = [item contentNode]; | content = [item contentNode]; |
} |
} |
| } |
if (!content) | |
mBookmarks->GetRootContent(getter_AddRefs(content)); | if (!content) |
| mBookmarks->GetRootContent(getter_AddRefs(content)); |
nsCOMPtr<nsIDOMDocument> domDoc(do_QueryInterface(mBookmarks->gBookmarks)); | |
nsCOMPtr<nsIDOMElement> elt; | mCachedParent = content; |
domDoc->CreateElementNS(NS_LITERAL_STRING("http://chimera.mozdev.org/bookmarks"), | |
NS_LITERAL_STRING("bookmark"), | nsCOMPtr<nsIDOMDocument> domDoc(do_QueryInterface(mBookmarks->gBookmarks)); |
getter_AddRefs(elt)); | |
| // Fetch the title of the current page and the URL. |
// Fetch the title of the current page and the URL. | nsAutoString title; |
nsCOMPtr<nsIWebBrowser> webBrowser = getter_AddRefs([[[mBrowserWindowController getMyBrowserView] getBrowserView] getWebBrowser]); | if (!aIsFolder) { |
| nsCOMPtr<nsIWebBrowser> webBrowser = getter_AddRefs([[[mBrowserWindowController getMyBrowserView] |
| getBrowserView] getWebBrowser]); |
nsCOMPtr<nsIDOMWindow> window; |
nsCOMPtr<nsIDOMWindow> window; |
webBrowser->GetContentDOMWindow(getter_AddRefs(window)); |
webBrowser->GetContentDOMWindow(getter_AddRefs(window)); |
nsCOMPtr<nsIDOMDocument> htmlDoc; |
nsCOMPtr<nsIDOMDocument> htmlDoc; |
window->GetDocument(getter_AddRefs(htmlDoc)); |
window->GetDocument(getter_AddRefs(htmlDoc)); |
nsCOMPtr<nsIDocument> pageDoc(do_QueryInterface(htmlDoc)); |
nsCOMPtr<nsIDocument> pageDoc(do_QueryInterface(htmlDoc)); |
| |
nsAutoString href; | nsAutoString href; |
if (pageDoc) { |
if (pageDoc) { |
nsCOMPtr<nsIURI> url; | nsCOMPtr<nsIURI> url; |
pageDoc->GetDocumentURL(getter_AddRefs(url)); | pageDoc->GetDocumentURL(getter_AddRefs(url)); |
nsCAutoString spec; | nsCAutoString spec; |
url->GetSpec(spec); | url->GetSpec(spec); |
href.AssignWithConversion(spec.get()); | href.AssignWithConversion(spec.get()); |
} |
} |
| |
nsAutoString title; | mCachedHref = [NSString stringWithCharacters: href.get() length: nsCRT::strlen(href.get())]; |
| [mCachedHref retain]; |
| |
nsCOMPtr<nsIDOMHTMLDocument> htmlDocument(do_QueryInterface(htmlDoc)); |
nsCOMPtr<nsIDOMHTMLDocument> htmlDocument(do_QueryInterface(htmlDoc)); |
if (htmlDocument) |
if (htmlDocument) |
htmlDocument->GetTitle(title); | htmlDocument->GetTitle(title); |
if (title.IsEmpty()) |
if (title.IsEmpty()) |
title = href; | title = href; |
| } |
elt->SetAttribute(NS_LITERAL_STRING("name"), title); | else { |
elt->SetAttribute(NS_LITERAL_STRING("href"), href); | mCachedHref = nil; |
| title = NS_LITERAL_STRING("New Folder"); |
nsCOMPtr<nsIDOMElement> parent(do_QueryInterface(content)); | } |
nsCOMPtr<nsIDOMNode> dummy; | |
parent->AppendChild(elt, getter_AddRefs(dummy)); | NSTextField* textField = [mBrowserWindowController getAddBookmarkTitle]; |
| [textField setStringValue: [NSString stringWithCharacters: title.get() length: nsCRT::strlen(title.get())]]; |
|
|
mBookmarks->NotifyObservers(content, PR_TRUE); | [mBrowserWindowController cacheBookmarkDS: self]; |
| |
| [NSApp beginSheet: [mBrowserWindowController getAddBookmarkSheetWindow] |
| modalForWindow: [mBrowserWindowController window] |
| modalDelegate: nil //self |
| didEndSelector: nil //@selector(sheetDidEnd:) |
| contextInfo: nil]; |
} |
} |
|
|
-(IBAction)deleteBookmark: (id)aSender | -(void)endAddBookmark: (int)aCode |
{ |
{ |
if (!mBookmarks) | if (aCode == 0) |
return; | return; |
| |
int index = [mOutlineView selectedRow]; | const char* titleC = [[[mBrowserWindowController getAddBookmarkTitle] stringValue] cString]; |
if (index == -1) | nsAutoString title; title.AssignWithConversion(titleC); |
return; | |
| nsAutoString tagName; |
| if (mCachedHref) |
| tagName = NS_LITERAL_STRING("bookmark"); |
| else |
| tagName = NS_LITERAL_STRING("folder"); |
| |
| nsCOMPtr<nsIDOMDocument> domDoc(do_QueryInterface(mBookmarks->gBookmarks)); |
| nsCOMPtr<nsIDOMElement> elt; |
| domDoc->CreateElementNS(NS_LITERAL_STRING("http://chimera.mozdev.org/bookmarks/"), |
| tagName, |
| getter_AddRefs(elt)); |
| |
| elt->SetAttribute(NS_LITERAL_STRING("name"), title); |
| |
| if (mCachedHref) { |
| nsAutoString href; href.AssignWithConversion([mCachedHref cString]); |
| [mCachedHref release]; |
| elt->SetAttribute(NS_LITERAL_STRING("href"), href); |
| } |
| |
| nsCOMPtr<nsIDOMElement> parent(do_QueryInterface(mCachedParent)); |
| nsCOMPtr<nsIDOMNode> dummy; |
| parent->AppendChild(elt, getter_AddRefs(dummy)); |
| |
| nsCOMPtr<nsIContent> childContent(do_QueryInterface(elt)); |
| mBookmarks->BookmarkAdded(mCachedParent, childContent); |
| } |
| |
| -(IBAction)deleteBookmarks: (id)aSender |
| { |
| if (!mBookmarks) |
| return; |
| |
| int index = [mOutlineView selectedRow]; |
| if (index == -1) |
| return; |
| if ([mOutlineView numberOfSelectedRows] == 1) { |
BookmarkItem* item = [mOutlineView itemAtRow: index]; |
BookmarkItem* item = [mOutlineView itemAtRow: index]; |
nsCOMPtr<nsIContent> content = [item contentNode]; | [self deleteBookmark: item]; |
nsCOMPtr<nsIDOMElement> child(do_QueryInterface(content)); | |
nsCOMPtr<nsIDOMNode> parent; | |
child->GetParentNode(getter_AddRefs(parent)); | |
nsCOMPtr<nsIDOMNode> dummy; | |
parent->RemoveChild(child, getter_AddRefs(dummy)); | |
nsCOMPtr<nsIContent> parentContent(do_QueryInterface(parent)); | |
mBookmarks->NotifyObservers(parentContent, PR_TRUE); | |
| |
int total = [mOutlineView numberOfRows]; |
int total = [mOutlineView numberOfRows]; |
if (index == total) |
if (index == total) |
index--; | index--; |
| |
[mOutlineView selectRow: index byExtendingSelection: NO]; |
[mOutlineView selectRow: index byExtendingSelection: NO]; |
|
} |
|
else { |
|
NSMutableArray* itemsToDelete = [[[NSMutableArray alloc] init] autorelease]; |
|
NSEnumerator* selRows = [mOutlineView selectedRowEnumerator]; |
|
for (NSNumber* currIndex = [selRows nextObject]; |
|
currIndex != nil; |
|
currIndex = [selRows nextObject]) { |
|
index = [currIndex intValue]; |
|
BookmarkItem* item = [mOutlineView itemAtRow: index]; |
|
[itemsToDelete addObject: item]; |
|
} |
|
|
|
int count = [itemsToDelete count]; |
|
for (int i = 0; i < count; i++) { |
|
BookmarkItem* item = [itemsToDelete objectAtIndex: i]; |
|
[self deleteBookmark: item]; |
|
} |
|
} |
|
} |
|
|
|
-(void)deleteBookmark:(id)aItem |
|
{ |
|
nsCOMPtr<nsIContent> content = [aItem contentNode]; |
|
nsCOMPtr<nsIDOMElement> child(do_QueryInterface(content)); |
|
if (child == BookmarksService::gToolbarRoot) |
|
return; // Don't allow the personal toolbar to be deleted. |
|
|
|
nsCOMPtr<nsIDOMNode> parent; |
|
child->GetParentNode(getter_AddRefs(parent)); |
|
nsCOMPtr<nsIContent> parentContent(do_QueryInterface(parent)); |
|
nsCOMPtr<nsIDOMNode> dummy; |
|
parent->RemoveChild(child, getter_AddRefs(dummy)); |
|
mBookmarks->BookmarkRemoved(parentContent, content); |
} |
} |
|
|
-(IBAction)openBookmark: (id)aSender |
-(IBAction)openBookmark: (id)aSender |
Line 196
|
Line 280
|
nsCAutoString cstr; cstr.AssignWithConversion(href); |
nsCAutoString cstr; cstr.AssignWithConversion(href); |
NSString* url = [NSString stringWithCString: cstr.get()]; |
NSString* url = [NSString stringWithCString: cstr.get()]; |
[[[mBrowserWindowController getMyBrowserView] getBrowserView] loadURI:[NSURL URLWithString: url] flags:NSLoadFlagsNone]; |
[[[mBrowserWindowController getMyBrowserView] getBrowserView] loadURI:[NSURL URLWithString: url] flags:NSLoadFlagsNone]; |
|
// Focus and activate our content area. |
|
[[[mBrowserWindowController getMyBrowserView] getBrowserView] setActive: YES]; |
} |
} |
} |
} |
} |
} |
Line 362 PRUint32 BookmarksService::gRefCnt = 0;
|
Line 448 PRUint32 BookmarksService::gRefCnt = 0;
|
nsIDocument* BookmarksService::gBookmarks = nsnull; |
nsIDocument* BookmarksService::gBookmarks = nsnull; |
NSMutableDictionary* BookmarksService::gDictionary = nil; |
NSMutableDictionary* BookmarksService::gDictionary = nil; |
MainController* BookmarksService::gMainController = nil; |
MainController* BookmarksService::gMainController = nil; |
|
NSMenu* BookmarksService::gBookmarksMenu = nil; |
|
nsIDOMElement* BookmarksService::gToolbarRoot = nsnull; |
nsIAtom* BookmarksService::gFolderAtom = nsnull; |
nsIAtom* BookmarksService::gFolderAtom = nsnull; |
nsIAtom* BookmarksService::gBookmarkAtom = nsnull; |
nsIAtom* BookmarksService::gBookmarkAtom = nsnull; |
nsIAtom* BookmarksService::gHrefAtom = nsnull; |
nsIAtom* BookmarksService::gHrefAtom = nsnull; |
Line 370 nsVoidArray* BookmarksService::gInstance
|
Line 458 nsVoidArray* BookmarksService::gInstance
|
|
|
BookmarksService::BookmarksService(BookmarksDataSource* aDataSource) |
BookmarksService::BookmarksService(BookmarksDataSource* aDataSource) |
{ |
{ |
mDataSource = aDataSource; | mDataSource = aDataSource; |
| mToolbar = nil; |
| } |
| |
| BookmarksService::BookmarksService(BookmarksToolbar* aToolbar) |
| { |
| mDataSource = nil; |
| mToolbar = aToolbar; |
} |
} |
|
|
BookmarksService::~BookmarksService() |
BookmarksService::~BookmarksService() |
Line 410 BookmarksService::GetWrapperFor(nsIConte
|
Line 505 BookmarksService::GetWrapperFor(nsIConte
|
return item; |
return item; |
} |
} |
|
|
|
NSMenu* |
|
BookmarksService::LocateMenu(nsIContent* aContent) |
|
{ |
|
nsCOMPtr<nsIContent> parent; |
|
aContent->GetParent(*getter_AddRefs(parent)); |
|
if (!parent) { |
|
return BookmarksService::gBookmarksMenu; |
|
} |
|
|
|
NSMenu* parentMenu = LocateMenu(parent); |
|
|
|
PRUint32 contentID; |
|
aContent->GetContentID(&contentID); |
|
|
|
NSMenuItem* childMenu = [parentMenu itemWithTag: contentID]; |
|
return [childMenu submenu]; |
|
} |
|
|
void |
void |
BookmarksService::NotifyObservers(nsIContent* aContainer, PRBool aReloadChildren) | BookmarksService::BookmarkAdded(nsIContent* aContainer, nsIContent* aChild) |
{ |
{ |
if (!gInstances) | if (!gInstances || !gDictionary) |
return; | return; |
| |
PRInt32 count = gInstances->Count(); | PRInt32 count = gInstances->Count(); |
for (PRInt32 i = 0; i < count; i++) { | for (PRInt32 i = 0; i < count; i++) { |
BookmarksService* instance = (BookmarksService*)gInstances->ElementAt(i); | BookmarksService* instance = (BookmarksService*)gInstances->ElementAt(i); |
instance->NotifyObserver(aContainer, aReloadChildren); | |
| if (instance->mDataSource) { |
| // We're a tree view. |
| nsCOMPtr<nsIContent> parent; |
| aContainer->GetParent(*getter_AddRefs(parent)); |
| |
| BookmarkItem* item = nil; |
| if (parent) |
| // We're not the root. |
| item = GetWrapperFor(aContainer); |
| |
| [(instance->mDataSource) reloadDataForItem: item reloadChildren: YES]; |
} |
} |
| else if (instance->mToolbar) { |
FlushBookmarks(); | // We're a personal toolbar. |
| nsCOMPtr<nsIDOMElement> parentElt(do_QueryInterface(aContainer)); |
| if (parentElt == gToolbarRoot) { |
| // We only care about changes that occur to the personal toolbar's immediate |
| // children. |
| PRInt32 index = -1; |
| aContainer->IndexOf(aChild, index); |
| nsCOMPtr<nsIDOMElement> elt(do_QueryInterface(aChild)); |
| [(instance->mToolbar) addButton: elt atIndex: index]; |
| } |
| } |
| else { |
| // We're the menu. |
| PRInt32 index = -1; |
| aContainer->IndexOf(aChild, index); |
| NSMenu* menu = LocateMenu(aContainer); |
| AddMenuBookmark(menu, aContainer, aChild, index); |
| } |
| } |
| |
| FlushBookmarks(); |
} |
} |
|
|
|
|
void |
void |
BookmarksService::NotifyObserver(nsIContent* aContainer, PRBool aReloadChildren) | BookmarksService::BookmarkChanged(nsIContent* aItem) |
{ |
{ |
if (!gDictionary) | if (!gInstances || !gDictionary) |
return; | return; |
| |
| PRInt32 count = gInstances->Count(); |
| for (PRInt32 i = 0; i < count; i++) { |
| BookmarksService* instance = (BookmarksService*)gInstances->ElementAt(i); |
|
|
nsCOMPtr<nsIContent> parent; | if (instance->mDataSource) { |
aContainer->GetParent(*getter_AddRefs(parent)); | BookmarkItem* item = GetWrapperFor(aItem); |
| [(instance->mDataSource) reloadDataForItem: item reloadChildren: NO]; |
BookmarkItem* item = nil; | } |
if (parent) | } |
| |
| FlushBookmarks(); |
| } |
| |
| void |
| BookmarksService::BookmarkRemoved(nsIContent* aContainer, nsIContent* aChild) |
| { |
| if (!gInstances) |
| return; |
| |
| PRInt32 count = gInstances->Count(); |
| for (PRInt32 i = 0; i < count; i++) { |
| BookmarksService* instance = (BookmarksService*)gInstances->ElementAt(i); |
| |
| if (instance->mDataSource) { |
| // We're a tree view. |
| nsCOMPtr<nsIContent> parent; |
| aContainer->GetParent(*getter_AddRefs(parent)); |
| |
| BookmarkItem* item = nil; |
| if (parent) |
// We're not the root. |
// We're not the root. |
item = GetWrapperFor(aContainer); |
item = GetWrapperFor(aContainer); |
| |
[mDataSource reloadDataForItem: item reloadChildren: aReloadChildren]; | [(instance->mDataSource) reloadDataForItem: item reloadChildren: YES]; |
| } |
| else if (instance->mToolbar) { |
| // We're a personal toolbar. |
| nsCOMPtr<nsIDOMElement> parentElt(do_QueryInterface(aContainer)); |
| if (parentElt == gToolbarRoot) { |
| // We only care about changes that occur to the personal toolbar's immediate |
| // children. |
| nsCOMPtr<nsIDOMElement> childElt(do_QueryInterface(aChild)); |
| [(instance->mToolbar) removeButton: childElt]; |
| } |
| } |
| else { |
| // We're the menu. |
| NSMenu* menu = LocateMenu(aContainer); |
| PRUint32 contentID; |
| aChild->GetContentID(&contentID); |
| NSMenuItem* childItem = [menu itemWithTag: contentID]; |
| [menu removeItem: childItem]; |
| } |
| } |
| |
| FlushBookmarks(); |
} |
} |
|
|
void |
void |
Line 510 BookmarksService::FlushBookmarks()
|
Line 700 BookmarksService::FlushBookmarks()
|
domSerializer->SerializeToStream(domDoc, outputStream, nsnull); |
domSerializer->SerializeToStream(domDoc, outputStream, nsnull); |
} |
} |
|
|
|
void BookmarksService::EnsureToolbarRoot() |
|
{ |
|
if (gToolbarRoot) |
|
return; |
|
|
|
nsCOMPtr<nsIDOMDocument> domDoc(do_QueryInterface(gBookmarks)); |
|
nsCOMPtr<nsIDOMElement> rootElt; |
|
domDoc->GetDocumentElement(getter_AddRefs(rootElt)); |
|
|
|
nsCOMPtr<nsIDOMNode> child; |
|
rootElt->GetFirstChild(getter_AddRefs(child)); |
|
nsAutoString typeValue; |
|
while (child) { |
|
nsCOMPtr<nsIDOMElement> childElt(do_QueryInterface(child)); |
|
if (childElt) { |
|
childElt->GetAttribute(NS_LITERAL_STRING("type"), typeValue); |
|
if (typeValue.Equals(NS_LITERAL_STRING("toolbar"))) |
|
gToolbarRoot = childElt; |
|
} |
|
|
|
nsCOMPtr<nsIDOMNode> temp; |
|
child->GetNextSibling(getter_AddRefs(temp)); |
|
child = temp; |
|
} |
|
|
|
if (!gToolbarRoot) { |
|
printf("Repairing personal toolbar.\n"); |
|
nsCOMPtr<nsIDOMElement> elt; |
|
domDoc->CreateElementNS(NS_LITERAL_STRING("http://chimera.mozdev.org/bookmarks/"), |
|
NS_LITERAL_STRING("folder"), |
|
getter_AddRefs(elt)); |
|
|
|
elt->SetAttribute(NS_LITERAL_STRING("name"), NS_LITERAL_STRING("Toolbar Bookmarks")); |
|
elt->SetAttribute(NS_LITERAL_STRING("type"), NS_LITERAL_STRING("toolbar")); |
|
|
|
nsCOMPtr<nsIDOMNode> dummy; |
|
rootElt->AppendChild(elt, getter_AddRefs(dummy)); |
|
gToolbarRoot = elt; |
|
} |
|
} |
|
|
void |
void |
BookmarksService::ConstructBookmarksMenu(NSMenu* aMenu, nsIContent* aContent) |
BookmarksService::ConstructBookmarksMenu(NSMenu* aMenu, nsIContent* aContent) |
{ |
{ |
Line 517 BookmarksService::ConstructBookmarksMenu
|
Line 748 BookmarksService::ConstructBookmarksMenu
|
if (!content) { |
if (!content) { |
GetRootContent(getter_AddRefs(content)); |
GetRootContent(getter_AddRefs(content)); |
GetWrapperFor(content); |
GetWrapperFor(content); |
|
gBookmarksMenu = aMenu; |
} |
} |
|
|
// Now walk our children, and for folders also recur into them. |
// Now walk our children, and for folders also recur into them. |
Line 524 BookmarksService::ConstructBookmarksMenu
|
Line 756 BookmarksService::ConstructBookmarksMenu
|
content->ChildCount(childCount); |
content->ChildCount(childCount); |
|
|
for (PRInt32 i = 0; i < childCount; i++) { |
for (PRInt32 i = 0; i < childCount; i++) { |
nsCOMPtr<nsIContent> child; | nsCOMPtr<nsIContent> child; |
content->ChildAt(i, *getter_AddRefs(child)); | content->ChildAt(i, *getter_AddRefs(child)); |
| AddMenuBookmark(aMenu, content, child, -1); |
// Obtain our name attribute. | |
nsAutoString name; | |
child->GetAttr(kNameSpaceID_None, gNameAtom, name); | |
nsCAutoString nameCStr; nameCStr.AssignWithConversion(name); | |
NSString* title = [NSString stringWithCString: nameCStr.get()]; | |
| |
// Create a menu or menu item for the child. | |
NSMenuItem* menuItem = [[[NSMenuItem alloc] initWithTitle: title action: NULL keyEquivalent: @""] autorelease]; | |
GetWrapperFor(child); | |
[aMenu addItem: menuItem]; | |
| |
nsCOMPtr<nsIAtom> tag; | |
child->GetTag(*getter_AddRefs(tag)); | |
| |
if (tag == gFolderAtom) { | |
NSMenu* menu = [[[NSMenu alloc] initWithTitle: title] autorelease]; | |
[aMenu setSubmenu: menu forItem: menuItem]; | |
[menu setAutoenablesItems: NO]; | |
ConstructBookmarksMenu(menu, child); | |
} | |
else { | |
[menuItem setTarget: gMainController]; | |
[menuItem setAction: @selector(openMenuBookmark:)]; | |
} | |
| |
PRUint32 contentID; | |
child->GetContentID(&contentID); | |
[menuItem setTag: contentID]; | |
} |
} |
} |
} |
|
|
|
void |
|
BookmarksService::AddMenuBookmark(NSMenu* aMenu, nsIContent* aParent, nsIContent* aChild, PRInt32 aIndex) |
|
{ |
|
nsAutoString name; |
|
aChild->GetAttr(kNameSpaceID_None, gNameAtom, name); |
|
nsCAutoString nameCStr; nameCStr.AssignWithConversion(name); |
|
NSString* title = [NSString stringWithCString: nameCStr.get()]; |
|
|
|
// Create a menu or menu item for the child. |
|
NSMenuItem* menuItem = [[[NSMenuItem alloc] initWithTitle: title action: NULL keyEquivalent: @""] autorelease]; |
|
GetWrapperFor(aChild); |
|
|
|
if (aIndex == -1) |
|
[aMenu addItem: menuItem]; |
|
else |
|
[aMenu insertItem: menuItem atIndex: aIndex]; |
|
|
|
nsCOMPtr<nsIAtom> tagName; |
|
aChild->GetTag(*getter_AddRefs(tagName)); |
|
|
|
if (tagName == gFolderAtom) { |
|
NSMenu* menu = [[[NSMenu alloc] initWithTitle: title] autorelease]; |
|
[aMenu setSubmenu: menu forItem: menuItem]; |
|
[menu setAutoenablesItems: NO]; |
|
ConstructBookmarksMenu(menu, aChild); |
|
} |
|
else { |
|
[menuItem setTarget: gMainController]; |
|
[menuItem setAction: @selector(openMenuBookmark:)]; |
|
} |
|
|
|
PRUint32 contentID; |
|
aChild->GetContentID(&contentID); |
|
[menuItem setTag: contentID]; |
|
} |
|
|
void |
void |
BookmarksService::OpenMenuBookmark(BrowserWindowController* aController, id aMenuItem) |
BookmarksService::OpenMenuBookmark(BrowserWindowController* aController, id aMenuItem) |
{ |
{ |
Line 578 BookmarksService::OpenMenuBookmark(Brows
|
Line 818 BookmarksService::OpenMenuBookmark(Brows
|
|
|
// Now load the URL in the window. |
// Now load the URL in the window. |
[aController loadURL:[NSURL URLWithString: url]]; |
[aController loadURL:[NSURL URLWithString: url]]; |
|
|
|
// Focus and activate our content area. |
|
[[[aController getMyBrowserView] getBrowserView] setActive: YES]; |
} |
} |
|
|