diff options
author | julien2412 <serval2412@yahoo.fr> | 2011-10-24 14:46:13 +0200 |
---|---|---|
committer | Petr Mladek <pmladek@suse.cz> | 2011-10-24 15:48:27 +0200 |
commit | ee26becc4a5690840fd3181b71d293340853b58e (patch) | |
tree | 3ab5bd949d4ffb4e258b71a34eb34177a32bdddb | |
parent | 4c2b93d96689f62c24ebdb2d4e87ac08d51ed53a (diff) |
activation order crashes address database (fdo#41022)
Signed-off-by: Petr Mladek <pmladek@suse.cz>
-rw-r--r-- | toolkit/source/controls/stdtabcontroller.cxx | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/toolkit/source/controls/stdtabcontroller.cxx b/toolkit/source/controls/stdtabcontroller.cxx index d5c2f06ef6..2fecd4dd0e 100644 --- a/toolkit/source/controls/stdtabcontroller.cxx +++ b/toolkit/source/controls/stdtabcontroller.cxx @@ -262,6 +262,7 @@ void StdTabController::autoTabOrder( ) throw(RuntimeException) sal_uInt32 nCtrls = aCompSeq.getLength(); Reference< XWindow > * pComponents = aCompSeq.getArray(); + // insert sort algorithm ComponentEntryList aCtrls; size_t n; for ( n = 0; n < nCtrls; n++ ) @@ -277,15 +278,9 @@ void StdTabController::autoTabOrder( ) throw(RuntimeException) for ( nPos = 0; nPos < aCtrls.size(); nPos++ ) { ComponentEntry* pEntry = aCtrls[ nPos ]; - if ( pEntry->aPos.Y() >= pE->aPos.Y() ) - { - while ( pEntry && ( pEntry->aPos.Y() == pE->aPos.Y() ) - && ( pEntry->aPos.X() < pE->aPos.X() ) ) - { - pEntry = aCtrls[ ++nPos ]; - } - break; - } + if ( ( pEntry->aPos.Y() > pE->aPos.Y() ) || + ( ( pEntry->aPos.Y() == pE->aPos.Y() ) && ( pEntry->aPos.X() > pE->aPos.X() ) ) ) + break; } if ( nPos < aCtrls.size() ) { ComponentEntryList::iterator it = aCtrls.begin(); |