author | Gijs Kruitbosch <gijskruitbosch@gmail.com> |
Mon, 10 Mar 2014 21:28:06 +0000 | |
changeset 173143 | 00d3279dfeef3159a8f9eab116f0a7795f3645c0 |
parent 173142 | 03e7402f6fd34d3958e664744480cf18b42e1348 |
child 173144 | 662beba6065324fa8c9dd8f48d0dcb99b2e025b8 |
push id | 26391 |
push user | cbook@mozilla.com |
push date | Wed, 12 Mar 2014 11:20:34 +0000 |
treeherder | mozilla-central@a56837cfc67c [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mak |
bugs | 981548 |
milestone | 30.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
|
--- a/browser/base/content/browser-places.js +++ b/browser/base/content/browser-places.js @@ -1319,16 +1319,32 @@ let BookmarkingUI = { }, onMainMenuPopupShowing: function BUI_onMainMenuPopupShowing(event) { this._updateBookmarkPageMenuItem(); PlacesCommandHook.updateBookmarkAllTabsCommand(); }, _showBookmarkedNotification: function BUI_showBookmarkedNotification() { + /* + * We're dynamically setting pointer-events to none here for the duration + * of the bookmark menu button's dropmarker animation in order to avoid + * having it end up in the overflow menu. This happens because it gaining + * focus triggers a style change which triggers an overflow event, even + * though this does not happen if no focus change occurs. The core issue + * is tracked in https://bugzilla.mozilla.org/show_bug.cgi?id=981637 + */ + let onDropmarkerAnimationEnd = () => { + this.button.removeEventListener("animationend", onDropmarkerAnimationEnd); + this.button.style.removeProperty("pointer-events"); + }; + let onDropmarkerAnimationStart = () => { + this.button.removeEventListener("animationstart", onDropmarkerAnimationStart); + this.button.style.pointerEvents = 'none'; + }; if (this._notificationTimeout) { clearTimeout(this._notificationTimeout); } if (this.notifier.style.transform == '') { let isRTL = getComputedStyle(this.button).direction == "rtl"; let buttonRect = this.button.getBoundingClientRect(); @@ -1349,23 +1365,26 @@ let BookmarkingUI = { let isInBookmarksToolbar = this.button.classList.contains("bookmark-item"); if (isInBookmarksToolbar) this.notifier.setAttribute("in-bookmarks-toolbar", true); let isInOverflowPanel = this.button.getAttribute("overflowedItem") == "true"; if (!isInOverflowPanel) { this.notifier.setAttribute("notification", "finish"); this.button.setAttribute("notification", "finish"); + this.button.addEventListener('animationstart', onDropmarkerAnimationStart); + this.button.addEventListener("animationend", onDropmarkerAnimationEnd); } this._notificationTimeout = setTimeout( () => { this.notifier.removeAttribute("notification"); this.notifier.removeAttribute("in-bookmarks-toolbar"); this.button.removeAttribute("notification"); this.notifier.style.transform = ''; + this.button.style.removeProperty("pointer-events"); }, 1000); }, _showSubview: function() { let view = document.getElementById("PanelUI-bookmarks"); view.addEventListener("ViewShowing", this); view.addEventListener("ViewHiding", this); let anchor = document.getElementById(this.BOOKMARK_BUTTON_ID);
--- a/browser/themes/linux/browser.css +++ b/browser/themes/linux/browser.css @@ -169,20 +169,16 @@ toolbarpaletteitem[place="palette"] > #p animation: animation-bookmarkAdded 800ms; animation-timing-function: ease, ease, ease; } #bookmarked-notification-anchor[notification="finish"][in-bookmarks-toolbar=true] > #bookmarked-notification { animation: animation-bookmarkAddedToBookmarksBar 800ms; } -#bookmarks-menu-button[notification="finish"] { - pointer-events: none; -} - #bookmarks-menu-button[notification="finish"] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon { animation: animation-bookmarkPulse 300ms; animation-delay: 600ms; animation-timing-function: ease-out; } /* Bookmark menus */ menu.bookmark-item,
--- a/browser/themes/osx/browser.css +++ b/browser/themes/osx/browser.css @@ -399,30 +399,22 @@ toolbarpaletteitem[place="palette"] > #p } #bookmarked-notification-anchor[notification="finish"] > #bookmarked-notification { background-image: url("chrome://browser/skin/places/bookmarks-notification-finish.png"); animation: animation-bookmarkAdded 800ms; animation-timing-function: ease, ease, ease; } -#bookmarked-notification-anchor[notification="finish"][in-bookmarks-toolbar=true] > #bookmarked-notification { - animation: animation-bookmarkAdded 800ms; -} - @media (min-resolution: 2dppx) { #bookmarked-notification-anchor[notification="finish"] > #bookmarked-notification { background-image: url("chrome://browser/skin/places/bookmarks-notification-finish@2x.png"); } } -#bookmarks-menu-button[notification="finish"] { - pointer-events: none; -} - #bookmarks-menu-button[notification="finish"] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon { animation: animation-bookmarkPulse 300ms; animation-delay: 600ms; animation-timing-function: ease-out; } /* ----- BOOKMARK MENUS ----- */
--- a/browser/themes/windows/browser.css +++ b/browser/themes/windows/browser.css @@ -359,20 +359,16 @@ toolbarpaletteitem[place="palette"] > #p } #bookmarked-notification-anchor[notification="finish"] > #bookmarked-notification { background-image: url("chrome://browser/skin/places/bookmarks-notification-finish.png"); animation: animation-bookmarkAdded 800ms; animation-timing-function: ease, ease, ease; } -#bookmarks-menu-button[notification="finish"] { - pointer-events: none; -} - #bookmarks-menu-button[notification="finish"] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon { animation: animation-bookmarkPulse 300ms; animation-delay: 600ms; animation-timing-function: ease-out; } /* ::::: bookmark menus ::::: */