Correctly replace edited entries and remove empty ones.
svn path=/trunk/kdebase/kwin/; revision=336015
This commit is contained in:
parent
524bdd61be
commit
4c7fcb58a7
1 changed files with 25 additions and 8 deletions
|
@ -140,18 +140,35 @@ static int edit( Window wid )
|
|||
{
|
||||
QValueList< Rules* > rules;
|
||||
loadRules( rules );
|
||||
Rules* rule = findRule( rules, wid );
|
||||
Rules* orig_rule = findRule( rules, wid );
|
||||
RulesDialog dlg;
|
||||
rule = dlg.edit( rule, wid );
|
||||
if( rule == NULL ) // cancelled
|
||||
// dlg.edit() creates new Rules instance
|
||||
Rules* edited_rule = dlg.edit( orig_rule, wid );
|
||||
if( edited_rule == NULL ) // cancelled
|
||||
return 0;
|
||||
if( rule->isEmpty())
|
||||
if( edited_rule->isEmpty())
|
||||
{
|
||||
delete rule;
|
||||
return 0;
|
||||
if( orig_rule == NULL )
|
||||
{ // new, without any settings
|
||||
delete edited_rule;
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{ // removed all settings from already existing
|
||||
rules.remove( orig_rule );
|
||||
delete orig_rule;
|
||||
delete edited_rule;
|
||||
}
|
||||
}
|
||||
else // not empty
|
||||
{
|
||||
QValueList< Rules* >::Iterator pos = rules.find( orig_rule );
|
||||
if( pos != rules.end())
|
||||
*pos = edited_rule;
|
||||
else
|
||||
rules.prepend( edited_rule );
|
||||
delete orig_rule;
|
||||
}
|
||||
if( !rules.contains( rule ))
|
||||
rules.prepend( rule );
|
||||
saveRules( rules );
|
||||
if( !kapp->dcopClient()->isAttached())
|
||||
kapp->dcopClient()->attach();
|
||||
|
|
Loading…
Reference in a new issue