summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2022-03-11 17:48:21 +0100
committerLuboš Luňák <l.lunak@collabora.com>2022-03-15 19:43:04 +0100
commit1f7703febb182a0542522b3403740d526c575abd (patch)
tree4abb56a45f99db9e92e9c0111713c57365b478a7
parent673a210b73716cf9ceb7b104b38e39987d0515af (diff)
use SalLayoutGlyphsCache in StyleItemController::DrawText()
This may get called very often during document import (e.g. during pasting in some cases, such as between Online windows, the backtrace is roughly SwTransferable::PasteOLE() -> SwReader::Read() -> ... -> SwDocStyleSheet::SetParent() and then a broadcast that's listened to by this code). And StylesPreviewWindow_Base::UpdateStylesList() gets called on every such occassion. Change-Id: I15e7e0509cd6ea56e1e0aab07c8c9739201ed9b0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131391 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
-rw-r--r--svx/source/inc/StylesPreviewWindow.hxx2
-rw-r--r--svx/source/tbxctrls/StylesPreviewWindow.cxx6
2 files changed, 6 insertions, 2 deletions
diff --git a/svx/source/inc/StylesPreviewWindow.hxx b/svx/source/inc/StylesPreviewWindow.hxx
index 3b652dcfb0d0..b59ad94041e7 100644
--- a/svx/source/inc/StylesPreviewWindow.hxx
+++ b/svx/source/inc/StylesPreviewWindow.hxx
@@ -24,6 +24,7 @@
#include <svl/style.hxx>
#include <com/sun/star/frame/XDispatchProvider.hpp>
#include <sfx2/sfxstatuslistener.hxx>
+#include <vcl/glyphitemcache.hxx>
class StylesPreviewWindow_Base;
@@ -59,6 +60,7 @@ class StyleItemController
SfxStyleFamily m_eStyleFamily;
std::pair<OUString, OUString> m_aStyleName;
+ SalLayoutGlyphsCache m_GlyphsCache;
public:
StyleItemController(const std::pair<OUString, OUString>& aStyleName);
diff --git a/svx/source/tbxctrls/StylesPreviewWindow.cxx b/svx/source/tbxctrls/StylesPreviewWindow.cxx
index ba338ffb22bc..8996b0083628 100644
--- a/svx/source/tbxctrls/StylesPreviewWindow.cxx
+++ b/svx/source/tbxctrls/StylesPreviewWindow.cxx
@@ -340,14 +340,16 @@ void StyleItemController::DrawHighlight(vcl::RenderContext& rRenderContext, Colo
void StyleItemController::DrawText(vcl::RenderContext& rRenderContext)
{
+ const SalLayoutGlyphs* layoutGlyphs
+ = m_GlyphsCache.GetLayoutGlyphs(&rRenderContext, m_aStyleName.second);
tools::Rectangle aTextRect;
- rRenderContext.GetTextBoundRect(aTextRect, m_aStyleName.second);
+ rRenderContext.GetTextBoundRect(aTextRect, m_aStyleName.second, 0, 0, -1, 0, {}, layoutGlyphs);
Point aPos(0, 0);
aPos.AdjustX(LEFT_MARGIN);
aPos.AdjustY((rRenderContext.GetOutputHeightPixel() - aTextRect.Bottom()) / 2);
- rRenderContext.DrawText(aPos, m_aStyleName.second);
+ rRenderContext.DrawText(aPos, m_aStyleName.second, 0, -1, nullptr, nullptr, layoutGlyphs);
}
StylesPreviewWindow_Base::StylesPreviewWindow_Base(