Petr Mladek píše v Po 24. 10. 2011 v 11:23 +0200: > Could you please test the attached patch? You might apply it using: > > git am 0001-activation-order-crashes-address-database-fdo-41022.patch
It did not sort the very last element "FaxNumber" from the sample document. Well, it was a simple "insert sort" algorithm but it was written somehow complicated way. I have simplified it, see the attached patch. It works here. Could you please try it? Best Regards, Petr
>From e7698add6ba6bda362e50b343cac0682167fbcca Mon Sep 17 00:00:00 2001 From: julien2412 <serval2...@yahoo.fr> Date: Mon, 24 Oct 2011 14:46:13 +0200 Subject: [PATCH] activation order crashes address database (fdo#41022) --- 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 d5c2f06..86604f9 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(); -- 1.7.3.4
_______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice