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;
                }
        }

Reply via email to