closes #1665, Single cursor position in addCitation dialog (thanks Frank!)
This commit is contained in:
parent
c0755b80ca
commit
13a3524f0c
|
@ -37,6 +37,7 @@ var Zotero_Citation_Dialog = new function () {
|
||||||
var _lastSelected = null;
|
var _lastSelected = null;
|
||||||
var _previewShown = false;
|
var _previewShown = false;
|
||||||
var _suppressNextTreeSelect = false;
|
var _suppressNextTreeSelect = false;
|
||||||
|
var _suppressNextListSelect = false;
|
||||||
var _locatorIndexArray = {};
|
var _locatorIndexArray = {};
|
||||||
var _locatorNameArray = {};
|
var _locatorNameArray = {};
|
||||||
var _autoRegeneratePref;
|
var _autoRegeneratePref;
|
||||||
|
@ -212,35 +213,48 @@ var Zotero_Citation_Dialog = new function () {
|
||||||
var hasBeenAdded = itemID && _itemData[itemID] !== undefined;
|
var hasBeenAdded = itemID && _itemData[itemID] !== undefined;
|
||||||
// disable boxes if item not added; otherwise, enable
|
// disable boxes if item not added; otherwise, enable
|
||||||
_itemSelected(hasBeenAdded ? itemID : false);
|
_itemSelected(hasBeenAdded ? itemID : false);
|
||||||
|
// turn off highlight in selected item list
|
||||||
|
_suppressNextListSelect = true;
|
||||||
|
document.getElementById("citation-list").selectedIndex = -1;
|
||||||
// disable adding nothing, or things already added
|
// disable adding nothing, or things already added
|
||||||
document.getElementById("add").disabled = !itemID || hasBeenAdded;
|
document.getElementById("add").disabled = !itemID || hasBeenAdded;
|
||||||
|
document.getElementById("remove").disabled = true;
|
||||||
|
document.getElementById("up").disabled = true;
|
||||||
|
document.getElementById("down").disabled = true;
|
||||||
} else {
|
} else {
|
||||||
_updateAccept();
|
_updateAccept();
|
||||||
_updatePreview();
|
_updatePreview();
|
||||||
}
|
}
|
||||||
_configListPosition(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* called when an item in the selected items list is clicked
|
* called when an item in the selected items list is clicked
|
||||||
*/
|
*/
|
||||||
function listItemSelected() {
|
function listItemSelected() {
|
||||||
|
if(_suppressNextListSelect) {
|
||||||
|
_suppressNextListSelect = false;
|
||||||
|
_updateAccept();
|
||||||
|
return;
|
||||||
|
}
|
||||||
var selectedListItem = _citationList.getSelectedItem(0);
|
var selectedListItem = _citationList.getSelectedItem(0);
|
||||||
|
var selectedListIndex = _citationList.selectedIndex;
|
||||||
var itemID = (selectedListItem ? selectedListItem.value : false);
|
var itemID = (selectedListItem ? selectedListItem.value : false);
|
||||||
_itemSelected(itemID);
|
_itemSelected(itemID);
|
||||||
_configListPosition(!itemID);
|
// turn off highlight in item tree
|
||||||
|
_suppressNextTreeSelect = true;
|
||||||
|
document.getElementById("zotero-items-tree").view.selection.clearSelection();
|
||||||
document.getElementById("remove").disabled = !itemID;
|
document.getElementById("remove").disabled = !itemID;
|
||||||
|
document.getElementById("add").disabled = true;
|
||||||
|
_configListPosition(!itemID, selectedListIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
function _configListPosition(flag) {
|
function _configListPosition(flag, selectedListIndex) {
|
||||||
var selectedIndex = _citationList.selectedIndex;
|
if (selectedListIndex > 0) {
|
||||||
if (selectedIndex > 0) {
|
|
||||||
document.getElementById("up").disabled = flag;
|
document.getElementById("up").disabled = flag;
|
||||||
} else {
|
} else {
|
||||||
document.getElementById("up").disabled = true;
|
document.getElementById("up").disabled = true;
|
||||||
}
|
}
|
||||||
if (selectedIndex < (_citationList.getRowCount() - 1)) {
|
if (-1 < selectedListIndex && selectedListIndex < (_citationList.getRowCount() - 1)) {
|
||||||
document.getElementById("down").disabled = flag;
|
document.getElementById("down").disabled = flag;
|
||||||
} else {
|
} else {
|
||||||
document.getElementById("down").disabled = true;
|
document.getElementById("down").disabled = true;
|
||||||
|
@ -256,8 +270,8 @@ var Zotero_Citation_Dialog = new function () {
|
||||||
|
|
||||||
var insertBeforeItem;
|
var insertBeforeItem;
|
||||||
var selectedListItem = _citationList.getSelectedItem(0);
|
var selectedListItem = _citationList.getSelectedItem(0);
|
||||||
var itemID = selectedListItem.value;
|
|
||||||
var selectedListIndex = _citationList.selectedIndex;
|
var selectedListIndex = _citationList.selectedIndex;
|
||||||
|
var itemID = selectedListItem.value;
|
||||||
if (direction === -1) {
|
if (direction === -1) {
|
||||||
insertBeforeItem = selectedListItem.previousSibling;
|
insertBeforeItem = selectedListItem.previousSibling;
|
||||||
} else {
|
} else {
|
||||||
|
@ -268,7 +282,7 @@ var Zotero_Citation_Dialog = new function () {
|
||||||
_citationList.selectedIndex = (selectedListIndex + direction);
|
_citationList.selectedIndex = (selectedListIndex + direction);
|
||||||
_itemSelected(itemID);
|
_itemSelected(itemID);
|
||||||
_updatePreview();
|
_updatePreview();
|
||||||
_configListPosition(false);
|
_configListPosition(false, (selectedListIndex + direction));
|
||||||
}
|
}
|
||||||
|
|
||||||
function up() {
|
function up() {
|
||||||
|
@ -286,8 +300,6 @@ var Zotero_Citation_Dialog = new function () {
|
||||||
var item = itemsView.getSelectedItems()[0]; // treeview from selectItemsDialog.js
|
var item = itemsView.getSelectedItems()[0]; // treeview from selectItemsDialog.js
|
||||||
_itemSelected(item.getID());
|
_itemSelected(item.getID());
|
||||||
_addItem(item);
|
_addItem(item);
|
||||||
_citationList.focus();
|
|
||||||
_citationList.selectedIndex = _citationList.getRowCount()-1;
|
|
||||||
|
|
||||||
// don't let someone select it again
|
// don't let someone select it again
|
||||||
document.getElementById("add").disabled = true;
|
document.getElementById("add").disabled = true;
|
||||||
|
@ -303,6 +315,7 @@ var Zotero_Citation_Dialog = new function () {
|
||||||
*/
|
*/
|
||||||
function remove() {
|
function remove() {
|
||||||
var selectedListItem = _citationList.getSelectedItem(0);
|
var selectedListItem = _citationList.getSelectedItem(0);
|
||||||
|
var selectedListIndex = _citationList.selectedIndex;
|
||||||
var itemID = selectedListItem.value;
|
var itemID = selectedListItem.value;
|
||||||
|
|
||||||
// remove from _itemData
|
// remove from _itemData
|
||||||
|
@ -310,19 +323,16 @@ var Zotero_Citation_Dialog = new function () {
|
||||||
_itemData[itemID] = undefined;
|
_itemData[itemID] = undefined;
|
||||||
_lastSelected = null;
|
_lastSelected = null;
|
||||||
|
|
||||||
// re-select currently selected in left pane
|
|
||||||
var itemIDs = itemsView.getSelectedItems(true); // treeview from selectItemsDialog.js
|
|
||||||
if(itemIDs.length) {
|
|
||||||
document.getElementById("zotero-items-tree").focus();
|
|
||||||
treeItemSelected();
|
|
||||||
}
|
|
||||||
|
|
||||||
// remove from list
|
// remove from list
|
||||||
_citationList.removeChild(selectedListItem);
|
_citationList.removeChild(selectedListItem);
|
||||||
|
|
||||||
|
if (selectedListIndex >= _citationList.getRowCount()) {
|
||||||
|
selectedListIndex = _citationList.getRowCount() - 1;
|
||||||
|
}
|
||||||
|
_citationList.selectedIndex = selectedListIndex;
|
||||||
|
|
||||||
_updateAccept();
|
_updateAccept();
|
||||||
_updatePreview();
|
_updatePreview();
|
||||||
treeItemSelected();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -579,7 +589,6 @@ var Zotero_Citation_Dialog = new function () {
|
||||||
itemNode.setAttribute("class", "listitem-iconic");
|
itemNode.setAttribute("class", "listitem-iconic");
|
||||||
itemNode.setAttribute("image", item.getImageSrc());
|
itemNode.setAttribute("image", item.getImageSrc());
|
||||||
_citationList.appendChild(itemNode);
|
_citationList.appendChild(itemNode);
|
||||||
_configListPosition(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue
Block a user