78882 - Dragging a bookmark into the personal toolbar causes all items to be deleted, r=ben, sr=alecf

git-svn-id: svn://10.0.0.236/trunk@235741 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
hewitt%netscape.com
2007-09-12 17:49:06 +00:00
parent b8a14782ae
commit 09cd6f5ba9
2 changed files with 24 additions and 5 deletions

View File

@@ -45,6 +45,9 @@ interface nsIBookmarksService : nsISupports
void AddBookmarkToFolder(in string aURI, in nsIRDFResource aFolder,
in wstring aTitle, in wstring docCharSet);
void insertBookmarkInFolder(in string aURI, in wstring aTitle, in wstring docCharSet,
in nsIRDFResource aFolder, in long aIndex);
void UpdateBookmarkLastVisitedDate(in string aURL, in wstring docCharset);
string FindShortcut(in wstring aName);

View File

@@ -396,7 +396,8 @@ public:
const char* aShortcutURL,
nsIRDFResource* aNodeType,
nsIRDFResource** bookmarkNode,
const PRUnichar* aCharset);
const PRUnichar* aCharset,
PRInt32 aIndex);
nsresult SetIEFavoritesRoot(const char *IEFavoritesRootURL)
{
@@ -1366,7 +1367,8 @@ BookmarkParser::AddBookmark(nsCOMPtr<nsIRDFContainer> aContainer,
const char* aShortcutURL,
nsIRDFResource* aNodeType,
nsIRDFResource** bookmarkNode,
const PRUnichar* aCharset)
const PRUnichar* aCharset,
PRInt32 aIndex)
{
nsresult rv;
nsAutoString fullURL;
@@ -1464,7 +1466,10 @@ BookmarkParser::AddBookmark(nsCOMPtr<nsIRDFContainer> aContainer,
}
// The last thing we do is add the bookmark to the container. This ensures the minimal amount of reflow.
rv = aContainer->AppendElement(bookmark);
if (aIndex < 0)
rv = aContainer->AppendElement(bookmark);
else
rv = aContainer->InsertElementAt(bookmark, aIndex, PR_TRUE);
NS_ASSERTION(NS_SUCCEEDED(rv), "unable to add bookmark to container");
return(rv);
}
@@ -2481,6 +2486,17 @@ nsBookmarksService::AddBookmarkToFolder(const char *aURI,
nsIRDFResource *aFolder,
const PRUnichar* aTitle,
const PRUnichar *aCharset)
{
return InsertBookmarkInFolder(aURI, aTitle, aCharset, aFolder, -1);
}
NS_IMETHODIMP
nsBookmarksService::InsertBookmarkInFolder(const char *aURI,
const PRUnichar* aTitle,
const PRUnichar *aCharset,
nsIRDFResource *aFolder,
PRInt32 aIndex)
{
// XXX Constructing a parser object to do this is bad.
// We need to factor AddBookmark() into its own little
@@ -2510,7 +2526,7 @@ nsBookmarksService::AddBookmarkToFolder(const char *aURI,
LL_L2I(now32, now64);
rv = parser.AddBookmark(container, aURI, aTitle, now32,
0L, 0L, nsnull, kNC_Bookmark, nsnull, aCharset);
0L, 0L, nsnull, kNC_Bookmark, nsnull, aCharset, aIndex);
if (NS_FAILED(rv)) return rv;
@@ -4345,7 +4361,7 @@ nsBookmarksService::WriteBookmarksContainer(nsIRDFDataSource *ds, nsOutputFileSt
}
}
}
strm << indentation;
strm << " ";
if (isContainer == PR_TRUE)