Fix a selection bug. Use proper selection commands
Also, do not delete and recreate every list item when moving, just taking and reinserting. BUG: 187492 svn path=/trunk/KDE/kdebase/workspace/; revision=961918icc-effect-5.14.5
parent
9868b062c1
commit
e4a80093b3
|
@ -67,8 +67,8 @@ void KCMRulesList::activeChanged()
|
||||||
QListWidgetItem *item = rules_listbox->currentItem();
|
QListWidgetItem *item = rules_listbox->currentItem();
|
||||||
int itemRow = rules_listbox->row(item);
|
int itemRow = rules_listbox->row(item);
|
||||||
|
|
||||||
if( item != NULL )
|
if( item != NULL ) // make current==selected
|
||||||
item->setSelected( true ); // make current==selected
|
rules_listbox->setCurrentItem( item, QItemSelectionModel::ClearAndSelect );
|
||||||
modify_button->setEnabled( item != NULL );
|
modify_button->setEnabled( item != NULL );
|
||||||
delete_button->setEnabled( item != NULL );
|
delete_button->setEnabled( item != NULL );
|
||||||
moveup_button->setEnabled( item != NULL && itemRow > 0 );
|
moveup_button->setEnabled( item != NULL && itemRow > 0 );
|
||||||
|
@ -83,7 +83,7 @@ void KCMRulesList::newClicked()
|
||||||
return;
|
return;
|
||||||
int pos = rules_listbox->currentRow() + 1;
|
int pos = rules_listbox->currentRow() + 1;
|
||||||
rules_listbox->insertItem( pos , rule->description );
|
rules_listbox->insertItem( pos , rule->description );
|
||||||
rules_listbox->item(pos)->setSelected( true );
|
rules_listbox->setCurrentRow( pos, QItemSelectionModel::ClearAndSelect );
|
||||||
rules.insert( rules.begin() + pos, rule );
|
rules.insert( rules.begin() + pos, rule );
|
||||||
emit changed( true );
|
emit changed( true );
|
||||||
}
|
}
|
||||||
|
@ -118,10 +118,9 @@ void KCMRulesList::moveupClicked()
|
||||||
assert( pos != -1 );
|
assert( pos != -1 );
|
||||||
if( pos > 0 )
|
if( pos > 0 )
|
||||||
{
|
{
|
||||||
QString txt = rules_listbox->item(pos)->text();
|
QListWidgetItem * item = rules_listbox->takeItem( pos );
|
||||||
delete rules_listbox->takeItem( pos );
|
rules_listbox->insertItem( pos - 1 , item );
|
||||||
rules_listbox->insertItem( pos - 1 , txt );
|
rules_listbox->setCurrentItem( item, QItemSelectionModel::ClearAndSelect );
|
||||||
rules_listbox->item(pos-1)->setSelected( true );
|
|
||||||
Rules* rule = rules[ pos ];
|
Rules* rule = rules[ pos ];
|
||||||
rules[ pos ] = rules[ pos - 1 ];
|
rules[ pos ] = rules[ pos - 1 ];
|
||||||
rules[ pos - 1 ] = rule;
|
rules[ pos - 1 ] = rule;
|
||||||
|
@ -135,10 +134,9 @@ void KCMRulesList::movedownClicked()
|
||||||
assert( pos != -1 );
|
assert( pos != -1 );
|
||||||
if( pos < int( rules_listbox->count()) - 1 )
|
if( pos < int( rules_listbox->count()) - 1 )
|
||||||
{
|
{
|
||||||
QString txt = rules_listbox->item(pos)->text();
|
QListWidgetItem * item = rules_listbox->takeItem( pos );
|
||||||
delete rules_listbox->takeItem( pos );
|
rules_listbox->insertItem( pos + 1 , item );
|
||||||
rules_listbox->insertItem( pos + 1 , txt);
|
rules_listbox->setCurrentItem( item, QItemSelectionModel::ClearAndSelect );
|
||||||
rules_listbox->item(pos+1)->setSelected( true );
|
|
||||||
Rules* rule = rules[ pos ];
|
Rules* rule = rules[ pos ];
|
||||||
rules[ pos ] = rules[ pos + 1 ];
|
rules[ pos ] = rules[ pos + 1 ];
|
||||||
rules[ pos + 1 ] = rule;
|
rules[ pos + 1 ] = rule;
|
||||||
|
|
Loading…
Reference in New Issue