diff --git a/mozilla/suite/browser/navigator.js b/mozilla/suite/browser/navigator.js index f109d0093c6..14d093669a2 100644 --- a/mozilla/suite/browser/navigator.js +++ b/mozilla/suite/browser/navigator.js @@ -1377,7 +1377,9 @@ function applyTheme(themeName) catch(e) { } - var str; + var str = Components.classes["@mozilla.org/supports-wstring;1"] + .createInstance(Components.interfaces.nsISupportsWString); + var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService); if (oldTheme) { var title = gNavigatorBundle.getString("oldthemetitle"); @@ -1391,8 +1393,7 @@ function applyTheme(themeName) chromeRegistry.uninstallSkin( name, true ); // XXX - this sucks and should only be temporary. - str = Components.classes["@mozilla.org/supports-wstring;1"] - .createInstance(Components.interfaces.nsISupportsWString); + str.data = true; pref.setComplexValue("general.skins.removelist." + name, Components.interfaces.nsISupportsWString, str); @@ -1404,10 +1405,19 @@ function applyTheme(themeName) return; } - chromeRegistry.selectSkin(name, true); - chromeRegistry.refreshSkins(); -} + // XXX XXX BAD BAD BAD BAD !! XXX XXX + // we STILL haven't fixed editor skin switch problems + // hacking around it yet again + str.data = themeName.getAttribute("name"); + pref.setComplexValue("general.skins.selectedSkin", Components.interfaces.nsISupportsWString, str); + if (promptService) { + var dialogTitle = gNavigatorBundle.getString("switchskinstitle"); + var brandName = gBrandBundle.getString("brandShortName"); + var msg = gNavigatorBundle.getFormattedString("switchskins", [brandName]); + promptService.alert(window, dialogTitle, msg); + } +} function getNewThemes() { diff --git a/mozilla/suite/browser/navigator.xul b/mozilla/suite/browser/navigator.xul index 690a2124abf..4519ce5bb8b 100644 --- a/mozilla/suite/browser/navigator.xul +++ b/mozilla/suite/browser/navigator.xul @@ -257,7 +257,7 @@ Contributor(s): ______________________________________. --> datasources="rdf:bookmarks rdf:files rdf:localsearch rdf:internetsearch" ref="NC:BookmarksRoot" container="true" flags="dont-test-empty" oncommand="OpenBookmarkURL(event.target,document.getElementById('BookmarksMenu').database)" - ondragover="nsDragAndDrop.dragOver(event, bookmarksButtonObserver);" + ondragover="nsDragAndDrop.dragOver(event, folderObserver);" template="bookmarksMenuTemplate"> validate="never" rdf:type="http://home.netscape.com/NC-rdf#Folder" uri="rdf:*" label="rdf:http://home.netscape.com/NC-rdf#Name" - ondraggesture="if (!event.altKey) { event.preventBubble(); return false; }"> - + ondraggesture="if (!event.altKey) { event.preventBubble(); return false; }" + ondragover="nsDragAndDrop.dragOver(event, folderObserver);"> + @@ -320,9 +324,13 @@ Contributor(s): ______________________________________. --> - + ondraggesture="if (!event.altKey) { event.preventBubble(); return false; }" + ondragover="nsDragAndDrop.dragOver(event, folderObserver);"> + @@ -338,8 +346,12 @@ Contributor(s): ______________________________________. --> - + @@ -353,8 +365,11 @@ Contributor(s): ______________________________________. --> - + @@ -369,7 +384,9 @@ Contributor(s): ______________________________________. --> - + + * - Blake Ross * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or @@ -437,15 +438,15 @@ var searchButtonObserver = { return flavourSet; } }; -var gDidOpen = false; -var bookmarksButtonObserver = { +var gOpenFolder = null; +var folderObserver = { onDragOver: function(aEvent, aFlavour, aDragSession) { + if (aEvent.target.getAttribute("open") == "true") + return false; + aEvent.target.setAttribute("dragover", "true"); - if (!gDidOpen) { - aEvent.target.firstChild.showPopup(document.getElementById("bookmarks-button"), -1, -1, "menupopup", "bottomleft", "bottomleft"); - gDidOpen = true; - } + aEvent.target.firstChild.showPopup(aEvent.target, -1, -1, "menupopup", "bottomleft", "bottomleft"); return true; }, getSupportedFlavours: function () @@ -463,37 +464,33 @@ function closeOpenMenu() { if (gCurrentDragOverMenu && gCurrentTarget.firstChild != gCurrentDragOverMenu) { if (gCurrentTarget.parentNode != gCurrentDragOverMenu) { - gMenuIsOpen = false; gCurrentDragOverMenu.hidePopup(); gCurrentDragOverMenu = null; } } } -var gMenuIsOpen = false; var menuDNDObserver = { onDragOver: function(aEvent, aFlavour, aDragSession) { // if we're a folder just one level deep, open it - var dropPosition = determineDropPosition(aEvent, aEvent.target.parentNode != document.getElementById("bookmarks-button").firstChild); + var isOneLevelDeep = aEvent.target.parentNode.parentNode.getAttribute("open") == "true" && aEvent.target.parentNode.parentNode.localName == "toolbarbutton"; + var dropPosition = determineDropPosition(aEvent, !isOneLevelDeep); gCurrentTarget = aEvent.target; if (aEvent.target.firstChild && aEvent.target.firstChild.localName == "menupopup") { - if (aEvent.target.parentNode == document.getElementById("bookmarks-button").firstChild) { - if (gCurrentDragOverMenu && gCurrentDragOverMenu != aEvent.target.firstChild) { + if (isOneLevelDeep) { + if (gCurrentDragOverMenu && gCurrentDragOverMenu != aEvent.target.firstChild) gCurrentDragOverMenu.hidePopup(); - gCurrentDragOverMenu = null; - gMenuIsOpen = false; - } - if (!gMenuIsOpen) { - gCurrentDragOverMenu = aEvent.target.firstChild; + if (!gCurrentDragOverMenu) { aEvent.target.firstChild.showPopup(aEvent.target, -1, -1, "menupopup", "topright, topright"); - gMenuIsOpen = true; + gCurrentDragOverMenu = aEvent.target.firstChild; } } else { aEvent.target.setAttribute("menuactive", "true"); } - } + } + // remove drag attributes from old item once we move to a new item if (this.mCurrentDragOverItem != aEvent.target) { if (this.mCurrentDragOverItem) { @@ -550,7 +547,6 @@ var menuDNDObserver = { var linkCharset = aDragSession.sourceDocument ? aDragSession.sourceDocument.characterSet : null; // determine title of link var linkTitle; - // look it up in bookmarks var bookmarksDS = RDFUtils.rdf.GetDataSource("rdf:bookmarks"); var nameRes = RDFUtils.getResource(NC_RDF("Name")); @@ -578,7 +574,8 @@ var menuDNDObserver = { dropElementRes = RDFUtils.getResource(dropElement); rdfContainer.Init(childDB, parentContainer); dropIndex = rdfContainer.IndexOf(dropElementRes); - dropPosition = determineDropPosition(aEvent, aEvent.target.parentNode != document.getElementById("bookmarks-button").firstChild); + var isOneLevelDeep = aEvent.target.parentNode.parentNode.getAttribute("open") == "true" && aEvent.target.parentNode.parentNode.localName == "toolbarbutton"; + dropPosition = determineDropPosition(aEvent, !isOneLevelDeep); switch (dropPosition) { case DROP_BEFORE: --dropIndex; @@ -666,10 +663,12 @@ function findParentContainer(aElement) return RDFUtils.getResource(box.getAttribute("ref")); case "menu": case "menuitem": - var menu = aElement.parentNode.parentNode; - if (menu.getAttribute("type") != "http://home.netscape.com/NC-rdf#Folder") + var parentNode = aElement.parentNode.parentNode; + + if (parentNode.getAttribute("type") != NC_RDF("Folder") && + parentNode.getAttributeNS("http://www.w3.org/1999/02/22-rdf-syntax-ns#", "type") != "http://home.netscape.com/NC-rdf#Folder") return RDFUtils.getResource("NC:BookmarksRoot"); - return RDFUtils.getResource(menu.id); + return RDFUtils.getResource(parentNode.id); case "treecell": var treeitem = aElement.parentNode.parentNode.parentNode.parentNode; var res = treeitem.getAttribute("ref"); diff --git a/mozilla/suite/locales/en-US/chrome/browser/navigator.properties b/mozilla/suite/locales/en-US/chrome/browser/navigator.properties index 2a036bc6aa4..c1068126f12 100644 --- a/mozilla/suite/locales/en-US/chrome/browser/navigator.properties +++ b/mozilla/suite/locales/en-US/chrome/browser/navigator.properties @@ -60,3 +60,7 @@ showskinsdescription=true # e.g. "Search Google for abc" # DO NOT change the %S order when translate, the first %S must be the search engine name. searchFor=Search %S for "%S" + +# XXX - this sucks and should only be temporary. +switchskins=Theme changes will take effect when you restart %S. +switchskinstitle=Apply Theme