diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2022-03-11 17:48:21 +0100 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2022-03-15 19:43:04 +0100 |
commit | 1f7703febb182a0542522b3403740d526c575abd (patch) | |
tree | 4abb56a45f99db9e92e9c0111713c57365b478a7 | |
parent | 673a210b73716cf9ceb7b104b38e39987d0515af (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.hxx | 2 | ||||
-rw-r--r-- | svx/source/tbxctrls/StylesPreviewWindow.cxx | 6 |
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( |