зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1144380 - active state on reading list sidebar persists after switching tabs, r=markh.
This commit is contained in:
Родитель
d48db7924b
Коммит
f87e13098f
|
@ -242,12 +242,20 @@ let ReadingListUI = {
|
|||
uri = null;
|
||||
}
|
||||
|
||||
let msg = {topic: "UpdateActiveItem", url: null};
|
||||
if (!uri) {
|
||||
this.toolbarButton.setAttribute("hidden", true);
|
||||
if (this.isSidebarOpen)
|
||||
document.getElementById("sidebar").contentWindow.postMessage(msg, "*");
|
||||
return;
|
||||
}
|
||||
|
||||
let isInList = yield ReadingList.containsURL(uri);
|
||||
if (this.isSidebarOpen) {
|
||||
if (isInList)
|
||||
msg.url = typeof uri == "string" ? uri : uri.spec;
|
||||
document.getElementById("sidebar").contentWindow.postMessage(msg, "*");
|
||||
}
|
||||
this.setToolbarButtonState(isInList);
|
||||
}),
|
||||
|
||||
|
@ -317,6 +325,10 @@ let ReadingListUI = {
|
|||
onItemAdded(item) {
|
||||
if (this.isItemForCurrentBrowser(item)) {
|
||||
this.setToolbarButtonState(true);
|
||||
if (this.isSidebarOpen) {
|
||||
let msg = {topic: "UpdateActiveItem", url: item.url};
|
||||
document.getElementById("sidebar").contentWindow.postMessage(msg, "*");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -61,6 +61,8 @@ let RLSidebar = {
|
|||
this.list.addEventListener("mousemove", event => this.onListMouseMove(event));
|
||||
this.list.addEventListener("keydown", event => this.onListKeyDown(event), true);
|
||||
|
||||
window.addEventListener("message", event => this.onMessage(event));
|
||||
|
||||
this.listPromise = this.ensureListItems();
|
||||
ReadingList.addListener(this);
|
||||
|
||||
|
@ -186,15 +188,9 @@ let RLSidebar = {
|
|||
|
||||
log.debug(`Setting activeItem: ${node ? node.id : null}`);
|
||||
|
||||
if (node) {
|
||||
if (!node.classList.contains("selected")) {
|
||||
this.selectedItem = node;
|
||||
}
|
||||
|
||||
if (node.classList.contains("active")) {
|
||||
if (node && node.classList.contains("active")) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
let prevItem = document.querySelector("#list > .item.active");
|
||||
if (prevItem) {
|
||||
|
@ -416,6 +412,26 @@ let RLSidebar = {
|
|||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Handle a message, typically sent from browser-readinglist.js
|
||||
* @param {Event} event - Triggering event.
|
||||
*/
|
||||
onMessage(event) {
|
||||
let msg = event.data;
|
||||
|
||||
if (msg.topic != "UpdateActiveItem") {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!msg.url) {
|
||||
this.activeItem = null;
|
||||
} else {
|
||||
ReadingList.getItemForURL(msg.url).then(item => {
|
||||
this.activeItem = this.itemNodesById.get(item.id);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче