Thanks for your helpful criticism Angus ! thanks john -- "The Internet is a shallow and unreliable electronic repository of dirty pictures, inaccurate rumors, bad spelling and worse grammar, inhabited largely by people with no demonstrable social skills." - Chronicle of Higher Education
Index: ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/ChangeLog,v retrieving revision 1.580 diff -u -r1.580 ChangeLog --- ChangeLog 2000/10/04 09:54:30 1.580 +++ ChangeLog 2000/10/04 14:04:49 @@ -1,3 +1,8 @@ +2000-10-04 John Levon <[EMAIL PROTECTED]> + + * src/frontends/kde/FormCitation.C: make the dialog + behave more sensibly + 2000-10-04 Jean-Marc Lasgouttes <[EMAIL PROTECTED]> * src/frontends/xforms/Menubar_pimpl.C (create_submenu): use Index: src/frontends/kde/FormCitation.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/kde/FormCitation.C,v retrieving revision 1.2 diff -u -r1.2 FormCitation.C --- src/frontends/kde/FormCitation.C 2000/09/12 17:25:44 1.2 +++ src/frontends/kde/FormCitation.C 2000/10/04 14:04:51 @@ -72,13 +72,13 @@ void FormCitation::updateButtons() { - bool iskey,ischosenkey; - - iskey = !selectedKey.empty(); - ischosenkey = !selectedChosenKey.empty(); + bool ischosenkey = !selectedChosenKey.empty(); + vector<string>::const_iterator iter = + find(chosenkeys.begin(), chosenkeys.end(), selectedKey); + + dialog_->add->setEnabled(!selectedKey.empty() && iter == chosenkeys.end()); dialog_->remove->setEnabled(ischosenkey); - dialog_->add->setEnabled(iskey); dialog_->up->setEnabled(ischosenkey); dialog_->down->setEnabled(ischosenkey); } @@ -147,13 +147,13 @@ dialog_->chosen->setFocusPolicy(QWidget::NoFocus); dialog_->after->setFocusPolicy(QWidget::NoFocus); dialog_->buttonOk->setEnabled(false); - dialog_->buttonCancel->setText(_("Close")); + dialog_->buttonCancel->setText(_("&Close")); } else { dialog_->keys->setFocusPolicy(QWidget::StrongFocus); dialog_->chosen->setFocusPolicy(QWidget::StrongFocus); dialog_->after->setFocusPolicy(QWidget::StrongFocus); dialog_->buttonOk->setEnabled(true); - dialog_->buttonCancel->setText(_("Cancel")); + dialog_->buttonCancel->setText(_("&Cancel")); } } @@ -314,6 +314,12 @@ void FormCitation::select_key(const char *key) { + vector<string>::const_iterator iter = + find(chosenkeys.begin(), chosenkeys.end(), key); + + if (iter!=chosenkeys.end()) + return; + selectedKey.erase(); selectedKey = key; @@ -328,6 +334,12 @@ for (unsigned int i=0; i < keys.size(); i++) { if (keys[i].first==key) { dialog_->entry->setText(keys[i].second.c_str()); + dialog_->chosen->clearFocus(); + dialog_->chosen->clearSelection(); + dialog_->up->setEnabled(false); + dialog_->down->setEnabled(false); + dialog_->remove->setEnabled(false); + selectedChosenKey.erase(); break; } } @@ -346,6 +358,10 @@ if (keys[i].first==key) { if (keys[i].second.compare(dialog_->entry->text())) dialog_->entry->setText(keys[i].second.c_str()); + dialog_->keys->clearFocus(); + dialog_->keys->clearSelection(); + dialog_->add->setEnabled(false); + selectedKey.erase(); break; } }