Don't deselect tags unnecessarily
https://forums.zotero.org/discussion/28842/
Related to 4e1fbf974
This commit is contained in:
parent
ef3a5755f8
commit
b01ae24f18
|
@ -40,7 +40,8 @@
|
|||
<field name="_notifierID">false</field>
|
||||
<field name="_tags">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"/>
|
||||
|
||||
<!-- Modes are predefined settings groups for particular tasks -->
|
||||
|
@ -206,7 +207,8 @@
|
|||
}
|
||||
|
||||
Zotero.debug('Refreshing tags selector');
|
||||
var empty = true;
|
||||
var emptyColored = true;
|
||||
var emptyRegular = true;
|
||||
var tagsToggleBox = this.id('tags-toggle');
|
||||
|
||||
var self = this;
|
||||
|
@ -340,7 +342,7 @@
|
|||
labels[i].className = 'zotero-clicky';
|
||||
labels[i].setAttribute('inScope', true);
|
||||
labels[i].setAttribute('hidden', false);
|
||||
empty = false;
|
||||
emptyRegular = false;
|
||||
}
|
||||
else {
|
||||
labels[i].className = '';
|
||||
|
@ -360,14 +362,7 @@
|
|||
}
|
||||
|
||||
labels[i].setAttribute('hidden', false);
|
||||
empty = 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;
|
||||
emptyRegular = false;
|
||||
}
|
||||
|
||||
// Always show colored tags at top, unless they
|
||||
|
@ -375,7 +370,7 @@
|
|||
if (colorData && (!self._search || inSearch)) {
|
||||
labels[i].setAttribute('hidden', false);
|
||||
labels[i].setAttribute('hasColor', true);
|
||||
empty = false;
|
||||
emptyColored = false;
|
||||
}
|
||||
else {
|
||||
labels[i].removeAttribute('hasColor');
|
||||
|
@ -451,15 +446,16 @@
|
|||
|
||||
//end tag cloud code
|
||||
|
||||
|
||||
self.updateNumSelected();
|
||||
self._empty = empty;
|
||||
self._emptyColored = emptyColored;
|
||||
self._emptyRegular = emptyRegular;
|
||||
var empty = emptyColored && emptyRegular;
|
||||
self.id('tags-toggle').setAttribute('collapsed', empty);
|
||||
self.id('no-tags-box').setAttribute('collapsed', !empty);
|
||||
|
||||
if (doCommand) {
|
||||
Zotero.debug('A selected tag went out of scope -- deselecting');
|
||||
self.doCommand();
|
||||
if (self.onRefresh) {
|
||||
self.onRefresh();
|
||||
self.onRefresh = null;
|
||||
}
|
||||
})
|
||||
.done();
|
||||
|
@ -564,14 +560,22 @@
|
|||
me.setSearch(false, true);
|
||||
}
|
||||
me._dirty = true;
|
||||
me.doCommand();
|
||||
|
||||
// If no tags visible after a delete, deselect all
|
||||
if ((event == 'remove' || event == 'delete') &&
|
||||
me._empty && me.getNumSelected()) {
|
||||
Zotero.debug('No tags visible after delete -- deselecting all');
|
||||
me.clearAll();
|
||||
}
|
||||
// This is a hack, but set this to run after the refresh,
|
||||
// since _emptyRegular isn't set until then
|
||||
me.onRefresh = function () {
|
||||
// If no regular tags visible after a delete, deselect all.
|
||||
// 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);
|
||||
this._notified = true;
|
||||
]]>
|
||||
|
|
Loading…
Reference in New Issue
Block a user