Bug 342381 - Copying a live bookmark should put the feed url on the clipboard. r=sspitzer.

git-svn-id: svn://10.0.0.236/trunk@219213 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
mozilla.mano%sent.com 2007-01-31 02:40:18 +00:00
parent 1e558de59a
commit eb44fa2328
2 changed files with 42 additions and 16 deletions

View File

@ -1317,8 +1317,14 @@ PlacesController.prototype = {
var node = nodes[i];
var data = new TransferData();
function addData(type) {
data.addDataForFlavour(type, PlacesUtils._wrapString(PlacesUtils.wrapNode(node, type)));
function addData(type, overrideURI) {
data.addDataForFlavour(type, PlacesUtils._wrapString(PlacesUtils.wrapNode(node, type, overrideURI)));
}
function addURIData(overrideURI) {
addData(TYPE_X_MOZ_URL, overrideURI);
addData(TYPE_UNICODE, overrideURI);
addData(TYPE_HTML, overrideURI);
}
if (PlacesUtils.nodeIsFolder(node) || PlacesUtils.nodeIsQuery(node)) {
@ -1327,6 +1333,13 @@ PlacesController.prototype = {
// XXXben: TODO
addData(TYPE_X_MOZ_PLACE_CONTAINER);
// Allow dropping the feed uri of live-bookmark folders
if (PlacesUtils.nodeIsLivemarkContainer(node)) {
var uri = PlacesUtils.livemarks.getSiteURI(asFolder(node).folderId);
addURIData(uri.spec);
}
}
else if (PlacesUtils.nodeIsSeparator(node)) {
addData(TYPE_X_MOZ_PLACE_SEPARATOR);
@ -1335,9 +1348,7 @@ PlacesController.prototype = {
// This order is _important_! It controls how this and other
// applications select data to be inserted based on type.
addData(TYPE_X_MOZ_PLACE);
addData(TYPE_UNICODE);
addData(TYPE_HTML);
addData(TYPE_X_MOZ_URL);
addURIData();
}
dataSet.push(data);
}
@ -1357,21 +1368,31 @@ PlacesController.prototype = {
var pcString = psString = placeString = mozURLString = htmlString = unicodeString = "";
for (var i = 0; i < nodes.length; ++i) {
var node = nodes[i];
function generateChunk(type) {
function generateChunk(type, overrideURI) {
var suffix = i < (nodes.length - 1) ? NEWLINE : "";
return PlacesUtils.wrapNode(node, type) + suffix;
return PlacesUtils.wrapNode(node, type, overrideURI) + suffix;
}
function generateURIChunks(overrideURI) {
mozURLString += generateChunk(TYPE_X_MOZ_URL, overrideURI);
htmlString += generateChunk(TYPE_HTML, overrideURI);
unicodeString += generateChunk(TYPE_UNICODE, overrideURI);
}
if (PlacesUtils.nodeIsFolder(node) || PlacesUtils.nodeIsQuery(node)) {
pcString += generateChunk(TYPE_X_MOZ_PLACE_CONTAINER);
// Also copy the feed URI for live-bookmark folders
if (PlacesUtils.nodeIsLivemarkContainer(node)) {
var uri = PlacesUtils.livemarks.getSiteURI(asFolder(node).folderId);
generateURIChunks(uri.spec);
}
}
else if (PlacesUtils.nodeIsSeparator(node)) {
else if (PlacesUtils.nodeIsSeparator(node))
psString += generateChunk(TYPE_X_MOZ_PLACE_SEPARATOR);
}
else {
placeString += generateChunk(TYPE_X_MOZ_PLACE);
mozURLString += generateChunk(TYPE_X_MOZ_URL);
htmlString += generateChunk(TYPE_HTML);
unicodeString += generateChunk(TYPE_UNICODE);
generateURIChunks();
}
}

View File

@ -345,9 +345,13 @@ var PlacesUtils = {
* The Result node to wrap (serialize)
* @param aType
* The content type to serialize as
* @param [optional] aOverrideURI
* Used instead of the node's URI if provided.
* This is useful for wrapping a container as TYPE_X_MOZ_URL,
* TYPE_HTML or TYPE_UNICODE.
* @returns A string serialization of the node
*/
wrapNode: function PU_wrapNode(aNode, aType) {
wrapNode: function PU_wrapNode(aNode, aType, aOverrideURI) {
switch (aType) {
case TYPE_X_MOZ_PLACE_CONTAINER:
case TYPE_X_MOZ_PLACE:
@ -375,12 +379,13 @@ var PlacesUtils = {
wrapped += this.getIndexOfNode(aNode);
return wrapped;
case TYPE_X_MOZ_URL:
return aNode.uri + NEWLINE + aNode.title;
return (aOverrideURI || aNode.uri) + NEWLINE + aNode.title;
case TYPE_HTML:
return "<A HREF=\"" + aNode.uri + "\">" + aNode.title + "</A>";
return "<A HREF=\"" + (aOverrideURI || aNode.uri) + "\">" +
aNode.title + "</A>";
}
// case TYPE_UNICODE:
return aNode.uri;
return (aOverrideURI || aNode.uri);
},
/**