* Licence details can be found in the file COPYING.
*
* \author John Levon
+ * \author Jürgen Spitzmüller
*
* Full author contact details are available in file CREDITS.
*/
bcview().addReadOnly(dialog_->referenceED);
bcview().addReadOnly(dialog_->typeCO);
bcview().addReadOnly(dialog_->bufferCO);
+
+ restored_buffer_ = -1;
}
void QRef::update_contents()
{
InsetCommandParams const & params = controller().params();
-
+
+ int orig_type = dialog_->typeCO->currentItem();
+
dialog_->referenceED->setText(toqstr(params.getContents()));
dialog_->nameED->setText(toqstr(params.getOptions()));
dialog_->nameED->setReadOnly(!nameAllowed() && !readOnly());
-
- dialog_->typeCO->setCurrentItem(InsetRef::getType(params.getCmdName()));
+
+ // restore type settings for new insets
+ if (params.getContents().empty())
+ dialog_->typeCO->setCurrentItem(orig_type);
+ else
+ dialog_->typeCO->setCurrentItem(InsetRef::getType(params.getCmdName()));
dialog_->typeCO->setEnabled(typeAllowed() && !readOnly());
if (!typeAllowed())
dialog_->typeCO->setCurrentItem(0);
dialog_->sortCB->setChecked(sort_);
- int const orig = dialog_->bufferCO->currentItem();
// insert buffer list
dialog_->bufferCO->clear();
vector<string> const buffers = controller().getBufferList();
it != buffers.end(); ++it) {
dialog_->bufferCO->insertItem(toqstr(*it));
}
- if (orig != -1 && orig < dialog_->bufferCO->count())
- dialog_->bufferCO->setCurrentItem(orig);
+ // restore the buffer combo setting for new insets
+ if (params.getContents().empty() && restored_buffer_ != -1
+ && restored_buffer_ < dialog_->bufferCO->count())
+ dialog_->bufferCO->setCurrentItem(restored_buffer_);
else
dialog_->bufferCO->setCurrentItem(controller().getBufferNum());
params.setCmdName(InsetRef::getName(dialog_->typeCO->currentItem()));
params.setContents(fromqstr(dialog_->referenceED->text()));
params.setOptions(fromqstr(dialog_->nameED->text()));
+
+ restored_buffer_ = dialog_->bufferCO->currentItem();
}
void QRef::redoRefs()
{
+ int lastref = dialog_->refsLB->currentItem();
+
dialog_->refsLB->setAutoUpdate(false);
dialog_->refsLB->clear();
dialog_->refsLB->sort();
dialog_->referenceED->setText(tmp);
-
- for (unsigned int i = 0; i < dialog_->refsLB->count(); ++i) {
- if (tmp == dialog_->refsLB->text(i))
- dialog_->refsLB->setCurrentItem(i);
- }
+
+ // restore the last selection for new insets
+ if (tmp.isEmpty() && lastref != -1
+ && lastref < dialog_->refsLB->count())
+ dialog_->refsLB->setCurrentItem(lastref);
+ else
+ for (unsigned int i = 0; i < dialog_->refsLB->count(); ++i) {
+ if (tmp == dialog_->refsLB->text(i))
+ dialog_->refsLB->setCurrentItem(i);
+ }
dialog_->refsLB->setAutoUpdate(true);
dialog_->refsLB->update();