summaryrefslogtreecommitdiff
path: root/toolkit
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2020-06-01 13:51:51 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-06-01 18:42:11 +0200
commitd5e222cd86b82a429c28cb19583521d581efaf2b (patch)
treeb4422747a5c5374461a46aa2b4c0bac2cb739d34 /toolkit
parent8401181bf0232959efb516802abcda42377ea06e (diff)
Revert "tdf#125609 toolkit: don't use XTabController::getControls"
This reverts LO6.4 commit 5cf057c3365a0feafc8f2e4f4a9e24d69a581999, in order to fix tdf#133158. This commit is obsolete, but was left in place since it seemed to have fixed a problem (in =gtk3 anyway). But now SAL_USE_VCLPLUGIN=gen behaves differently, so obviously a fix in one place must have broken another. Better the problems you have always known than a new problem, especially since this patch isn't used to fix anything specific in gtk3 anymore (since those changes were also reverted). An earlier gerrit version of this revert (which didn't just have an ignore-this-clang-rule exception) half-worked, but failed if multiple documents were opened. Change-Id: Ie8ddb7b9669fa46067d04c35e157ea08701df0da Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95282 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'toolkit')
-rw-r--r--toolkit/source/controls/stdtabcontroller.cxx16
1 files changed, 9 insertions, 7 deletions
diff --git a/toolkit/source/controls/stdtabcontroller.cxx b/toolkit/source/controls/stdtabcontroller.cxx
index b0c6142476b0..0fa0f96f965c 100644
--- a/toolkit/source/controls/stdtabcontroller.cxx
+++ b/toolkit/source/controls/stdtabcontroller.cxx
@@ -306,17 +306,19 @@ void StdTabController::activateTabOrder( )
if ( !xC.is() || !xVclContainerPeer.is() )
return;
+ // This may return a TabController, which returns desired list of controls faster
+ // (the dreaded UNO aggregration, retrieve the thing that we are part of)
+ Reference<XTabController> xTabController( static_cast<XTabController*>(this), UNO_QUERY );
+
// Get a flattened list of controls sequences
Sequence< Reference< XControlModel > > aModels = mxModel->getControlModels();
Sequence< Reference< XWindow > > aCompSeq;
Sequence< Any> aTabSeq;
- // Previously used aControls = xTabController->getControls() "for the sake of optimization",
- // but that list isn't valid during the creation phase (missing last created control) because
- // listenermultiplexer.cxx handles fmvwimp::elementinserted before formcontroller::elementInserted
- // Perhaps other places using the same optimization need to be reviewed? (tdf#125609)
- Sequence< Reference< XControl > > aCachedControls = getControls();
- Sequence< Reference< XControl > > aControls = aCachedControls;
+ // DG: For the sake of optimization, retrieve Controls from getControls(),
+ // this may sound counterproductive, but leads to performance improvements
+ // in practical scenarios (Forms)
+ Sequence< Reference< XControl > > aControls = xTabController->getControls();
// #58317# Some Models may be missing from the Container. Plus there is a
// autoTabOrder call later on.
@@ -334,7 +336,7 @@ void StdTabController::activateTabOrder( )
{
mxModel->getGroup( nG, aThisGroupModels, aName );
- aControls = aCachedControls;
+ aControls = xTabController->getControls();
// ImplCreateComponentSequence has a really strange semantics regarding it's first parameter:
// upon method entry, it expects a super set of the controls which it returns
// this means we need to completely fill this sequence with all available controls before