Skip to content

Instantly share code, notes, and snippets.

@darrinhenein
Last active August 29, 2015 13:55
Show Gist options
  • Save darrinhenein/8690084 to your computer and use it in GitHub Desktop.
Save darrinhenein/8690084 to your computer and use it in GitHub Desktop.
Bookmark Animation Patch
# HG changeset patch
# Parent 85b7689257760bf80e31ba3030291899f05e06eb
# User Darrin Henein <dhenein@mozilla.com>
Bug 931343: Australis - Implement bookmarking animation.
diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -948,16 +948,22 @@ let BookmarkingUI = {
if (widget.overflowed)
return widget.anchor;
let star = this.star;
return star && document.getAnonymousElementByAttribute(star, "class",
"toolbarbutton-icon");
},
+ get notifier()
+ {
+ return this._notifier ||
+ (this._notifier = document.getElementById("bookmarked-notification-anchor"));
+ },
+
STATUS_UPDATING: -1,
STATUS_UNSTARRED: 0,
STATUS_STARRED: 1,
get status() {
if (this._pendingStmt)
return this.STATUS_UPDATING;
let button = this.button;
return button && button.hasAttribute("starred") ? this.STATUS_STARRED
@@ -1155,45 +1161,90 @@ let BookmarkingUI = {
button.setAttribute("buttontooltiptext", this._starredTooltip);
}
else {
button.removeAttribute("starred");
button.setAttribute("buttontooltiptext", this._unstarredTooltip);
}
},
+ _showBookmarkedAnimation: function BUI_showBookmarkedAnimation() {
+
+ if (this._notificationTimeout) {
+ clearTimeout(this._notificationTimeout);
+ }
+
+ let notifier = this.notifier;
+ let button = this.button;
+
+ if (notifier.style.transform == '') {
+ let buttonRect = button.getBoundingClientRect();
+ let notifierRect = notifier.getBoundingClientRect();
+ let topDiff = buttonRect.top - notifierRect.top;
+ let leftDiff = buttonRect.left - notifierRect.left;
+ let heightDiff = buttonRect.height - notifierRect.height;
+ let widthDiff = buttonRect.width - notifierRect.width;
+ let translateX = (leftDiff + .5 * widthDiff) + "px";
+ let translateY = (topDiff + .5 * heightDiff) + "px";
+ notifier.style.transform = "translate(" + translateX + ", " + translateY + ")";
+ }
+
+ let isInOverflowPanel = button.classList.contains("overflowedItem");
+ let isInBookmarksBar = button.classList.contains("bookmark-item");
+
+ if(isInBookmarksBar) notifier.setAttribute("bookmarks-bar", true);
+
+ if(!isInOverflowPanel) {
+ notifier.setAttribute("notification", "finish");
+ button.setAttribute("notification", "finish");
+ }
+
+ this._notificationTimeout = setTimeout(function () {
+ notifier.removeAttribute("notification");
+ notifier.removeAttribute("bookmarks-bar");
+ button.removeAttribute("notification");
+ notifier.style.transform = '';
+ }, 1000);
+ },
+
onCommand: function BUI_onCommand(aEvent) {
if (aEvent.target != aEvent.currentTarget) {
return;
}
// Handle special case when the button is in the panel.
let widgetGroup = CustomizableUI.getWidget("bookmarks-menu-button");
let widget = widgetGroup.forWindow(window);
+ let isBookmarked = this._itemIds.length > 0;
+
if (widgetGroup.areaType == CustomizableUI.TYPE_MENU_PANEL) {
let view = document.getElementById("PanelUI-bookmarks");
view.addEventListener("ViewShowing", this.onPanelMenuViewShowing);
view.addEventListener("ViewHiding", this.onPanelMenuViewHiding);
widget.node.setAttribute("noautoclose", "true");
PanelUI.showSubView("PanelUI-bookmarks", widget.node,
CustomizableUI.AREA_PANEL);
return;
}
else if (widget.overflowed) {
// Allow to close the panel if the page is already bookmarked, cause
// we are going to open the edit bookmark panel.
- if (this._itemIds.length > 0)
+
+ if (isBookmarked)
widget.node.removeAttribute("noautoclose");
else
widget.node.setAttribute("noautoclose", "true");
}
// Ignore clicks on the star if we are updating its state.
if (!this._pendingStmt) {
- PlacesCommandHook.bookmarkCurrentPage(this._itemIds.length > 0);
+ if (!isBookmarked)
+ this._showBookmarkedAnimation();
+
+ PlacesCommandHook.bookmarkCurrentPage(isBookmarked);
}
},
onPanelMenuViewShowing: function BUI_onViewShowing(aEvent) {
// Update checked status of the toolbar toggle.
let viewToolbar = document.getElementById("panelMenu_viewBookmarksToolbar");
let personalToolbar = document.getElementById("PersonalToolbar");
if (personalToolbar.collapsed)
diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -407,16 +407,22 @@
#include ../../components/customizableui/content/panelUI.inc.xul
<hbox id="downloads-animation-container" mousethrough="always">
<vbox id="downloads-notification-anchor">
<vbox id="downloads-indicator-notification"/>
</vbox>
</hbox>
+
+ <hbox id="bookmarked-notification-container" mousethrough="always">
+ <vbox id="bookmarked-notification-anchor">
+ <vbox id="bookmarked-notification"/>
+ </vbox>
+ </hbox>
</popupset>
#ifdef CAN_DRAW_IN_TITLEBAR
<vbox id="titlebar">
<hbox id="titlebar-content">
<spacer id="titlebar-spacer" flex="1"/>
<hbox id="titlebar-buttonbox-container">
<hbox id="titlebar-buttonbox">
diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css
--- a/browser/themes/linux/browser.css
+++ b/browser/themes/linux/browser.css
@@ -112,16 +112,72 @@ toolbarbutton.bookmark-item[open="true"]
list-style-image: url("chrome://browser/skin/places/bookmarksToolbar.png") !important;
}
toolbarpaletteitem[place="palette"] > #personal-bookmarks > #bookmarks-toolbar-placeholder,
#personal-bookmarks[cui-areatype="menu-panel"] > #bookmarks-toolbar-placeholder {
list-style-image: url("chrome://browser/skin/places/bookmarksToolbar-menuPanel.png") !important;
}
+/* ----- BOOKMARK STAR ANIMATION ----- */
+
+@keyframes animation-bookmarkAdded {
+ from { transform: rotate(0deg) translateX(-20px) rotate(0deg) scale(1); opacity: 0; }
+ 60% { transform: rotate(180deg) translateX(-20px) rotate(-180deg) scale(2.2); opacity: 1; }
+ 80% { opacity: 1; }
+ to { transform: rotate(180deg) translateX(-20px) rotate(-180deg) scale(1); opacity: 0; }
+}
+
+@keyframes animation-bookmarkAddedToBookmarksBar {
+ from { transform: rotate(0deg) translateX(-12px) rotate(0deg) scale(1); opacity: 0; }
+ 60% { transform: rotate(180deg) translateX(-12px) rotate(-180deg) scale(2.2); opacity: 1; }
+ 80% { opacity: 1; }
+ to { transform: rotate(180deg) translateX(-12px) rotate(-180deg) scale(1); opacity: 0; }
+}
+
+@keyframes animation-bookmarkPulse {
+ from { transform: scale(1); }
+ 50% { transform: scale(1.3); }
+ to { transform: scale(1); }
+}
+
+#bookmarked-notification-container {
+ min-height: 1px;
+ min-width: 1px;
+ height: 1px;
+ margin-bottom: -1px;
+ z-index: 5;
+ position: relative;
+}
+
+#bookmarked-notification {
+ background-size: 16px;
+ background-position: center;
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+ opacity: 0;
+}
+
+#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 linear;
+}
+
+#bookmarked-notification-anchor[notification="finish"][bookmarks-bar=true] > #bookmarked-notification {
+ animation: animation-bookmarkAddedToBookmarksBar 800ms;
+}
+
+#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,
menuitem.bookmark-item {
min-width: 0;
max-width: 32em;
}
.bookmark-item > .menu-iconic-left {
@@ -1924,9 +1980,9 @@ chatbox {
#main-window[privatebrowsingmode=temporary] #TabsToolbar::before {
display: -moz-box;
content: "";
background: url("chrome://browser/skin/privatebrowsing-mask.png") center no-repeat;
width: 40px;
}
-%include ../shared/UITour.inc.css
+%include ../shared/UITour.inc.css
\ No newline at end of file
diff --git a/browser/themes/linux/jar.mn b/browser/themes/linux/jar.mn
--- a/browser/themes/linux/jar.mn
+++ b/browser/themes/linux/jar.mn
@@ -88,16 +88,17 @@ browser.jar:
skin/classic/browser/feeds/audioFeedIcon.png (feeds/feedIcon.png)
skin/classic/browser/feeds/audioFeedIcon16.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/places/bookmarksMenu.png (places/bookmarksMenu.png)
skin/classic/browser/places/bookmarksToolbar.png (places/bookmarksToolbar.png)
+ skin/classic/browser/places/bookmarks-notification-finish.png (places/bookmarks-notification-finish.png)
skin/classic/browser/places/bookmarksToolbar-menuPanel.png (places/bookmarksToolbar-menuPanel.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/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)
diff --git a/browser/themes/linux/places/bookmarks-notification-finish.png b/browser/themes/linux/places/bookmarks-notification-finish.png
new file mode 100644
index 0000000000000000000000000000000000000000..2dc77f40822399d5dae035273db73b8b1d10ad61
GIT binary patch
literal 2905
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
DneU9e
diff --git a/browser/themes/osx/browser.css b/browser/themes/osx/browser.css
--- a/browser/themes/osx/browser.css
+++ b/browser/themes/osx/browser.css
@@ -356,16 +356,78 @@ toolbarpaletteitem[place="palette"] > #p
list-style-image: url("chrome://browser/skin/places/bookmarksToolbar-menuPanel@2x.png") !important;
}
#bookmarks-toolbar-placeholder > .toolbarbutton-icon {
width: 16px;
}
}
+/* ----- BOOKMARK STAR ANIMATION ----- */
+
+@keyframes animation-bookmarkAdded {
+ from { transform: rotate(0deg) translateX(-20px) rotate(0deg) scale(1); opacity: 0; }
+ 60% { transform: rotate(180deg) translateX(-20px) rotate(-180deg) scale(2.2); opacity: 1; }
+ 80% { opacity: 1; }
+ to { transform: rotate(180deg) translateX(-20px) rotate(-180deg) scale(1); opacity: 0; }
+}
+
+@keyframes animation-bookmarkAddedToBookmarksBar {
+ from { transform: rotate(0deg) translateX(-12px) rotate(0deg) scale(1); opacity: 0; }
+ 60% { transform: rotate(180deg) translateX(-12px) rotate(-180deg) scale(2.2); opacity: 1; }
+ 80% { opacity: 1; }
+ to { transform: rotate(180deg) translateX(-12px) rotate(-180deg) scale(1); opacity: 0; }
+}
+
+@keyframes animation-bookmarkPulse {
+ from { transform: scale(1); }
+ 50% { transform: scale(1.3); }
+ to { transform: scale(1); }
+}
+
+#bookmarked-notification-container {
+ min-height: 1px;
+ min-width: 1px;
+ height: 1px;
+ margin-bottom: -1px;
+ z-index: 5;
+ position: relative;
+}
+
+#bookmarked-notification {
+ background-size: 16px;
+ background-position: center;
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+ opacity: 0;
+}
+
+#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 linear;
+}
+
+#bookmarked-notification-anchor[notification="finish"][bookmarks-bar=true] > #bookmarked-notification {
+ animation: animation-bookmarkAddedToBookmarksBar 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"] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
+ animation: animation-bookmarkPulse 300ms;
+ animation-delay: 600ms;
+ animation-timing-function: ease-out;
+}
+
/* ----- BOOKMARK MENUS ----- */
.bookmark-item > .menu-iconic-left > .menu-iconic-icon {
width: 16px;
height: 16px;
}
#bookmarksToolbarFolderMenu,
diff --git a/browser/themes/osx/jar.mn b/browser/themes/osx/jar.mn
--- a/browser/themes/osx/jar.mn
+++ b/browser/themes/osx/jar.mn
@@ -147,16 +147,18 @@ browser.jar:
skin/classic/browser/places/allBookmarks.png (places/allBookmarks.png)
* skin/classic/browser/places/places.css (places/places.css)
* skin/classic/browser/places/organizer.css (places/organizer.css)
skin/classic/browser/places/query.png (places/query.png)
skin/classic/browser/places/query@2x.png (places/query@2x.png)
skin/classic/browser/places/bookmarksMenu.png (places/bookmarksMenu.png)
skin/classic/browser/places/bookmarksToolbar.png (places/bookmarksToolbar.png)
skin/classic/browser/places/bookmarksToolbar@2x.png (places/bookmarksToolbar@2x.png)
+ skin/classic/browser/places/bookmarks-notification-finish.png (places/bookmarks-notification-finish.png)
+ skin/classic/browser/places/bookmarks-notification-finish@2x.png (places/bookmarks-notification-finish@2x.png)
skin/classic/browser/places/bookmarksToolbar-menuPanel.png (places/bookmarksToolbar-menuPanel.png)
skin/classic/browser/places/bookmarksToolbar-menuPanel@2x.png (places/bookmarksToolbar-menuPanel@2x.png)
skin/classic/browser/places/history.png (places/history.png)
skin/classic/browser/places/history@2x.png (places/history@2x.png)
skin/classic/browser/places/star-icons.png (places/star-icons.png)
skin/classic/browser/places/star-icons@2x.png (places/star-icons@2x.png)
skin/classic/browser/places/toolbar.png (places/toolbar.png)
skin/classic/browser/places/toolbarDropMarker.png (places/toolbarDropMarker.png)
diff --git a/browser/themes/osx/places/bookmarks-notification-finish.png b/browser/themes/osx/places/bookmarks-notification-finish.png
new file mode 100644
index 0000000000000000000000000000000000000000..2dc77f40822399d5dae035273db73b8b1d10ad61
GIT binary patch
literal 2905
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
DneU9e
diff --git a/browser/themes/osx/places/bookmarks-notification-finish@2x.png b/browser/themes/osx/places/bookmarks-notification-finish@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa00fd0e520400658331fa85bbc2898a0dfa657e
GIT binary patch
literal 7523
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
diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css
--- a/browser/themes/windows/browser.css
+++ b/browser/themes/windows/browser.css
@@ -313,16 +313,72 @@ toolbarbutton.bookmark-item[open="true"]
list-style-image: url("chrome://browser/skin/places/bookmarksToolbar.png") !important;
}
toolbarpaletteitem[place="palette"] > #personal-bookmarks > #bookmarks-toolbar-placeholder,
#personal-bookmarks[cui-areatype="menu-panel"] > #bookmarks-toolbar-placeholder {
list-style-image: url("chrome://browser/skin/places/bookmarksToolbar-menuPanel.png") !important;
}
+/* ----- BOOKMARK STAR ANIMATION ----- */
+
+@keyframes animation-bookmarkAdded {
+ from { transform: rotate(0deg) translateX(-16px) rotate(0deg) scale(1); opacity: 0; }
+ 60% { transform: rotate(180deg) translateX(-16px) rotate(-180deg) scale(2.2); opacity: 1; }
+ 80% { opacity: 1; }
+ to { transform: rotate(180deg) translateX(-16px) rotate(-180deg) scale(1); opacity: 0; }
+}
+
+@keyframes animation-bookmarkAddedToBookmarksBar {
+ from { transform: rotate(0deg) translateX(-8px) rotate(0deg) scale(1); opacity: 0; }
+ 60% { transform: rotate(180deg) translateX(-8px) rotate(-180deg) scale(2.2); opacity: 1; }
+ 80% { opacity: 1; }
+ to { transform: rotate(180deg) translateX(-8px) rotate(-180deg) scale(1); opacity: 0; }
+}
+
+@keyframes animation-bookmarkPulse {
+ from { transform: scale(1); }
+ 50% { transform: scale(1.3); }
+ to { transform: scale(1); }
+}
+
+#bookmarked-notification-container {
+ min-height: 1px;
+ min-width: 1px;
+ height: 1px;
+ margin-bottom: -1px;
+ z-index: 5;
+ position: relative;
+}
+
+#bookmarked-notification {
+ background-size: 16px;
+ background-position: center;
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+ opacity: 0;
+}
+
+#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 linear;
+}
+
+#bookmarked-notification-anchor[notification="finish"][bookmarks-bar=true] > #bookmarked-notification {
+ animation: animation-bookmarkAddedToBookmarksBar 800ms;
+}
+
+#bookmarked-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,
menuitem.bookmark-item {
min-width: 0;
max-width: 32em;
}
diff --git a/browser/themes/windows/jar.mn b/browser/themes/windows/jar.mn
--- a/browser/themes/windows/jar.mn
+++ b/browser/themes/windows/jar.mn
@@ -110,16 +110,17 @@ browser.jar:
skin/classic/browser/newtab/newTab.css (newtab/newTab.css)
skin/classic/browser/newtab/controls.png (newtab/controls.png)
skin/classic/browser/places/places.css (places/places.css)
* skin/classic/browser/places/organizer.css (places/organizer.css)
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/bookmarks-notification-finish.png (places/bookmarks-notification-finish.png)
skin/classic/browser/places/bookmarksToolbar-menuPanel.png (places/bookmarksToolbar-menuPanel.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)
skin/classic/browser/places/starred48.png (places/starred48.png)
skin/classic/browser/places/unstarred48.png (places/unstarred48.png)
skin/classic/browser/places/tag.png (places/tag.png)
@@ -427,16 +428,17 @@ browser.jar:
skin/classic/aero/browser/newtab/newTab.css (newtab/newTab.css)
skin/classic/aero/browser/newtab/controls.png (newtab/controls.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/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/bookmarks-notification-finish.png (places/bookmarks-notification-finish.png)
skin/classic/aero/browser/places/bookmarksToolbar-menuPanel.png (places/bookmarksToolbar-menuPanel-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)
skin/classic/aero/browser/places/unstarred48.png (places/unstarred48.png)
skin/classic/aero/browser/places/tag.png (places/tag-aero.png)
diff --git a/browser/themes/windows/places/bookmarks-notification-finish.png b/browser/themes/windows/places/bookmarks-notification-finish.png
new file mode 100644
index 0000000000000000000000000000000000000000..2dc77f40822399d5dae035273db73b8b1d10ad61
GIT binary patch
literal 2905
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
DneU9e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment