include/svx/charmap.hxx | 3 +++ include/vcl/ctrl.hxx | 2 ++ svx/source/dialog/charmap.cxx | 19 ++++++++++++++++++- vcl/source/control/ctrl.cxx | 21 +++++++++++++++------ 4 files changed, 38 insertions(+), 7 deletions(-)
New commits: commit b010e4074e5d5ee3a3905f1351f04efafe937c2a Author: László Németh <laszlo.nem...@collabora.com> Date: Fri Jul 3 18:50:05 2015 +0200 tdf#92241 fix crashes and rendering of symbol set previews Change-Id: I43397f2b0caa31c334f87acf11fc96df2e051ad8 diff --git a/include/svx/charmap.hxx b/include/svx/charmap.hxx index d50382e..e56fe98 100644 --- a/include/svx/charmap.hxx +++ b/include/svx/charmap.hxx @@ -58,6 +58,7 @@ public: Link<> GetPreSelectHdl() const { return aHighHdl; } void SetPreSelectHdl( const Link<>& rHdl ) { aPreSelectHdl = rHdl; } static sal_uInt32& getSelectedChar(); + void SetFont( const vcl::Font& rFont ); svx::SvxShowCharSetItem* ImplGetItem( int _nPos ); int FirstInView() const; @@ -108,12 +109,14 @@ private: sal_Int32 nSelectedIndex; FontCharMapPtr mpFontCharMap; + Size maFontSize; VclPtr<ScrollBar> aVscrollSB; bool mbRecalculateFont : 1; bool mbUpdateForeground : 1; bool mbUpdateBackground : 1; + private: void DrawChars_Impl(vcl::RenderContext& rRenderContext, int n1, int n2); void InitSettings(vcl::RenderContext& rRenderContext); diff --git a/include/vcl/ctrl.hxx b/include/vcl/ctrl.hxx index 6741a22..69a3569 100644 --- a/include/vcl/ctrl.hxx +++ b/include/vcl/ctrl.hxx @@ -41,6 +41,8 @@ protected: private: bool mbHasControlFocus; + bool mbFont; + bool mbForeground; Link<> maGetFocusHdl; Link<> maLoseFocusHdl; diff --git a/svx/source/dialog/charmap.cxx b/svx/source/dialog/charmap.cxx index 9d0c9a5..f5e9595 100644 --- a/svx/source/dialog/charmap.cxx +++ b/svx/source/dialog/charmap.cxx @@ -57,6 +57,7 @@ sal_uInt32& SvxShowCharSet::getSelectedChar() SvxShowCharSet::SvxShowCharSet(vcl::Window* pParent) : Control(pParent, WB_TABSTOP | WB_BORDER) , m_pAccessible(nullptr) + , maFontSize(0, 0) , aVscrollSB( VclPtr<ScrollBar>::Create(this, WB_VERT) ) , mbRecalculateFont(true) , mbUpdateForeground(true) @@ -114,6 +115,7 @@ void SvxShowCharSet::StateChanged(StateChangedType nType) Invalidate(); Control::StateChanged( nType ); + } @@ -331,6 +333,12 @@ void SvxShowCharSet::Paint( vcl::RenderContext& rRenderContext, const Rectangle& DrawChars_Impl(rRenderContext, FirstInView(), LastInView()); } +void SvxShowCharSet::SetFont( const vcl::Font& rFont ) +{ + Control::SetFont(rFont); + Invalidate(); +} + void SvxShowCharSet::DeSelect() { Invalidate(); @@ -506,6 +514,14 @@ void SvxShowCharSet::InitSettings(vcl::RenderContext& rRenderContext) mbUpdateBackground = false; } + + vcl::Font aFont(rRenderContext.GetFont()); + aFont.SetWeight(WEIGHT_LIGHT); + aFont.SetAlign(ALIGN_TOP); + aFont.SetSize(maFontSize); + aFont.SetTransparent(true); + rRenderContext.SetFont(aFont); + } @@ -536,7 +552,8 @@ void SvxShowCharSet::RecalculateFont(vcl::RenderContext& rRenderContext) aFont.SetWeight(WEIGHT_LIGHT); aFont.SetAlign(ALIGN_TOP); int nFontHeight = (aSize.Height() - 5) * 2 / (3 * ROW_COUNT); - aFont.SetSize(rRenderContext.PixelToLogic(Size(0, nFontHeight))); + maFontSize = rRenderContext.PixelToLogic(Size(0, nFontHeight)); + aFont.SetSize(maFontSize); aFont.SetTransparent(true); rRenderContext.SetFont(aFont); rRenderContext.GetFontCharMap(mpFontCharMap); diff --git a/vcl/source/control/ctrl.cxx b/vcl/source/control/ctrl.cxx index 0c40a34..21056db 100644 --- a/vcl/source/control/ctrl.cxx +++ b/vcl/source/control/ctrl.cxx @@ -36,6 +36,8 @@ using namespace vcl; void Control::ImplInitControlData() { mbHasControlFocus = false; + mbFont = false; + mbForeground = false; mpControlData = new ImplControlData; } @@ -417,16 +419,23 @@ void Control::ApplySettings(vcl::RenderContext& rRenderContext) { const StyleSettings& rStyleSettings = rRenderContext.GetSettings().GetStyleSettings(); - vcl::Font rFont(GetCanonicalFont(rStyleSettings)); - ApplyControlFont(rRenderContext, rFont); - - ApplyControlForeground(rRenderContext, GetCanonicalTextColor(rStyleSettings)); + if (mbFont) + { + vcl::Font rFont(GetCanonicalFont(rStyleSettings)); + ApplyControlFont(rRenderContext, rFont); + } - rRenderContext.SetTextFillColor(); + if (mbFont || mbForeground) + { + ApplyControlForeground(rRenderContext, GetCanonicalTextColor(rStyleSettings)); + rRenderContext.SetTextFillColor(); + } } -void Control::ImplInitSettings(const bool, const bool) +void Control::ImplInitSettings(const bool _bFont, const bool _bForeground) { + mbFont = _bFont; + mbForeground = _bForeground; ApplySettings(*this); }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits