Switch to HTML progress element for main window progress bar

In an unsuccessful attempt to get an animation on macOS in indeterminate
mode, but might as well switch it anyway
This commit is contained in:
Dan Stillman 2021-01-17 01:52:22 -05:00
parent e45ca4edad
commit a2dc7f23cd

View file

@ -1441,6 +1441,8 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
* @return void
*/
this.showZoteroPaneProgressMeter = function (msg, determinate, icon, modalOnly) {
const HTML_NS = "http://www.w3.org/1999/xhtml"
// If msg is undefined, keep any existing message. If false/null/"", clear.
// The message is also cleared when the meters are hidden.
_progressMessage = msg = (msg === undefined ? _progressMessage : msg) || "";
@ -1475,17 +1477,15 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
let id = 'zotero-pane-progressmeter';
let progressMeter = doc.getElementById(id);
if (!progressMeter) {
progressMeter = doc.createElement('progressmeter');
progressMeter = doc.createElementNS(HTML_NS, 'progress');
progressMeter.id = id;
}
progressMeter.setAttribute('mode', 'undetermined');
if (determinate) {
progressMeter.mode = 'determined';
progressMeter.value = 0;
progressMeter.setAttribute('value', 0);
progressMeter.max = 1000;
}
else {
progressMeter.mode = 'undetermined';
progressMeter.removeAttribute('value');
}
container.appendChild(progressMeter);
@ -1515,13 +1515,13 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
}
for (let pm of _progressMeters) {
if (percentage !== null) {
if (pm.mode == 'undetermined') {
if (!pm.hasAttribute('value')) {
pm.max = 1000;
pm.mode = 'determined';
}
pm.value = percentage;
} else if(pm.mode === 'determined') {
pm.mode = 'undetermined';
pm.setAttribute('value', percentage);
}
else if (pm.hasAttribute('value')) {
pm.removeAttribute('value');
}
}
_lastPercentage = percentage;