diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-07-14 14:22:06 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-07-14 18:11:03 +0200 |
commit | 94c7a401583200cf5982594b1b043ad1a5e3cd38 (patch) | |
tree | 993b6717312394349d547e271b8e2e8811194b12 | |
parent | 6b6b81cae861a1e6463360d1b320c0d3e24de111 (diff) |
Resolves: tdf#99071 tree view shows odd text widths when > 100 lines
reverts
commit 62ea355b2679073b8ee326df5793231996136da9
Date: Thu Dec 12 09:55:35 2013 +0100
fdo#72125: GetTextWidth() can get very expensive.
Let's just count an approximate width using a cached value when we have too
many entries.
The expert dialog got fixed by not populating it with all options on load
and instead by incremental disclosure as the users searches/expands it so
this optimization effort isn't needed
in the meantime there was another problem the above papered over with
commit b4bbb5e5d7b31caad2fbcc00382ad27df3c81001
Date: Sun May 17 22:56:46 2015 +0900
refactor how font, fg. and bg. are applied in widgets/controls
which was fixed (hopefully) in the previous commit
Change-Id: I8383d9cd7a9983a85c7f3acec0281d984c44f9e7
Reviewed-on: https://gerrit.libreoffice.org/39951
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | svtools/source/contnr/svlbitm.cxx | 20 |
1 files changed, 1 insertions, 19 deletions
diff --git a/svtools/source/contnr/svlbitm.cxx b/svtools/source/contnr/svlbitm.cxx index 8b1f67741979..fae3dd1e2273 100644 --- a/svtools/source/contnr/svlbitm.cxx +++ b/svtools/source/contnr/svlbitm.cxx @@ -214,25 +214,7 @@ void SvLBoxString::InitViewData( { if( !pViewData ) pViewData = pView->GetViewDataItem( pEntry, this ); - - // fdo#72125: GetTextWidth() can get very expensive; let's just count - // an approximate width using a cached value when we have many entries - long nTextWidth; - if (pView->GetEntryCount() > 100) - { - static SvTreeListBox *s_pPreviousView = nullptr; - static float s_fApproximateCharWidth = 0.0; - if (s_pPreviousView != pView) - { - s_pPreviousView = pView; - s_fApproximateCharWidth = pView->approximate_char_width(); - } - nTextWidth = maText.getLength() * s_fApproximateCharWidth; - } - else - nTextWidth = pView->GetTextWidth(maText); - - pViewData->maSize = Size(nTextWidth, pView->GetTextHeight()); + pViewData->maSize = Size(pView->GetTextWidth(maText), pView->GetTextHeight()); } // *************************************************************** |