Don't deselect tags unnecessarily
https://forums.zotero.org/discussion/28842/
Related to 4e1fbf974
This commit is contained in:
parent
ef3a5755f8
commit
b01ae24f18
1 changed files with 28 additions and 24 deletions
|
@ -40,7 +40,8 @@
|
||||||
<field name="_notifierID">false</field>
|
<field name="_notifierID">false</field>
|
||||||
<field name="_tags">null</field>
|
<field name="_tags">null</field>
|
||||||
<field name="_dirty">null</field>
|
<field name="_dirty">null</field>
|
||||||
<field name="_empty">null</field>
|
<field name="_emptyColored">null</field>
|
||||||
|
<field name="_emptyRegular">null</field>
|
||||||
<field name="selection"/>
|
<field name="selection"/>
|
||||||
|
|
||||||
<!-- Modes are predefined settings groups for particular tasks -->
|
<!-- Modes are predefined settings groups for particular tasks -->
|
||||||
|
@ -206,7 +207,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
Zotero.debug('Refreshing tags selector');
|
Zotero.debug('Refreshing tags selector');
|
||||||
var empty = true;
|
var emptyColored = true;
|
||||||
|
var emptyRegular = true;
|
||||||
var tagsToggleBox = this.id('tags-toggle');
|
var tagsToggleBox = this.id('tags-toggle');
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -340,7 +342,7 @@
|
||||||
labels[i].className = 'zotero-clicky';
|
labels[i].className = 'zotero-clicky';
|
||||||
labels[i].setAttribute('inScope', true);
|
labels[i].setAttribute('inScope', true);
|
||||||
labels[i].setAttribute('hidden', false);
|
labels[i].setAttribute('hidden', false);
|
||||||
empty = false;
|
emptyRegular = false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
labels[i].className = '';
|
labels[i].className = '';
|
||||||
|
@ -360,14 +362,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
labels[i].setAttribute('hidden', false);
|
labels[i].setAttribute('hidden', false);
|
||||||
empty = false;
|
emptyRegular = false;
|
||||||
}
|
|
||||||
|
|
||||||
// If tag isn't in scope and is still selected, deselect it
|
|
||||||
if (labels[i].getAttribute('hidden') == 'true' && self.selection[name]) {
|
|
||||||
labels[i].setAttribute('selected', false);
|
|
||||||
delete self.selection[name];
|
|
||||||
var doCommand = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Always show colored tags at top, unless they
|
// Always show colored tags at top, unless they
|
||||||
|
@ -375,7 +370,7 @@
|
||||||
if (colorData && (!self._search || inSearch)) {
|
if (colorData && (!self._search || inSearch)) {
|
||||||
labels[i].setAttribute('hidden', false);
|
labels[i].setAttribute('hidden', false);
|
||||||
labels[i].setAttribute('hasColor', true);
|
labels[i].setAttribute('hasColor', true);
|
||||||
empty = false;
|
emptyColored = false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
labels[i].removeAttribute('hasColor');
|
labels[i].removeAttribute('hasColor');
|
||||||
|
@ -451,15 +446,16 @@
|
||||||
|
|
||||||
//end tag cloud code
|
//end tag cloud code
|
||||||
|
|
||||||
|
|
||||||
self.updateNumSelected();
|
self.updateNumSelected();
|
||||||
self._empty = empty;
|
self._emptyColored = emptyColored;
|
||||||
|
self._emptyRegular = emptyRegular;
|
||||||
|
var empty = emptyColored && emptyRegular;
|
||||||
self.id('tags-toggle').setAttribute('collapsed', empty);
|
self.id('tags-toggle').setAttribute('collapsed', empty);
|
||||||
self.id('no-tags-box').setAttribute('collapsed', !empty);
|
self.id('no-tags-box').setAttribute('collapsed', !empty);
|
||||||
|
|
||||||
if (doCommand) {
|
if (self.onRefresh) {
|
||||||
Zotero.debug('A selected tag went out of scope -- deselecting');
|
self.onRefresh();
|
||||||
self.doCommand();
|
self.onRefresh = null;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.done();
|
.done();
|
||||||
|
@ -564,14 +560,22 @@
|
||||||
me.setSearch(false, true);
|
me.setSearch(false, true);
|
||||||
}
|
}
|
||||||
me._dirty = true;
|
me._dirty = true;
|
||||||
me.doCommand();
|
|
||||||
|
|
||||||
// If no tags visible after a delete, deselect all
|
// This is a hack, but set this to run after the refresh,
|
||||||
if ((event == 'remove' || event == 'delete') &&
|
// since _emptyRegular isn't set until then
|
||||||
me._empty && me.getNumSelected()) {
|
me.onRefresh = function () {
|
||||||
Zotero.debug('No tags visible after delete -- deselecting all');
|
// If no regular tags visible after a delete, deselect all.
|
||||||
me.clearAll();
|
// This is necessary so that a selected tag that's removed
|
||||||
}
|
// from its last item doesn't cause all regular tags to
|
||||||
|
// disappear without anything being visibly selected.
|
||||||
|
if ((event == 'remove' || event == 'delete') &&
|
||||||
|
me._emptyRegular && me.getNumSelected()) {
|
||||||
|
Zotero.debug('No tags visible after delete -- deselecting all');
|
||||||
|
me.clearAll();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
me.doCommand();
|
||||||
}, 0);
|
}, 0);
|
||||||
this._notified = true;
|
this._notified = true;
|
||||||
]]>
|
]]>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue