-rw-r--r-- | inputmethods/handwriting/qimpenchar.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/inputmethods/handwriting/qimpenchar.cpp b/inputmethods/handwriting/qimpenchar.cpp index b83b2a4..96a0502 100644 --- a/inputmethods/handwriting/qimpenchar.cpp +++ b/inputmethods/handwriting/qimpenchar.cpp | |||
@@ -342,7 +342,8 @@ bool QIMPenCharSet::load( const QString &fn, Domain d ) | |||
342 | ds >> *pc; | 342 | ds >> *pc; |
343 | if ( d == User ) | 343 | if ( d == User ) |
344 | markDeleted( pc->character() ); // override system | 344 | markDeleted( pc->character() ); // override system |
345 | addChar( pc ); | 345 | if ( !pc->testFlag( QIMPenChar::Deleted ) ) |
346 | addChar( pc ); | ||
346 | } | 347 | } |
347 | if ( file.status() == IO_Ok ) | 348 | if ( file.status() == IO_Ok ) |
348 | ok = TRUE; | 349 | ok = TRUE; |
@@ -377,8 +378,21 @@ bool QIMPenCharSet::save( Domain d ) | |||
377 | QIMPenCharIterator ci( chars ); | 378 | QIMPenCharIterator ci( chars ); |
378 | for ( ; ci.current(); ++ci ) { | 379 | for ( ; ci.current(); ++ci ) { |
379 | QIMPenChar *pc = ci.current(); | 380 | QIMPenChar *pc = ci.current(); |
380 | if ( ( ( (d == System) && pc->testFlag( QIMPenChar::System ) ) || | 381 | /* |
381 | ( (d == User) && !pc->testFlag( QIMPenChar::System ) ) ) && | 382 | * If the Domain is System and the Char is marked System - OR |
383 | * the domain is User, the Char is User and it's not deleted - OR | ||
384 | * the domain is User, the Char is System and it is deleted - AND | ||
385 | * the character is not an automated Combined Character | ||
386 | * | ||
387 | * This is required to ensure that we don't save user defined chars that have been deleted, but | ||
388 | * we *DO* save System chars that have been deleted. There is still the issue of deleted combined | ||
389 | * chars but I'm not sure how to tackle that yet | ||
390 | * | ||
391 | */ | ||
392 | |||
393 | if ( ( ( (d == System) && pc->testFlag( QIMPenChar::System ) ) || | ||
394 | ( (d == User) && !pc->testFlag( QIMPenChar::System ) && !pc->testFlag( QIMPenChar::Deleted ) ) || | ||
395 | ( (d == User) && pc->testFlag( QIMPenChar::System ) && pc->testFlag( QIMPenChar::Deleted ) ) ) && | ||
382 | ( !pc->testFlag (QIMPenChar::Combined ) ) ) { | 396 | ( !pc->testFlag (QIMPenChar::Combined ) ) ) { |
383 | ds << *pc; | 397 | ds << *pc; |
384 | } | 398 | } |