зеркало из 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;
|
uri = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let msg = {topic: "UpdateActiveItem", url: null};
|
||||||
if (!uri) {
|
if (!uri) {
|
||||||
this.toolbarButton.setAttribute("hidden", true);
|
this.toolbarButton.setAttribute("hidden", true);
|
||||||
|
if (this.isSidebarOpen)
|
||||||
|
document.getElementById("sidebar").contentWindow.postMessage(msg, "*");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let isInList = yield ReadingList.containsURL(uri);
|
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);
|
this.setToolbarButtonState(isInList);
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
@ -317,6 +325,10 @@ let ReadingListUI = {
|
||||||
onItemAdded(item) {
|
onItemAdded(item) {
|
||||||
if (this.isItemForCurrentBrowser(item)) {
|
if (this.isItemForCurrentBrowser(item)) {
|
||||||
this.setToolbarButtonState(true);
|
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("mousemove", event => this.onListMouseMove(event));
|
||||||
this.list.addEventListener("keydown", event => this.onListKeyDown(event), true);
|
this.list.addEventListener("keydown", event => this.onListKeyDown(event), true);
|
||||||
|
|
||||||
|
window.addEventListener("message", event => this.onMessage(event));
|
||||||
|
|
||||||
this.listPromise = this.ensureListItems();
|
this.listPromise = this.ensureListItems();
|
||||||
ReadingList.addListener(this);
|
ReadingList.addListener(this);
|
||||||
|
|
||||||
|
@ -186,15 +188,9 @@ let RLSidebar = {
|
||||||
|
|
||||||
log.debug(`Setting activeItem: ${node ? node.id : null}`);
|
log.debug(`Setting activeItem: ${node ? node.id : null}`);
|
||||||
|
|
||||||
if (node) {
|
if (node && node.classList.contains("active")) {
|
||||||
if (!node.classList.contains("selected")) {
|
|
||||||
this.selectedItem = node;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (node.classList.contains("active")) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
let prevItem = document.querySelector("#list > .item.active");
|
let prevItem = document.querySelector("#list > .item.active");
|
||||||
if (prevItem) {
|
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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче