@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); #placesContext .box-inherit.scrollbox-innerbox { -moz-binding: url('data:application/xml,\ \ <?xml version="1.0"?>\%0A\ <bindings xmlns="http://www.mozilla.org/xbl">\%0A\ <binding id="placesContext_extraMenuitem">\%0A\ <implementation>\%0A\ <constructor>\%0A\ <![CDATA[\%0A\ var before = document.getElementById("placesContext_editSeparator");\%0A\ var popup = this.linkedPopup = this.parentNode.parentNode.parentNode;\%0A\ var menuitem = popup.insertBefore(document.createElement("menuitem"), before);\%0A\ menuitem.id = "placesContext_goParentFolder";\%0A\ menuitem.setAttribute("label", decodeURIComponent(\%0A\ "Go Parent Folder"\%0A\ ));\%0A\ function sel(view, id) {\%0A\ var str = "node.type == Ci.nsINavHistoryResultNode.RESULT_TYPE_FOLDER";\%0A\ var src = view.selectItems.toString();\%0A\ var code = src.replace(str + ";", "(" + str + " || " + str + "_SHORTCUT);");\%0A\ view.place = view.place; eval("(" + code + ")").bind(view)([id]);\%0A\ vis(view);\%0A\ }\%0A\ function vis(tree) {\%0A\ var pos = 0.5, tbo = tree.treeBoxObject;\%0A\ var ind = tbo.view.selection.currentIndex;\%0A\ var first = tbo.getFirstVisibleRow();\%0A\ var visibleRows = tbo.height/tbo.rowHeight;\%0A\ var newFirst = ind - pos*visibleRows + 1;\%0A\ tbo.scrollByLines(Math.round(newFirst - first));\%0A\ }\%0A\ menuitem.setAttribute("oncommand", "this.cmd();");\%0A\ menuitem.cmd = function() {\%0A\ var view = popup._view, id = view.selectedNode.itemId;\%0A\ if (view.id == "placeContent") {\%0A\ var plView = document.getElementById("placesList");\%0A\ var parentId = PlacesUtils.bookmarks.getFolderIdForItem(id);\%0A\ sel(plView, parentId);\%0A\ setTimeout(() => {view.selectItems([id]); vis(view);}, 100);\%0A\ } else\%0A\ sel(view, id);\%0A\ }\%0A\ var handler = this.linkedPopupPopupshowihgHandler = function () {\%0A\ var place = (popup._view.selectedNodes.length == 1) && popup._view.selectedNode;\%0A\ menuitem.hidden = menuitem.disabled = !(place && PlacesUtils.nodeIsBookmark(place)\%0A\ && (location.href == "chrome://browser/content/places/places.xul" || location.href == "chrome://browser/content/bookmarks/bookmarksPanel.xul"));\%0A\ };\%0A\ handler(); popup.addEventListener("popupshowing", handler);\%0A\ ]]>\%0A\ </constructor>\%0A\ <destructor>\%0A\ this.linkedPopup.removeEventListener("popupshowing", this.linkedPopupPopupshowihgHandler);\%0A\ </destructor>\%0A\ </implementation>\%0A\ </binding>\%0A\ </bindings>\ \ ') !important; } |