Bug 1355323 - Create action menu panel with initial "copy URL" and "email link" items. r?Gijs
MozReview-Commit-ID: LpR63K7riho
--- a/browser/base/content/browser-sets.inc
+++ b/browser/base/content/browser-sets.inc
@@ -23,16 +23,21 @@
<command id="cmd_newNavigatorTab" oncommand="BrowserOpenTab(event);"/>
<command id="cmd_newNavigatorTabNoEvent" oncommand="BrowserOpenTab();"/>
<command id="Browser:OpenFile" oncommand="BrowserOpenFileWindow();"/>
<command id="Browser:SavePage" oncommand="saveBrowser(gBrowser.selectedBrowser);"/>
<command id="Browser:SendLink"
oncommand="MailIntegration.sendLinkForBrowser(gBrowser.selectedBrowser);"/>
+ <command id="PageAction:copyURL"
+ oncommand="gPageActionButton.copyURL();"/>
+ <command id="PageAction:emailLink"
+ oncommand="gPageActionButton.emailLink();"/>
+
<command id="cmd_pageSetup" oncommand="PrintUtils.showPageSetup();"/>
<command id="cmd_print" oncommand="PrintUtils.printWindow(window.gBrowser.selectedBrowser.outerWindowID, window.gBrowser.selectedBrowser);"/>
<command id="cmd_printPreview" oncommand="PrintUtils.printPreview(PrintPreviewListener);"/>
<command id="cmd_close" oncommand="BrowserCloseTabOrWindow()"/>
<command id="cmd_closeWindow" oncommand="BrowserTryToCloseWindow()"/>
<command id="cmd_toggleMute" oncommand="gBrowser.selectedTab.toggleMuteAudio()"/>
<command id="cmd_CustomizeToolbars" oncommand="BrowserCustomizeToolbar()"/>
<command id="cmd_quitApplication" oncommand="goQuitApplication()"/>
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -7842,16 +7842,28 @@ var gPageActionButton = {
(event.type == "keypress" && event.charCode != KeyEvent.DOM_VK_SPACE &&
event.keyCode != KeyEvent.DOM_VK_RETURN)) {
return; // Left click, space or enter only
}
this.panel.hidden = false;
this.panel.openPopup(this.button, "bottomcenter topright");
},
+
+ copyURL() {
+ this.panel.hidePopup();
+ Cc["@mozilla.org/widget/clipboardhelper;1"]
+ .getService(Ci.nsIClipboardHelper)
+ .copyString(gBrowser.selectedBrowser.currentURI.spec);
+ },
+
+ emailLink() {
+ this.panel.hidePopup();
+ MailIntegration.sendLinkForBrowser(gBrowser.selectedBrowser);
+ },
};
function getNotificationBox(aWindow) {
var foundBrowser = gBrowser.getBrowserForDocument(aWindow.document);
if (foundBrowser)
return gBrowser.getNotificationBox(foundBrowser)
return null;
}
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -400,23 +400,39 @@
<button class="ctrlTab-preview" flex="1"/>
</hbox>
<hbox pack="center">
<button id="ctrlTab-showAll" class="ctrlTab-preview" noicon="true"/>
</hbox>
</panel>
<panel id="page-action-panel"
+ class="cui-widget-panel"
role="group"
type="arrow"
hidden="true"
flip="slide"
position="bottomcenter topright"
noautofocus="true">
- This space intentionally left blank.
+ <photonpanelmultiview id="page-action-multiView"
+ mainViewId="page-action-mainView">
+ <panelview id="page-action-mainView"
+ class="PanelUI-subView">
+ <vbox class="panel-subview-body">
+ <toolbarbutton id="page-action-copy-url-button"
+ class="subviewbutton subviewbutton-iconic"
+ label="©URLCmd.label;"
+ command="PageAction:copyURL"/>
+ <toolbarbutton id="page-action-email-link-button"
+ class="subviewbutton subviewbutton-iconic"
+ label="&emailPageCmd.label;"
+ command="PageAction:emailLink"/>
+ </vbox>
+ </panelview>
+ </photonpanelmultiview>
</panel>
<!-- Bookmarks and history tooltip -->
<tooltip id="bhTooltip"/>
<tooltip id="tabbrowser-tab-tooltip" onpopupshowing="gBrowser.createTooltip(event);"/>
<tooltip id="back-button-tooltip">
--- a/browser/locales/en-US/chrome/browser/browser.dtd
+++ b/browser/locales/en-US/chrome/browser/browser.dtd
@@ -525,16 +525,17 @@ These should match what Safari and other
<!ENTITY viewBGImageCmd.accesskey "w">
<!ENTITY setDesktopBackgroundCmd.label "Set As Desktop Background…">
<!ENTITY setDesktopBackgroundCmd.accesskey "S">
<!ENTITY bookmarkPageCmd2.label "Bookmark This Page">
<!ENTITY bookmarkThisLinkCmd.label "Bookmark This Link">
<!ENTITY bookmarkThisLinkCmd.accesskey "L">
<!ENTITY bookmarkThisFrameCmd.label "Bookmark This Frame">
<!ENTITY bookmarkThisFrameCmd.accesskey "m">
+<!ENTITY copyURLCmd.label "Copy URL">
<!ENTITY emailPageCmd.label "Email Link…">
<!ENTITY emailPageCmd.accesskey "E">
<!ENTITY savePageCmd.label "Save Page As…">
<!ENTITY savePageCmd.accesskey "A">
<!-- alternate for content area context menu -->
<!ENTITY savePageCmd.accesskey2 "P">
<!ENTITY savePageCmd.commandkey "s">
<!ENTITY saveFrameCmd.label "Save Frame As…">
--- a/browser/themes/shared/browser.inc.css
+++ b/browser/themes/shared/browser.inc.css
@@ -82,8 +82,20 @@
margin: 0;
padding: 0 6px;
fill: currentColor;
}
#urlbar-page-action-button > .toolbarbutton-icon {
width: 16px;
}
+
+#page-action-copy-url-button {
+ list-style-image: url("chrome://browser/skin/copy-url.svg");
+ -moz-context-properties: fill;
+ fill: currentColor;
+}
+
+#page-action-email-link-button {
+ list-style-image: url("chrome://browser/skin/email-link.svg");
+ -moz-context-properties: fill;
+ fill: currentColor;
+}
new file mode 100644
--- /dev/null
+++ b/browser/themes/shared/icons/copy-url.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
+ <path fill="context-fill" d="M14.707 8.293l-3-3A1 1 0 0 0 11 5h-1V4a1 1 0 0 0-.293-.707l-3-3A1 1 0 0 0 6 0H3a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h3v3a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2V9a1 1 0 0 0-.293-.707zM12.586 9H11V7.414zm-5-5H6V2.414zM6 7v2H3V2h2v2.5a.5.5 0 0 0 .5.5H8a2 2 0 0 0-2 2zm2 7V7h2v2.5a.5.5 0 0 0 .5.5H13v4z"/>
+</svg>
new file mode 100644
--- /dev/null
+++ b/browser/themes/shared/icons/email-link.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
+ <path fill="context-fill" d="M13 2H3a3.013 3.013 0 0 0-3 3v6a3.013 3.013 0 0 0 3 3h10a3.013 3.013 0 0 0 3-3V5a3.013 3.013 0 0 0-3-3zm1 9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1z"/>
+ <path fill="context-fill" d="M8 9a.5.5 0 0 1-.294-.1l-5.5-4a.5.5 0 1 1 .588-.8L8 7.882 13.207 4.1a.5.5 0 0 1 .588.809l-5.5 4A.5.5 0 0 1 8 9z"/>
+</svg>
rename from browser/themes/shared/page-action.svg
rename to browser/themes/shared/icons/page-action.svg
--- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn
@@ -182,17 +182,19 @@
skin/classic/browser/privatebrowsing/private-browsing.svg (../shared/privatebrowsing/private-browsing.svg)
skin/classic/browser/privatebrowsing/tracking-protection-off.svg (../shared/privatebrowsing/tracking-protection-off.svg)
skin/classic/browser/privatebrowsing/tracking-protection.svg (../shared/privatebrowsing/tracking-protection.svg)
skin/classic/browser/compacttheme/loading-inverted.png (../shared/compacttheme/loading-inverted.png)
skin/classic/browser/compacttheme/loading-inverted@2x.png (../shared/compacttheme/loading-inverted@2x.png)
skin/classic/browser/compacttheme/urlbar-history-dropmarker.svg (../shared/compacttheme/urlbar-history-dropmarker.svg)
skin/classic/browser/urlbar-star.svg (../shared/urlbar-star.svg)
skin/classic/browser/urlbar-tab.svg (../shared/urlbar-tab.svg)
- skin/classic/browser/page-action.svg (../shared/page-action.svg)
+ skin/classic/browser/page-action.svg (../shared/icons/page-action.svg)
+ skin/classic/browser/copy-url.svg (../shared/icons/copy-url.svg)
+ skin/classic/browser/email-link.svg (../shared/icons/email-link.svg)
skin/classic/browser/menu-icons/back.svg (../shared/menu-icons/back.svg)
skin/classic/browser/menu-icons/back-small.svg (../shared/menu-icons/back-small.svg)
skin/classic/browser/menu-icons/addons.svg (../shared/menu-icons/addons.svg)
skin/classic/browser/menu-icons/check.svg (../shared/menu-icons/check.svg)
skin/classic/browser/menu-icons/customize.svg (../shared/menu-icons/customize.svg)
skin/classic/browser/menu-icons/library.svg (../shared/menu-icons/library.svg)
skin/classic/browser/menu-icons/new-window.svg (../shared/menu-icons/new-window.svg)
skin/classic/browser/menu-icons/print.svg (../shared/menu-icons/print.svg)