Bug 867343 - Back out star button UI changes. r=mak.
authorMike Conley <mconley@mozilla.com>
Fri, 10 May 2013 11:19:48 -0400
changeset 142546 bed2e2a10c13b8506b9300bb32ec1cf30f7b1dc1
parent 142545 ed0e9d2f23a031334927747c1e44bdbade56ff4c
child 142547 0d90de935ba3db467adfe681a2d5c638fc055708
push id2579
push userakeybl@mozilla.com
push dateMon, 24 Jun 2013 18:52:47 +0000
treeherdermozilla-beta@b69b7de8a05a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmak
bugs867343
milestone23.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 867343 - Back out star button UI changes. r=mak.
browser/base/content/browser-places.js
browser/base/content/browser.css
browser/base/content/browser.js
browser/base/content/browser.xul
browser/base/content/test/browser_bug432599.js
browser/base/content/test/browser_bug581253.js
browser/base/content/test/browser_bug624734.js
browser/components/nsBrowserGlue.js
browser/themes/linux/browser.css
browser/themes/linux/jar.mn
browser/themes/linux/places/pageStarred.png
browser/themes/linux/places/starPage.png
browser/themes/osx/browser.css
browser/themes/windows/browser.css
browser/themes/windows/jar.mn
browser/themes/windows/places/editBookmark.png
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -307,18 +307,18 @@ var PlacesCommandHook = {
     // If it was not requested to open directly in "edit" mode, we are done.
     if (!aShowEditUI)
       return;
 
     // Try to dock the panel to:
     // 1. the bookmarks menu button
     // 2. the page-proxy-favicon
     // 3. the content area
-    if (BookmarksMenuButton.anchor) {
-      StarUI.showEditBookmarkPopup(itemId, BookmarksMenuButton.anchor,
+    if (BookmarkingUI.anchor) {
+      StarUI.showEditBookmarkPopup(itemId, BookmarkingUI.anchor,
                                    "bottomcenter topright");
       return;
     }
 
     let pageProxyFavicon = document.getElementById("page-proxy-favicon");
     if (isElementVisible(pageProxyFavicon)) {
       StarUI.showEditBookmarkPopup(itemId, pageProxyFavicon,
                                    "bottomcenter topright");
@@ -986,57 +986,55 @@ let PlacesToolbarHelper = {
 
   customizeDone: function PTH_customizeDone() {
     this._isCustomizing = false;
     this.init();
   }
 };
 
 ////////////////////////////////////////////////////////////////////////////////
-//// BookmarksMenuButton
+//// BookmarkingUI
 
 /**
- * Handles the bookmarks menu-button in the toolbar.
+ * Handles the bookmarks star button in the URL bar, as well as the bookmark
+ * menu button.
  */
-let BookmarksMenuButton = {
+
+let BookmarkingUI = {
   get button() {
     if (!this._button) {
       this._button = document.getElementById("bookmarks-menu-button");
     }
     return this._button;
   },
 
   get star() {
-    if (!this._star && this.button) {
-      this._star = document.getAnonymousElementByAttribute(this.button,
-                                                           "anonid",
-                                                           "button");
+    if (!this._star) {
+      this._star = document.getElementById("star-button");
     }
     return this._star;
   },
 
   get anchor() {
-    if (!this._anchor && this.star && isElementVisible(this.star)) {
+    if (this.star && isElementVisible(this.star)) {
       // Anchor to the icon, so the panel looks more natural.
-      this._anchor = document.getAnonymousElementByAttribute(this.star,
-                                                             "class",
-                                                             "toolbarbutton-icon");
+      return this.star;
     }
-    return this._anchor;
+    return null;
   },
 
   STATUS_UPDATING: -1,
   STATUS_UNSTARRED: 0,
   STATUS_STARRED: 1,
   get status() {
     if (this._pendingStmt)
       return this.STATUS_UPDATING;
-    return this.button &&
-           this.button.hasAttribute("starred") ? this.STATUS_STARRED
-                                               : this.STATUS_UNSTARRED;
+    return this.star &&
+           this.star.hasAttribute("starred") ? this.STATUS_STARRED
+                                             : this.STATUS_UNSTARRED;
   },
 
   get _starredTooltip()
   {
     delete this._starredTooltip;
     return this._starredTooltip =
       gNavigatorBundle.getString("starButtonOn.tooltip");
   },
@@ -1050,21 +1048,21 @@ let BookmarksMenuButton = {
 
   /**
    * The popup contents must be updated when the user customizes the UI, or
    * changes the personal toolbar collapsed status.  In such a case, any needed
    * change should be handled in the popupshowing helper, for performance
    * reasons.
    */
   _popupNeedsUpdate: true,
-  onToolbarVisibilityChange: function BMB_onToolbarVisibilityChange() {
+  onToolbarVisibilityChange: function BUI_onToolbarVisibilityChange() {
     this._popupNeedsUpdate = true;
   },
 
-  onPopupShowing: function BMB_onPopupShowing(event) {
+  onPopupShowing: function BUI_onPopupShowing(event) {
     // Don't handle events for submenus.
     if (event.target != event.currentTarget)
       return;
 
     if (!this._popupNeedsUpdate)
       return;
     this._popupNeedsUpdate = false;
 
@@ -1088,91 +1086,84 @@ let BookmarksMenuButton = {
       toolbarMenuitem.collapsed = toolbarMenuitem.nextSibling.collapsed =
         isElementVisible(document.getElementById("personal-bookmarks"));
     }
   },
 
   /**
    * Handles star styling based on page proxy state changes.
    */
-  onPageProxyStateChanged: function BMB_onPageProxyStateChanged(aState) {
+  onPageProxyStateChanged: function BUI_onPageProxyStateChanged(aState) {
     if (!this.star) {
       return;
     }
 
     if (aState == "invalid") {
       this.star.setAttribute("disabled", "true");
-      this.button.removeAttribute("starred");
+      this.star.removeAttribute("starred");
     }
     else {
       this.star.removeAttribute("disabled");
     }
-    this._updateStyle();
   },
 
-  _updateStyle: function BMB__updateStyle() {
-    if (!this.star) {
-      return;
-    }
-
+  _updateToolbarStyle: function BUI__updateToolbarStyle() {
     let personalToolbar = document.getElementById("PersonalToolbar");
     let onPersonalToolbar = this.button.parentNode == personalToolbar ||
                             this.button.parentNode.parentNode == personalToolbar;
 
     if (onPersonalToolbar) {
       this.button.classList.add("bookmark-item");
       this.button.classList.remove("toolbarbutton-1");
     }
     else {
       this.button.classList.remove("bookmark-item");
       this.button.classList.add("toolbarbutton-1");
     }
   },
 
-  _uninitView: function BMB__uninitView() {
+  _uninitView: function BUI__uninitView() {
     // When an element with a placesView attached is removed and re-inserted,
     // XBL reapplies the binding causing any kind of issues and possible leaks,
     // so kill current view and let popupshowing generate a new one.
     if (this.button && this.button._placesView) {
       this.button._placesView.uninit();
     }
   },
 
-  customizeStart: function BMB_customizeStart() {
+  customizeStart: function BUI_customizeStart() {
     this._uninitView();
   },
 
-  customizeChange: function BMB_customizeChange() {
-    this._updateStyle();
+  customizeChange: function BUI_customizeChange() {
+    this._updateToolbarStyle();
   },
 
-  customizeDone: function BMB_customizeDone() {
+  customizeDone: function BUI_customizeDone() {
     delete this._button;
-    delete this._star;
-    delete this._anchor;
     this.onToolbarVisibilityChange();
-    this._updateStyle();
+    this._updateToolbarStyle();
   },
 
   _hasBookmarksObserver: false,
-  uninit: function BMB_uninit() {
+  uninit: function BUI_uninit() {
     this._uninitView();
 
     if (this._hasBookmarksObserver) {
       PlacesUtils.removeLazyBookmarkObserver(this);
     }
 
     if (this._pendingStmt) {
       this._pendingStmt.cancel();
       delete this._pendingStmt;
     }
   },
 
-  updateStarState: function BMB_updateStarState() {
-    if (!this.button || (this._uri && gBrowser.currentURI.equals(this._uri))) {
+  updateStarState: function BUI_updateStarState() {
+    if (!this.star || (this._uri && gBrowser.currentURI.equals(this._uri))) {
       return;
     }
 
     // Reset tracked values.
     this._uri = gBrowser.currentURI;
     this._itemIds = [];
 
     if (this._pendingStmt) {
@@ -1210,76 +1201,64 @@ let BookmarksMenuButton = {
           Components.utils.reportError("BookmarksMenuButton failed adding a bookmarks observer: " + ex);
         }
       }
 
       delete this._pendingStmt;
     }, this);
   },
 
-  _updateStar: function BMB__updateStar() {
-    if (!this.button) {
+  _updateStar: function BUI__updateStar() {
+    if (!this.star) {
       return;
     }
 
     if (this._itemIds.length > 0) {
-      this.button.setAttribute("starred", "true");
-      this.button.setAttribute("tooltiptext", this._starredTooltip);
+      this.star.setAttribute("starred", "true");
+      this.star.setAttribute("tooltiptext", this._starredTooltip);
     }
     else {
-      this.button.removeAttribute("starred");
-      this.button.setAttribute("tooltiptext", this._unstarredTooltip);
+      this.star.removeAttribute("starred");
+      this.star.setAttribute("tooltiptext", this._unstarredTooltip);
     }
   },
 
-  onCommand: function BMB_onCommand(aEvent) {
+  onCommand: function BUI_onCommand(aEvent) {
     if (aEvent.target != aEvent.currentTarget) {
       return;
     }
     // Ignore clicks on the star if we are updating its state.
     if (!this._pendingStmt) {
       PlacesCommandHook.bookmarkCurrentPage(this._itemIds.length > 0);
     }
   },
 
   // nsINavBookmarkObserver
-  onItemAdded: function BMB_onItemAdded(aItemId, aParentId, aIndex, aItemType,
+  onItemAdded: function BUI_onItemAdded(aItemId, aParentId, aIndex, aItemType,
                                         aURI) {
-    if (!this.button) {
-      return;
-    }
-
     if (aURI && aURI.equals(this._uri)) {
       // If a new bookmark has been added to the tracked uri, register it.
       if (this._itemIds.indexOf(aItemId) == -1) {
         this._itemIds.push(aItemId);
         this._updateStar();
       }
     }
   },
 
-  onItemRemoved: function BMB_onItemRemoved(aItemId) {
-    if (!this.button) {
-      return;
-    }
-
+  onItemRemoved: function BUI_onItemRemoved(aItemId) {
     let index = this._itemIds.indexOf(aItemId);
     // If one of the tracked bookmarks has been removed, unregister it.
     if (index != -1) {
       this._itemIds.splice(index, 1);
       this._updateStar();
     }
   },
 
-  onItemChanged: function BMB_onItemChanged(aItemId, aProperty,
+  onItemChanged: function BUI_onItemChanged(aItemId, aProperty,
                                             aIsAnnotationProperty, aNewValue) {
-    if (!this.button) {
-      return;
-    }
-
     if (aProperty == "uri") {
       let index = this._itemIds.indexOf(aItemId);
       // If the changed bookmark was tracked, check if it is now pointing to
       // a different uri and unregister it.
       if (index != -1 && aNewValue != this._uri.spec) {
         this._itemIds.splice(index, 1);
         this._updateStar();
       }
@@ -1294,10 +1273,10 @@ let BookmarksMenuButton = {
   onBeginUpdateBatch: function () {},
   onEndUpdateBatch: function () {},
   onBeforeItemRemoved: function () {},
   onItemVisited: function () {},
   onItemMoved: function () {},
 
   QueryInterface: XPCOMUtils.generateQI([
     Ci.nsINavBookmarkObserver
-  ]),
+  ])
 };
--- a/browser/base/content/browser.css
+++ b/browser/base/content/browser.css
@@ -303,30 +303,28 @@ panel[noactions] > richlistbox > richlis
 .unified-nav-current {
   font-weight: bold;
 }
 
 toolbarbutton.bookmark-item {
   max-width: 13em;
 }
 
+%ifdef MENUBAR_CAN_AUTOHIDE
+#toolbar-menubar:not([autohide="true"]) ~ toolbar > #bookmarks-menu-button,
+#toolbar-menubar:not([autohide="true"]) > #bookmarks-menu-button {
+  display: none;
+}
+%endif
+
 #editBMPanel_tagsSelector {
   /* override default listbox width from xul.css */
   width: auto;
 }
 
-/* The star doesn't make sense as text */
-toolbar[mode="text"] #bookmarks-menu-button > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
-  display: -moz-box !important;
-}
-toolbar[mode="text"] #bookmarks-menu-button > .toolbarbutton-menubutton-button > .toolbarbutton-text,
-toolbar[mode="full"] #bookmarks-menu-button.bookmark-item > .toolbarbutton-menubutton-button > .toolbarbutton-text {
-  display: none;
-}
-
 menupopup[emptyplacesresult="true"] > .hide-if-empty-places-result {
   display: none;
 }
 
 menuitem.spell-suggestion {
   font-weight: bold;
 }
 
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -1308,17 +1308,17 @@ var gBrowserInit = {
     Services.obs.removeObserver(gPluginHandler.pluginCrashed, "plugin-crashed");
 
     try {
       gBrowser.removeProgressListener(window.XULBrowserWindow);
       gBrowser.removeTabsProgressListener(window.TabsProgressListener);
     } catch (ex) {
     }
 
-    BookmarksMenuButton.uninit();
+    BookmarkingUI.uninit();
 
     TabsOnTop.uninit();
 
     TabsInTitlebar.uninit();
 
     var enumerator = Services.wm.getEnumerator(null);
     enumerator.getNext();
     if (!enumerator.hasMoreElements()) {
@@ -2226,17 +2226,17 @@ function setUrlAndSearchBarWidthForCondi
 function UpdatePageProxyState()
 {
   if (gURLBar && gURLBar.value != gLastValidURLStr)
     SetPageProxyState("invalid");
 }
 
 function SetPageProxyState(aState)
 {
-  BookmarksMenuButton.onPageProxyStateChanged(aState);
+  BookmarkingUI.onPageProxyStateChanged(aState);
 
   if (!gURLBar)
     return;
 
   if (!gProxyFavIcon)
     gProxyFavIcon = document.getElementById("page-proxy-favicon");
 
   gURLBar.setAttribute("pageproxystate", aState);
@@ -3322,17 +3322,17 @@ function BrowserCustomizeToolbar() {
 
   var splitter = document.getElementById("urlbar-search-splitter");
   if (splitter)
     splitter.parentNode.removeChild(splitter);
 
   CombinedStopReload.uninit();
 
   PlacesToolbarHelper.customizeStart();
-  BookmarksMenuButton.customizeStart();
+  BookmarkingUI.customizeStart();
   DownloadsButton.customizeStart();
 
   TabsInTitlebar.allowedBy("customizing-toolbars", false);
 
   var customizeURL = "chrome://global/content/customizeToolbar.xul";
   gCustomizeSheet = getBoolPref("toolbar.customization.usesheet", false);
 
   if (gCustomizeSheet) {
@@ -3386,30 +3386,30 @@ function BrowserToolboxCustomizeDone(aTo
     // Hacky: update the PopupNotifications' object's reference to the iconBox,
     // if it already exists, since it may have changed if the URL bar was
     // added/removed.
     if (!window.__lookupGetter__("PopupNotifications"))
       PopupNotifications.iconBox = document.getElementById("notification-popup-box");
   }
 
   PlacesToolbarHelper.customizeDone();
-  BookmarksMenuButton.customizeDone();
+  BookmarkingUI.customizeDone();
   DownloadsButton.customizeDone();
 
   // The url bar splitter state is dependent on whether stop/reload
   // and the location bar are combined, so we need this ordering
   CombinedStopReload.init();
   UpdateUrlbarSearchSplitterState();
   setUrlAndSearchBarWidthForConditionalForwardButton();
 
   // Update the urlbar
   if (gURLBar) {
     URLBarSetURI();
     XULBrowserWindow.asyncUpdateUI();
-    BookmarksMenuButton.updateStarState();
+    BookmarkingUI.updateStarState();
     SocialMark.updateMarkState();
     SocialShare.update();
   }
 
   TabsInTitlebar.allowedBy("customizing-toolbars", true);
 
   // Re-enable parts of the UI we disabled during the dialog
   var menubar = document.getElementById("main-menubar");
@@ -3428,17 +3428,17 @@ function BrowserToolboxCustomizeDone(aTo
 function BrowserToolboxCustomizeChange(aType) {
   switch (aType) {
     case "iconsize":
     case "mode":
       retrieveToolbarIconsizesFromTheme();
       break;
     default:
       gHomeButton.updatePersonalToolbarStyle();
-      BookmarksMenuButton.customizeChange();
+      BookmarkingUI.customizeChange();
   }
 }
 
 /**
  * Allows themes to override the "iconsize" attribute on toolbars.
  */
 function retrieveToolbarIconsizesFromTheme() {
   function retrieveToolbarIconsize(aToolbar) {
@@ -3874,17 +3874,17 @@ var XULBrowserWindow = {
       } else {
         this.reloadCommand.removeAttribute("disabled");
       }
 
       if (gURLBar) {
         URLBarSetURI(aLocationURI);
 
         // Update starring UI
-        BookmarksMenuButton.updateStarState();
+        BookmarkingUI.updateStarState();
         SocialMark.updateMarkState();
         SocialShare.update();
       }
 
       // Show or hide browser chrome based on the whitelist
       if (this.hideChromeForLocation(location)) {
         document.documentElement.setAttribute("disablechrome", "true");
       } else {
@@ -4502,17 +4502,17 @@ function onViewToolbarCommand(aEvent) {
 function setToolbarVisibility(toolbar, isVisible) {
   var hidingAttribute = toolbar.getAttribute("type") == "menubar" ?
                         "autohide" : "collapsed";
 
   toolbar.setAttribute(hidingAttribute, !isVisible);
   document.persist(toolbar.id, hidingAttribute);
 
   PlacesToolbarHelper.init();
-  BookmarksMenuButton.onToolbarVisibilityChange();
+  BookmarkingUI.onToolbarVisibilityChange();
   gBrowser.updateWindowResizers();
 
 #ifdef MENUBAR_CAN_AUTOHIDE
   updateAppButtonDisplay();
 #endif
 }
 
 var TabsOnTop = {
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -576,16 +576,19 @@
             <label id="urlbar-display" value="&urlbar.switchToTab.label;"/>
           </box>
           <hbox id="urlbar-icons">
             <image id="page-report-button"
                    class="urlbar-icon"
                    hidden="true"
                    tooltiptext="&pageReportIcon.tooltip;"
                    onclick="gPopupBlockerObserver.onReportButtonClick(event);"/>
+            <image id="star-button"
+                   class="urlbar-icon"
+                   onclick="BookmarkingUI.onCommand(event);"/>
             <image id="go-button"
                    class="urlbar-icon"
                    tooltiptext="&goEndCap.tooltip;"
                    onclick="gURLBar.handleCommand(event);"/>
           </hbox>
           <toolbarbutton id="urlbar-go-button"
                          class="chromeclass-toolbar-additional"
                          onclick="gURLBar.handleCommand(event);"
@@ -630,46 +633,52 @@
                    onpopuphiding="WebrtcIndicator.clearPopup(this);"
                    oncommand="WebrtcIndicator.menuCommand(event.target);"/>
       </toolbarbutton>
 
       <toolbarbutton id="bookmarks-menu-button"
                      class="toolbarbutton-1 chromeclass-toolbar-additional"
                      persist="class"
                      removable="true"
-                     type="menu-button"
+                     type="menu"
                      label="&bookmarksMenuButton.label;"
                      tooltiptext="&bookmarksMenuButton.tooltip;"
                      ondragenter="PlacesMenuDNDHandler.onDragEnter(event);"
                      ondragover="PlacesMenuDNDHandler.onDragOver(event);"
                      ondragleave="PlacesMenuDNDHandler.onDragLeave(event);"
-                     ondrop="PlacesMenuDNDHandler.onDrop(event);"
-                     oncommand="BookmarksMenuButton.onCommand(event);">
+                     ondrop="PlacesMenuDNDHandler.onDrop(event);">
         <menupopup id="BMB_bookmarksPopup"
                    placespopup="true"
                    context="placesContext"
                    openInTabs="children"
                    oncommand="BookmarksEventHandler.onCommand(event, this.parentNode._placesView);"
                    onclick="BookmarksEventHandler.onClick(event, this.parentNode._placesView);"
-                   onpopupshowing="BookmarksMenuButton.onPopupShowing(event);
+                   onpopupshowing="BookmarkingUI.onPopupShowing(event);
                                    if (!this.parentNode._placesView)
                                      new PlacesMenu(event, 'place:folder=BOOKMARKS_MENU');"
                    tooltip="bhTooltip" popupsinherittooltip="true">
           <menuitem id="BMB_viewBookmarksToolbar"
                     placesanonid="view-toolbar"
                     toolbarId="PersonalToolbar"
                     type="checkbox"
                     oncommand="onViewToolbarCommand(event)"
                     label="&viewBookmarksToolbar.label;"/>
           <menuseparator/>
           <menuitem id="BMB_bookmarksShowAll"
                     label="&showAllBookmarks2.label;"
                     command="Browser:ShowAllBookmarks"
                     key="manBookmarkKb"/>
           <menuseparator/>
+          <menuitem id="BMB_bookmarkThisPage"
+#ifndef XP_MACOSX
+                    class="menuitem-iconic"
+#endif
+                    label="&bookmarkThisPageCmd.label;"
+                    command="Browser:AddBookmarkAs"
+                    key="addBookmarkAsKb"/>
           <menuitem id="BMB_subscribeToPageMenuitem"
 #ifndef XP_MACOSX
                     class="menuitem-iconic"
 #endif
                     label="&subscribeToPageMenuitem.label;"
                     oncommand="return FeedHandler.subscribeToFeed(null, event);"
                     onclick="checkForMiddleClick(this, event);"
                     observes="singleFeedMenuitemState"/>
--- a/browser/base/content/test/browser_bug432599.js
+++ b/browser/base/content/test/browser_bug432599.js
@@ -12,24 +12,24 @@ function invokeUsingCtrlD(phase) {
     EventUtils.synthesizeKey("d", { accelKey: true });
     break;
   }
 }
 
 function invokeUsingStarButton(phase) {
   switch (phase) {
   case 1:
-     EventUtils.synthesizeMouseAtCenter(BookmarksMenuButton.star, {});
+     EventUtils.synthesizeMouseAtCenter(BookmarkingUI.star, {});
     break;
   case 2:
   case 4:
     EventUtils.synthesizeKey("VK_ESCAPE", {});
     break;
   case 3:
-     EventUtils.synthesizeMouseAtCenter(BookmarksMenuButton.star,
+     EventUtils.synthesizeMouseAtCenter(BookmarkingUI.star,
                                         { clickCount: 2 });
     break;
   }
 }
 
 var testURL = "data:text/plain,Content";
 var bookmarkId;
 
@@ -55,20 +55,20 @@ function test() {
 function initTest() {
   // First, bookmark the page.
   bookmarkId = add_bookmark(makeURI(testURL), "Bug 432599 Test");
 
   checkBookmarksPanel(invokers[currentInvoker], 1);
 }
 
 function waitForStarChange(aValue, aCallback) {
-  let expectedStatus = aValue ? BookmarksMenuButton.STATUS_STARRED
-                              : BookmarksMenuButton.STATUS_UNSTARRED;
-  if (BookmarksMenuButton.status == BookmarksMenuButton.STATUS_UPDATING ||
-      BookmarksMenuButton.status != expectedStatus) {
+  let expectedStatus = aValue ? BookmarkingUI.STATUS_STARRED
+                              : BookmarkingUI.STATUS_UNSTARRED;
+  if (BookmarkingUI.status == BookmarkingUI.STATUS_UPDATING ||
+      BookmarkingUI.status != expectedStatus) {
     info("Waiting for star button change.");
     setTimeout(waitForStarChange, 50, aValue, aCallback);
     return;
   }
   aCallback();
 }
 
 let invokers = [invokeUsingStarButton, invokeUsingCtrlD];
--- a/browser/base/content/test/browser_bug581253.js
+++ b/browser/base/content/test/browser_bug581253.js
@@ -29,37 +29,37 @@ function test() {
     ok(PlacesUtils.bookmarks.isBookmarked(uri), "the test url is bookmarked");
     waitForStarChange(true, onStarred);
   }), true);
 
   content.location = testURL;
 }
 
 function waitForStarChange(aValue, aCallback) {
-  let expectedStatus = aValue ? BookmarksMenuButton.STATUS_STARRED
-                              : BookmarksMenuButton.STATUS_UNSTARRED;
-  if (BookmarksMenuButton.status == BookmarksMenuButton.STATUS_UPDATING ||
-      BookmarksMenuButton.status != expectedStatus) {
+  let expectedStatus = aValue ? BookmarkingUI.STATUS_STARRED
+                              : BookmarkingUI.STATUS_UNSTARRED;
+  if (BookmarkingUI.status == BookmarkingUI.STATUS_UPDATING ||
+      BookmarkingUI.status != expectedStatus) {
     info("Waiting for star button change.");
     setTimeout(waitForStarChange, 50, aValue, aCallback);
     return;
   }
   aCallback();
 }
 
 function onStarred() {
-  is(BookmarksMenuButton.status, BookmarksMenuButton.STATUS_STARRED,
+  is(BookmarkingUI.status, BookmarkingUI.STATUS_STARRED,
      "star button indicates that the page is bookmarked");
 
   let uri = makeURI(testURL);
   let tagTxn = new PlacesTagURITransaction(uri, [testTag]);
   PlacesUtils.transactionManager.doTransaction(tagTxn);
 
   StarUI.panel.addEventListener("popupshown", onPanelShown, false);
-  BookmarksMenuButton.star.click();
+  BookmarkingUI.star.click();
 }
 
 function onPanelShown(aEvent) {
   if (aEvent.target == StarUI.panel) {
     StarUI.panel.removeEventListener("popupshown", arguments.callee, false);
     let tagsField = document.getElementById("editBMPanel_tagsField");
     ok(tagsField.value == testTag, "tags field value was set");
     tagsField.focus();
@@ -88,15 +88,15 @@ function waitForClearHistory(aCallback)
 
 function onPanelHidden(aEvent) {
   if (aEvent.target == StarUI.panel) {
     StarUI.panel.removeEventListener("popuphidden", arguments.callee, false);
 
     executeSoon(function() {
       ok(!PlacesUtils.bookmarks.isBookmarked(makeURI(testURL)),
          "the bookmark for the test url has been removed");
-      is(BookmarksMenuButton.status, BookmarksMenuButton.STATUS_UNSTARRED,
+      is(BookmarkingUI.status, BookmarkingUI.STATUS_UNSTARRED,
          "star button indicates that the bookmark has been removed");
       gBrowser.removeCurrentTab();
       waitForClearHistory(finish);
     });
   }
 }
--- a/browser/base/content/test/browser_bug624734.js
+++ b/browser/base/content/test/browser_bug624734.js
@@ -6,18 +6,18 @@
 
 function test() {
   waitForExplicitFinish();
 
   let tab = gBrowser.selectedTab = gBrowser.addTab();
   tab.linkedBrowser.addEventListener("load", (function(event) {
     tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
 
-    is(BookmarksMenuButton.button.getAttribute("tooltiptext"),
-       BookmarksMenuButton._unstarredTooltip,
+    is(BookmarkingUI.star.getAttribute("tooltiptext"),
+       BookmarkingUI._unstarredTooltip,
        "Star icon should have the unstarred tooltip text");
   
     gBrowser.removeCurrentTab();
     finish();
   }), true);
 
   tab.linkedBrowser.loadURI("http://example.com/browser/browser/base/content/test/dummy_page.html");
 }
--- a/browser/components/nsBrowserGlue.js
+++ b/browser/components/nsBrowserGlue.js
@@ -1339,32 +1339,21 @@ BrowserGlue.prototype = {
     if (currentUIVersion < 12) {
       // Remove bookmarks-menu-button-container, then place
       // bookmarks-menu-button into its position.
       let currentsetResource = this._rdf.GetResource("currentset");
       let toolbarResource = this._rdf.GetResource(BROWSER_DOCURL + "nav-bar");
       let currentset = this._getPersist(toolbarResource, currentsetResource);
       // Need to migrate only if toolbar is customized.
       if (currentset) {
-        if (currentset.contains("bookmarks-menu-button-container"))
-          currentset = currentset.replace(/(^|,)bookmarks-menu-button-container($|,)/,"$2");
-
-        // Now insert the new button.
-        if (currentset.contains("downloads-button")) {
-          currentset = currentset.replace(/(^|,)downloads-button($|,)/,
-                                          "$1bookmarks-menu-button,downloads-button$2");
-        } else if (currentset.contains("home-button")) {
-          currentset = currentset.replace(/(^|,)home-button($|,)/,
-                                          "$1bookmarks-menu-button,home-button$2");
-        } else {
-          // Just append.
-          currentset = currentset.replace(/(^|,)window-controls($|,)/,
-                                          "$1bookmarks-menu-button,window-controls$2")
+        if (currentset.contains("bookmarks-menu-button-container")) {
+          currentset = currentset.replace(/(^|,)bookmarks-menu-button-container($|,)/,
+                                          "$1bookmarks-menu-button$2");
+          this._setPersist(toolbarResource, currentsetResource, currentset);
         }
-        this._setPersist(toolbarResource, currentsetResource, currentset);
       }
     }
 
     if (currentUIVersion < 13) {
       try {
         if (Services.prefs.getBoolPref("plugins.hide_infobar_for_missing_plugin"))
           Services.prefs.setBoolPref("plugins.notifyMissingFlash", false);
       }
--- a/browser/themes/linux/browser.css
+++ b/browser/themes/linux/browser.css
@@ -470,16 +470,20 @@ menuitem:not([type]):not(.menuitem-toolt
   list-style-image: url("chrome://browser/skin/page-livemarks.png");
 }
 
 #bookmarksToolbarFolderMenu,
 #BMB_bookmarksToolbar {
   list-style-image: url("chrome://browser/skin/places/bookmarksToolbar.png");
 }
 
+#BMB_bookmarkThisPage {
+  list-style-image: url("chrome://browser/skin/places/starPage.png");
+}
+
 #BMB_unsortedBookmarks {
   list-style-image: url("chrome://browser/skin/places/unsortedBookmarks.png");
 }
 
 #appmenu_downloads,
 #menu_openDownloads {
   list-style-image: url("chrome://browser/skin/Toolbar-small.png");
   -moz-image-region: rect(0px 16px 16px 0px);
@@ -644,20 +648,29 @@ toolbar[mode="full"] .toolbarbutton-1 > 
 #downloads-button {
   -moz-image-region: rect(0px 24px 24px 0px);
 }
 
 #history-button {
   -moz-image-region: rect(0px 48px 24px 24px);
 }
 
-#bookmarks-button {
+#bookmarks-button,
+#bookmarks-menu-button {
   -moz-image-region: rect(0px 72px 24px 48px);
 }
 
+#bookmarks-menu-button.bookmark-item {
+  list-style-image: url("chrome://browser/skin/Toolbar-small.png");
+}
+
+#bookmarks-menu-button.toolbarbutton-1 {
+  -moz-box-orient: horizontal;
+}
+
 #print-button {
   list-style-image: url("moz-icon://stock/gtk-print?size=toolbar");
 }
 #print-button[disabled="true"] {
   list-style-image: url("moz-icon://stock/gtk-print?size=toolbar&state=disabled");
 }
 
 #new-tab-button {
@@ -801,17 +814,19 @@ toolbar[iconsize="small"] #downloads-but
   -moz-image-region: rect(0px 16px 16px 0px);
 }
 
 toolbar[iconsize="small"] #webrtc-status-button /* temporary placeholder (bug 824825) */,
 toolbar[iconsize="small"] #history-button {
   -moz-image-region: rect(0px 32px 16px 16px);
 }
 
-toolbar[iconsize="small"] #bookmarks-button {
+toolbar[iconsize="small"] #bookmarks-button,
+toolbar[iconsize="small"] #bookmarks-menu-button,
+#bookmarks-menu-button.bookmark-item {
   -moz-image-region: rect(0px 48px 16px 32px);
 }
 
 toolbar[iconsize="small"] #print-button {
   list-style-image: url("moz-icon://stock/gtk-print?size=menu");
 }
 toolbar[iconsize="small"] #print-button[disabled="true"] {
   list-style-image: url("moz-icon://stock/gtk-print?size=menu&state=disabled");
@@ -1500,38 +1515,27 @@ richlistitem[type~="action"][actiontype=
 }
 
 /* social recommending panel */
 
 #social-mark-button {
   -moz-image-region: rect(0, 16px, 16px, 0);
 }
 
+/* Star button */
+#star-button {
+  list-style-image: url("chrome://browser/skin/places/starPage.png");
+}
+
+#star-button[starred="true"] {
+  list-style-image: url("chrome://browser/skin/places/pageStarred.png");
+}
+
 /* bookmarks menu-button */
 
-#bookmarks-menu-button {
-  list-style-image: url("chrome://browser/skin/Toolbar.png");
-  -moz-image-region: rect(0px 216px 24px 192px);
-}
-
-#bookmarks-menu-button[starred] {
-  -moz-image-region: rect(24px 216px 48px 192px);
-}
-
-toolbar[iconsize="small"] #bookmarks-menu-button,
-#bookmarks-menu-button.bookmark-item {
-  list-style-image: url("chrome://browser/skin/Toolbar-small.png");
-  -moz-image-region: rect(0px 144px 16px 128px);
-}
-
-toolbar[iconsize="small"] #bookmarks-menu-button[starred],
-#bookmarks-menu-button.bookmark-item[starred] {
-  -moz-image-region: rect(16px 144px 32px 128px);
-}
-
 #bookmarks-menu-button[disabled] > .toolbarbutton-icon,
 #bookmarks-menu-button[disabled] > .toolbarbutton-menu-dropmarker,
 #bookmarks-menu-button[disabled] > .toolbarbutton-menubutton-dropmarker,
 #bookmarks-menu-button[disabled] > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
 #bookmarks-menu-button > .toolbarbutton-menubutton-button[disabled] > .toolbarbutton-icon {
   opacity: .4;
 }
 
--- a/browser/themes/linux/jar.mn
+++ b/browser/themes/linux/jar.mn
@@ -77,23 +77,25 @@ browser.jar:
   skin/classic/browser/newtab/newTab.css              (newtab/newTab.css)
   skin/classic/browser/newtab/controls.png            (newtab/controls.png)
   skin/classic/browser/newtab/noise.png               (newtab/noise.png)
   skin/classic/browser/places/bookmarksMenu.png       (places/bookmarksMenu.png)
   skin/classic/browser/places/bookmarksToolbar.png    (places/bookmarksToolbar.png)
   skin/classic/browser/places/calendar.png            (places/calendar.png)
 * skin/classic/browser/places/editBookmarkOverlay.css (places/editBookmarkOverlay.css)
   skin/classic/browser/places/livemark-item.png       (places/livemark-item.png)
+  skin/classic/browser/places/pageStarred.png         (places/pageStarred.png)
   skin/classic/browser/places/star-icons.png          (places/star-icons.png)
   skin/classic/browser/places/starred48.png           (places/starred48.png)
   skin/classic/browser/places/unstarred48.png         (places/unstarred48.png)
   skin/classic/browser/places/places.css              (places/places.css)
   skin/classic/browser/places/organizer.css           (places/organizer.css)
   skin/classic/browser/places/organizer.xml           (places/organizer.xml)
   skin/classic/browser/places/query.png               (places/query.png)
+  skin/classic/browser/places/starPage.png            (places/starPage.png)
   skin/classic/browser/places/tag.png                 (places/tag.png)
   skin/classic/browser/places/toolbarDropMarker.png   (places/toolbarDropMarker.png)
   skin/classic/browser/places/unsortedBookmarks.png   (places/unsortedBookmarks.png)
   skin/classic/browser/places/downloads.png           (places/downloads.png)
   skin/classic/browser/preferences/alwaysAsk.png      (preferences/alwaysAsk.png)
   skin/classic/browser/preferences/mail.png           (preferences/mail.png)
   skin/classic/browser/preferences/Options.png        (preferences/Options.png)
 #ifdef MOZ_SERVICES_SYNC
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..61a9f90e05b15a6206727be766294d7baa593995
GIT binary patch
literal 767
zc$@+M0s#GqP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10(?nCK~y-6ol{*)R8bUN``mM9#+f_W7=EQA%|vEjIzdV?;!{2J
zP|-t0B}|d{6hTCf5ft?U0wMaK87+_s@}ak&9-3=HVIY*D2BVn{B9tF9qjT>)yNA#m
z9ADaSV6$0kueA>65Hq7#nF*>FLc9Y}PC3r8XpD!8;Y3k303vZS*m${eTjY932ytg4
z9GH3CNybsp-{ZC%YnGKg#~+><b~29YV%UuwbXM(XXHq`_`zyBYy2JoFi#kol;R0|4
zKu8F!hKQ;e)Yx(=<q<p#s9$hIGd{lDxlC||n0Z<$XA;0TfO}+iix=hL(<f^8Uel$!
z5}GtXnh!*-e==$TN?EXT6UgUM$Y-Z`YWSfwKRfhBuu`cKe^`{19)Ru%LdZZN832SA
z#M6*+3O>IZf!dSg^3@1tPEj%rKMB!S5kB9x{a}|Q0RTDx1*iqElLqVwussGqK<RB5
zNnW*nr{52-QpbszVJ1it(S5fOy0GtXw<a+Fw#ETo0yy*cvSb}>?I^yy?QnAQW4+9L
zF&bk_0zfpzHh>N@L7w#3^E0&#M<i6XFovrUGo!EV?A&NyG{)^KV_6VY(<_WE5eZ>{
z^ael}00>YEfbhd8Ym!29RTXen8Z$w}OozOI{UEIt<Y`4Nw+Y!r56IIB(t;@2+yqvt
z*-X%?@LC6Zq`S;;dFx@@i}*2k%Sw+vUM7%T9zN@<i`>?AZxFh-%9YPdMgV*&Z~&lG
zSs9fcdBB6O8l3dVqh5BFLdwa7X1@14`P{c#O@HfRWn~qB($$x^_BZzTxStY<fO3}Z
xMq_NQ&1xp7MQENI%qqhwe=ZthwQj-x)E{H~B#C0KngRd-002ovPDHLkV1oMDLjeE)
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3193a3535f1e390211aa403ad757b10cc9d5a884
GIT binary patch
literal 723
zc$@*#0xbQBP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXG{
z4;CqYo`_)p00L7<L_t(I%cYagYZ^fm$G<zfYK*!h27jz^)pc1*3W62Grch5MAR#xQ
zr(SYN+Dnll^y(i_JmjpG^bqqmB(wz&rKLGEmn;$DkJYA>7+PwL*wyJ}3&ut$^udE+
z-giFl&Ad0jY_nRe);n&udu4NTbAFbH%nGQg8aO>YO*I;gN0CTGp_DTJ4A|b@wsblj
zXEYjp;BvWCNs?kmM@Rf^kiP(wQch76rBbOR0N4O5ZES2PwOTEDo1Oq*0W1OVM<S8%
z&dyGv-|w%iuCCq(AOT=ySzfQ#>&pzo1Q!<<Lje5d8I}RCyt}(AX0zD<A;iM-yqjg&
zWt+`*4}i~1WH$_>W*El#<>lpTLI~O4-@nM`^A{X|kt9jZKp^nUEcrVCCxE$$O0PMN
z3v(P73I>A@0kFwrG6$f|0_YzfACDIn7S7`FxXLgLOb|PD-7x?I0QUCwUTke`oec(q
z&ny7i?RLLatJR*}Zf~YisU#tU0bm6%`Rc}aJRX!vrI*EG@sqCWIskejg~#KOPfkvr
zP)grYN<UCaKTi02P1Bwx5{bJr+o-ClMHEE`fT6j?nmz_F5Cmb~VzC%A0bZ}y%k%s?
z01f~djYdC)!{N25`{{H#GqG6AH#tz;pG7zvo|9$SK?vah*fmXiRjE{(nx=JgxtwQh
zZS6TBWROm$J)$Vi0l2;aXf~T{tJUiEdcAjrLgCHT)zz0!D0F^saPaH!@X(*hWb);5
z`LV9+U)$|AciR_W00;nrKA+Dq9TWs%-kid~RCoT*egieo&tASG=hy%M002ovPDHLk
FV1lgCI7$Ej
--- a/browser/themes/osx/browser.css
+++ b/browser/themes/osx/browser.css
@@ -896,32 +896,52 @@ toolbar[mode="icons"] #forward-button:-m
 
   #history-button[checked="true"] {
     -moz-image-region: rect(40px, 320px, 80px, 280px);
   }
 }
 
 /* bookmark sidebar & menu buttons */
 
-#bookmarks-button {
+#bookmarks-button,
+#bookmarks-menu-button {
   -moz-image-region: rect(0, 180px, 20px, 160px);
 }
 
 #bookmarks-button[checked="true"] {
   -moz-image-region: rect(20px, 180px, 40px, 160px);
 }
 
+#bookmarks-menu-button.bookmark-item {
+  -moz-image-region: rect(2px, 178px, 18px, 162px);
+  list-style-image: url("chrome://browser/skin/Toolbar.png");
+}
+
 @media (min-resolution: 2dppx) {
-  #bookmarks-button {
+  #bookmarks-button,
+  #bookmarks-menu-button {
     -moz-image-region: rect(0, 360px, 40px, 320px);
   }
 
   #bookmarks-button[checked="true"] {
     -moz-image-region: rect(40px, 360px, 80px, 320px);
   }
+
+  #bookmarks-menu-button.bookmark-item {
+    -moz-image-region: rect(4px, 356px, 36px, 324px);
+    list-style-image: url("chrome://browser/skin/Toolbar@2x.png");
+  }
+
+  #bookmarks-menu-button.bookmark-item > .toolbarbutton-icon {
+    width: 16px;
+  }
+}
+
+#bookmarks-menu-button.toolbarbutton-1 {
+  -moz-box-orient: horizontal;
 }
 
 /* print button */
 
 #print-button {
   -moz-image-region: rect(0, 200px, 20px, 180px);
 }
 
@@ -1712,59 +1732,45 @@ window[tabsontop="false"] richlistitem[t
 }
 
 /* social recommending panel */
 
 #social-mark-button {
   -moz-image-region: rect(0, 16px, 16px, 0);
 }
 
-/* bookmarks menu-button */
-
-#bookmarks-menu-button {
-  -moz-image-region: rect(0px 500px 20px 480px);
-}
-
-#bookmarks-menu-button[starred] {
-  -moz-image-region: rect(20px 500px 40px 480px);
-}
-
-#bookmarks-menu-button.bookmark-item {
+/* Star button */
+#star-button {
   list-style-image: url("chrome://browser/skin/places/star-icons.png");
-  -moz-image-region: rect(0px 16px 16px 0px);
-}
-
-#bookmarks-menu-button.bookmark-item[starred] {
-  -moz-image-region: rect(0px 32px 16px 16px);
-}
-
-#bookmarks-menu-button.bookmark-item > .toolbarbutton-menubutton-button {
-  padding: 0;
+  -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#star-button:hover:active,
+#star-button[starred="true"] {
+  -moz-image-region: rect(0, 32px, 16px, 16px);
+}
+
+#star-button:hover:active[starred="true"] {
+  -moz-image-region: rect(0, 48px, 16px, 32px);
 }
 
 @media (min-resolution: 2dppx) {
-  #bookmarks-menu-button {
-    -moz-image-region: rect(0px, 1000px, 40px, 960px);
-  }
-
-  #bookmarks-menu-button[starred] {
-    -moz-image-region: rect(40px, 1000px, 80px, 960px);
+  #star-button {
+    list-style-image: url("chrome://browser/skin/places/star-icons.png");
+    -moz-image-region: rect(0, 32px, 32px, 0);
+    width: 22px;
   }
 
-  #bookmarks-menu-button.bookmark-item {
-    list-style-image: url("chrome://browser/skin/places/star-icons@2x.png");
-    -moz-image-region: rect(0px 32px 32px 0px);
+  #star-button:hover:active,
+  #star-button[starred="true"] {
+    -moz-image-region: rect(0, 64px, 32px, 32px);
   }
 
-  #bookmarks-menu-button.bookmark-item[starred] {
-    -moz-image-region: rect(0px 64px 32px 32px);
-  }
-
-  #bookmarks-menu-button.bookmark-item > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
-    width: 16px;
+  #star-button:hover:active[starred="true"] {
+    -moz-image-region: rect(0, 96px, 32px, 64px);
   }
 }
 
 /* BOOKMARKING PANEL */
 #editBookmarkPanelStarIcon {
   list-style-image: url("chrome://browser/skin/places/starred48.png");
   width: 48px;
   height: 48px;
--- a/browser/themes/windows/browser.css
+++ b/browser/themes/windows/browser.css
@@ -602,17 +602,17 @@ toolbarbutton.bookmark-item {
 toolbarbutton.bookmark-item:hover:active:not([disabled="true"]),
 toolbarbutton.bookmark-item[open="true"] {
   padding-top: 3px;
   padding-bottom: 1px;
   -moz-padding-start: 4px;
   -moz-padding-end: 2px;
 }
 
-.bookmark-item > .toolbarbutton-icon {
+.bookmark-item:not(#bookmarks-menu-button) > .toolbarbutton-icon {
   width: 16px;
   height: 16px;
 }
 
 /* Prevent [mode="icons"] from hiding the label */
 .bookmark-item > .toolbarbutton-text {
   display: -moz-box !important;
 }
@@ -1080,20 +1080,29 @@ toolbar[mode=full] .toolbarbutton-1 > .t
 #downloads-button {
   -moz-image-region: rect(0, 108px, 18px, 90px);
 }
 
 #history-button {
   -moz-image-region: rect(0, 126px, 18px, 108px);
 }
 
-#bookmarks-button {
+#bookmarks-button,
+#bookmarks-menu-button {
   -moz-image-region: rect(0, 144px, 18px, 126px);
 }
 
+#bookmarks-menu-button.bookmark-item {
+  list-style-image: url("chrome://browser/skin/Toolbar.png");
+}
+
+#bookmarks-menu-button.bookmark-item:-moz-lwtheme-brighttext {
+  list-style-image: url("chrome://browser/skin/Toolbar-inverted.png");
+}
+
 #print-button {
   -moz-image-region: rect(0, 162px, 18px, 144px);
 }
 
 #new-tab-button {
   -moz-image-region: rect(0, 180px, 18px, 162px);
 }
 
@@ -1801,37 +1810,35 @@ richlistitem[type~="action"][actiontype=
 }
 
 /* social recommending panel */
 
 #social-mark-button {
   -moz-image-region: rect(0, 16px, 16px, 0);
 }
 
-/* bookmarks menu-button */
-
-#bookmarks-menu-button {
-  -moz-image-region: rect(0px 378px 18px 360px);
-}
-
-#bookmarks-menu-button[starred] {
-  -moz-image-region: rect(18px 378px 36px 360px);
-}
-
-#bookmarks-menu-button.bookmark-item {
+/* star button */
+
+#star-button {
   list-style-image: url("chrome://browser/skin/places/bookmark.png");
   -moz-image-region: rect(0px 16px 16px 0px);
 }
 
-#bookmarks-menu-button.bookmark-item[starred] {
+#star-button:hover {
+  background-image: radial-gradient(circle closest-side, hsla(45,100%,73%,.3), hsla(45,100%,73%,0));
+  -moz-image-region: rect(0px 32px 16px 16px);
+}
+
+#star-button:hover:active {
+  background-image: radial-gradient(circle closest-side, hsla(45,100%,73%,.1), hsla(45,100%,73%,0));
   -moz-image-region: rect(0px 48px 16px 32px);
 }
 
-#bookmarks-menu-button.bookmark-item > .toolbarbutton-menubutton-button> .toolbarbutton-icon {
-  -moz-margin-start: 5px;
+#star-button[starred] {
+  list-style-image: url("chrome://browser/skin/places/editBookmark.png");
 }
 
 /* bookmarking panel */
 
 #editBookmarkPanelStarIcon {
   list-style-image: url("chrome://browser/skin/places/starred48.png");
   width: 48px;
   height: 48px;
--- a/browser/themes/windows/jar.mn
+++ b/browser/themes/windows/jar.mn
@@ -90,16 +90,17 @@ browser.jar:
         skin/classic/browser/feeds/videoFeedIcon16.png               (feeds/feedIcon16.png)
         skin/classic/browser/feeds/subscribe.css                     (feeds/subscribe.css)
         skin/classic/browser/feeds/subscribe-ui.css                  (feeds/subscribe-ui.css)
         skin/classic/browser/newtab/newTab.css                       (newtab/newTab.css)
         skin/classic/browser/newtab/controls.png                     (newtab/controls.png)
         skin/classic/browser/newtab/noise.png                        (newtab/noise.png)
         skin/classic/browser/places/places.css                       (places/places.css)
 *       skin/classic/browser/places/organizer.css                    (places/organizer.css)
+        skin/classic/browser/places/editBookmark.png                 (places/editBookmark.png)
         skin/classic/browser/places/bookmark.png                     (places/bookmark.png)
         skin/classic/browser/places/query.png                        (places/query.png)
         skin/classic/browser/places/bookmarksMenu.png                (places/bookmarksMenu.png)
         skin/classic/browser/places/bookmarksToolbar.png             (places/bookmarksToolbar.png)
         skin/classic/browser/places/calendar.png                     (places/calendar.png)
         skin/classic/browser/places/toolbarDropMarker.png            (places/toolbarDropMarker.png)
         skin/classic/browser/places/editBookmarkOverlay.css          (places/editBookmarkOverlay.css)
         skin/classic/browser/places/libraryToolbar.png               (places/libraryToolbar.png)
@@ -341,16 +342,17 @@ browser.jar:
         skin/classic/aero/browser/feeds/subscribe.css                (feeds/subscribe.css)
         skin/classic/aero/browser/feeds/subscribe-ui.css             (feeds/subscribe-ui.css)
         skin/classic/aero/browser/newtab/newTab.css                  (newtab/newTab.css)
         skin/classic/aero/browser/newtab/controls.png                (newtab/controls.png)
         skin/classic/aero/browser/newtab/noise.png                   (newtab/noise.png)
 *       skin/classic/aero/browser/places/places.css                  (places/places-aero.css)
 *       skin/classic/aero/browser/places/organizer.css               (places/organizer-aero.css)
         skin/classic/aero/browser/places/bookmark.png                (places/bookmark.png)
+        skin/classic/aero/browser/places/editBookmark.png            (places/editBookmark.png)
         skin/classic/aero/browser/places/query.png                   (places/query-aero.png)
         skin/classic/aero/browser/places/bookmarksMenu.png           (places/bookmarksMenu-aero.png)
         skin/classic/aero/browser/places/bookmarksToolbar.png        (places/bookmarksToolbar-aero.png)
         skin/classic/aero/browser/places/calendar.png                (places/calendar-aero.png)
         skin/classic/aero/browser/places/toolbarDropMarker.png       (places/toolbarDropMarker-aero.png)
         skin/classic/aero/browser/places/editBookmarkOverlay.css     (places/editBookmarkOverlay.css)
         skin/classic/aero/browser/places/libraryToolbar.png          (places/libraryToolbar-aero.png)
         skin/classic/aero/browser/places/starred48.png               (places/starred48-aero.png)
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fbca0523df169b6892d2b5050035152fb6b92606
GIT binary patch
literal 1642
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