[Kst] extragear/graphics/kst/src/libkstapp

Andrew Walker arwalker at sumusltd.com
Tue Jun 13 19:51:23 CEST 2006


SVN commit 551110 by arwalker:

BUG:129101 Do not assume a listbox has a selected entry. Do not equate the current item with being selected.

 M  +33 -13    kstcurvedifferentiate_i.cpp  


--- trunk/extragear/graphics/kst/src/libkstapp/kstcurvedifferentiate_i.cpp #551109:551110
@@ -81,6 +81,7 @@
   
 }
 
+
 void KstCurveDifferentiateI::updateCurveDifferentiate() {
   updateButtons();
 }
@@ -92,11 +93,25 @@
   raise();
 }
 
+
 void KstCurveDifferentiateI::updateButtons() {
-  _remove->setEnabled(selectedListBox->currentItem() >= 0);
-  _add->setEnabled(availableListBox->currentItem() >= 0);
+  int i = selectedListBox->currentItem();
+  if (i >= 0 && selectedListBox->isSelected(i)) {
+    _remove->setEnabled(true); 
+  } else {
+    _remove->setEnabled(false);
+  }
+  
+  i = availableListBox->currentItem();
+  if (i >= 0 && availableListBox->isSelected(i)) {
+    _add->setEnabled(true); 
+  } else {
+    _add->setEnabled(false);
+  }
+
   _up->setEnabled(selectedListBox->currentItem() > 0);
-  _down->setEnabled(selectedListBox->currentItem() < (int)selectedListBox->count() - 1);
+  _down->setEnabled(selectedListBox->currentItem() >= 0 &&
+                    selectedListBox->currentItem() < (int)selectedListBox->count() - 1);
 }
 
 
@@ -170,6 +185,7 @@
   }
 }
 
+
 void KstCurveDifferentiateI::getOptions( ) {
   _lineColorOrder  = selectedListBox->index(selectedListBox->findItem(i18n("Line Color"), ExactMatch));
   _pointStyleOrder = selectedListBox->index(selectedListBox->findItem(i18n("Point Style"), ExactMatch));
@@ -213,22 +229,26 @@
 void KstCurveDifferentiateI::upButtonClicked() {
   // move item up
   int i = selectedListBox->currentItem();
-  QString text = selectedListBox->currentText();
-  selectedListBox->removeItem(i);
-  selectedListBox->insertItem(text, i-1);
-  selectedListBox->setSelected(i-1, true);
-  updateButtons();
+  if (i != -1) {
+    QString text = selectedListBox->currentText();
+    selectedListBox->removeItem(i);
+    selectedListBox->insertItem(text, i-1);
+    selectedListBox->setSelected(i-1, true);
+    updateButtons();
+  }
 }
 
 
 void KstCurveDifferentiateI::downButtonClicked() {
   // move item down
   int i = selectedListBox->currentItem();
-  QString text = selectedListBox->currentText();
-  selectedListBox->removeItem(i);
-  selectedListBox->insertItem(text, i+1);
-  selectedListBox->setSelected(i+1, true);
-  updateButtons();
+  if (i != -1) {
+    QString text = selectedListBox->currentText();
+    selectedListBox->removeItem(i);
+    selectedListBox->insertItem(text, i+1);
+    selectedListBox->setSelected(i+1, true);
+    updateButtons();
+  }
 }
 
 


More information about the Kst mailing list