[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/kdeui/widgets
From:       Christoph Feck <christoph () maxiom ! de>
Date:       2010-11-28 19:44:35
Message-ID: 20101128194435.626A8AC8A3 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1201808 by cfeck:

Fix buttons' enabled() state not correctly updated

Common Qt4 porting regression: current != selected


 M  +25 -11    kactionselector.cpp  


--- trunk/KDE/kdelibs/kdeui/widgets/kactionselector.cpp #1201807:1201808
@@ -62,6 +62,12 @@
    */
   int insertionIndex( QListWidget *lb, KActionSelector::InsertionPolicy policy );
   
+  /**
+   @return the index of the first selected item in listbox @p lb.
+   If no item is selected, it will return -1.
+   */
+  int selectedRowIndex( QListWidget *lb );
+
   void buttonAddClicked();    
   void buttonRemoveClicked();
   void buttonUpClicked();
@@ -135,13 +141,12 @@
            this, SLOT(itemDoubleClicked(QListWidgetItem*)) );
   connect( d->selectedListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)),
            this, SLOT(itemDoubleClicked(QListWidgetItem*)) );
-  connect( d->availableListWidget, SIGNAL(itemChanged(QListWidgetItem*)),
-           this, SLOT(slotCurrentChanged(QListWidgetItem *)) );
-  connect( d->selectedListWidget, SIGNAL(itemChanged(QListWidgetItem*)),
-           this, SLOT(slotCurrentChanged(QListWidgetItem *)) );
+  connect( d->availableListWidget, SIGNAL(itemSelectionChanged()), this, \
SLOT(polish()) ); +  connect( d->selectedListWidget, SIGNAL(itemSelectionChanged()), \
this, SLOT(polish()) );  
   d->availableListWidget->installEventFilter( this );
   d->selectedListWidget->installEventFilter( this );
+  setButtonsEnabled();
 }
 
 KActionSelector::~KActionSelector()
@@ -257,11 +262,11 @@
 
 void KActionSelector::setButtonsEnabled()
 {
-  d->btnAdd->setEnabled( d->availableListWidget->currentRow() > -1 );
-  d->btnRemove->setEnabled( d->selectedListWidget->currentRow() > -1 );
-  d->btnUp->setEnabled( d->selectedListWidget->currentRow() > 0 );
-  d->btnDown->setEnabled( d->selectedListWidget->currentRow() > -1 &&
-                          d->selectedListWidget->currentRow() < \
d->selectedListWidget->count() - 1 ); +  d->btnAdd->setEnabled( \
d->selectedRowIndex(d->availableListWidget) > -1 ); +  d->btnRemove->setEnabled( \
d->selectedRowIndex(d->selectedListWidget) > -1 ); +  d->btnUp->setEnabled( \
d->selectedRowIndex(d->selectedListWidget) > 0 ); +  d->btnDown->setEnabled( \
d->selectedRowIndex(d->selectedListWidget) > -1 && +                          \
d->selectedRowIndex(d->selectedListWidget) < d->selectedListWidget->count() - 1 );  }
 
 //END Public Methods
@@ -464,7 +469,7 @@
 
 void KActionSelectorPrivate::buttonUpClicked()
 {
-  int c = selectedListWidget->currentRow();
+  int c = selectedRowIndex(selectedListWidget);
   if ( c < 1 ) return;
   QListWidgetItem *item = selectedListWidget->item( c );
   selectedListWidget->takeItem( c );
@@ -475,7 +480,7 @@
 
 void KActionSelectorPrivate::buttonDownClicked()
 {
-  int c = selectedListWidget->currentRow();
+  int c = selectedRowIndex(selectedListWidget);
   if ( c < 0 || c == selectedListWidget->count() - 1 ) return;
   QListWidgetItem *item = selectedListWidget->item( c );
   selectedListWidget->takeItem( c );
@@ -547,5 +552,14 @@
   return index;
 }
 
+int KActionSelectorPrivate::selectedRowIndex( QListWidget *lb )
+{
+  QList<QListWidgetItem *> list = lb->selectedItems();
+  if (list.isEmpty()) {
+      return -1;
+  }
+  return lb->row(list.at(0));
+}
+
 //END Private Methods
 #include "kactionselector.moc"


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic