include/vcl/outdev.hxx | 4 +++- include/vcl/window.hxx | 1 + vcl/source/gdi/pdfwriter_impl.hxx | 1 + vcl/source/gdi/pdfwriter_impl2.cxx | 10 ++++++++++ vcl/source/outdev/font.cxx | 31 ++++++++++--------------------- vcl/source/window/window3.cxx | 8 ++++++++ 6 files changed, 33 insertions(+), 22 deletions(-)
New commits: commit 7e88bc73030c7708f1a8b47491070aae5b73aac1 Author: Adrien Ollier <adr.oll...@hotmail.fr> AuthorDate: Thu Jul 4 05:06:10 2019 +0200 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Thu Aug 8 13:02:38 2019 +0200 tdf#74702: removes GetOutDevType() from OutputDevice::ImplRefreshFontData Change-Id: I8a51afe0979d83862bbe384e6d67702f4687072d Signed-off-by: Adrien Ollier <adr.oll...@hotmail.fr> Reviewed-on: https://gerrit.libreoffice.org/75068 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx index 3151abbe1e9c..8d385e003dd2 100644 --- a/include/vcl/outdev.hxx +++ b/include/vcl/outdev.hxx @@ -1289,8 +1289,11 @@ protected: virtual long GetFontExtLeading() const; virtual void ImplClearFontData(bool bNewFontLists); + virtual void ImplRefreshFontData(bool bNewFontLists); void ReleaseFontCache(); void ReleaseFontCollection(); + void SetFontCollectionFromSVData(); + void ResetNewFontCache(); private: @@ -1298,7 +1301,6 @@ private: SAL_DLLPRIVATE bool ImplNewFont() const; - SAL_DLLPRIVATE void ImplRefreshFontData( bool bNewFontLists ); SAL_DLLPRIVATE static void ImplUpdateFontDataForAllFrames( FontUpdateHandler_t pHdl, bool bNewFontLists ); static diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx index bdc4ea3d0019..ce8669895fe5 100644 --- a/include/vcl/window.hxx +++ b/include/vcl/window.hxx @@ -742,6 +742,7 @@ protected: virtual void InitClipRegion() override; void ImplClearFontData(bool bNewFontLists) override; + void ImplRefreshFontData(bool bNewFontLists) override; // FIXME: this is a hack to workaround missing layout functionality SAL_DLLPRIVATE void ImplAdjustNWFSizes(); diff --git a/vcl/source/gdi/pdfwriter_impl.hxx b/vcl/source/gdi/pdfwriter_impl.hxx index cd8f5eac31bb..7dd40d96e039 100644 --- a/vcl/source/gdi/pdfwriter_impl.hxx +++ b/vcl/source/gdi/pdfwriter_impl.hxx @@ -594,6 +594,7 @@ public: protected: void ImplClearFontData(bool bNewFontLists) override; + void ImplRefreshFontData(bool bNewFontLists) override; vcl::Region ClipToDeviceBounds(vcl::Region aRegion) const override; void DrawHatchLine_DrawLine(const Point& rStartPoint, const Point& rEndPoint) override; diff --git a/vcl/source/gdi/pdfwriter_impl2.cxx b/vcl/source/gdi/pdfwriter_impl2.cxx index a060cd580fe0..4dbc13bc6079 100644 --- a/vcl/source/gdi/pdfwriter_impl2.cxx +++ b/vcl/source/gdi/pdfwriter_impl2.cxx @@ -2027,9 +2027,19 @@ void PDFWriterImpl::ImplClearFontData(bool bNewFontLists) } } +void PDFWriterImpl::ImplRefreshFontData(bool bNewFontLists) +{ + if (bNewFontLists && AcquireGraphics()) + { + SetFontCollectionFromSVData(); + ResetNewFontCache(); + } +} + vcl::Region PDFWriterImpl::ClipToDeviceBounds(vcl::Region aRegion) const { return aRegion; } + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx index dbecc1d550fe..a306d1a2ae98 100644 --- a/vcl/source/outdev/font.cxx +++ b/vcl/source/outdev/font.cxx @@ -523,29 +523,8 @@ void OutputDevice::RefreshFontData( const bool bNewFontLists ) void OutputDevice::ImplRefreshFontData( const bool bNewFontLists ) { - ImplSVData* pSVData = ImplGetSVData(); - if (bNewFontLists && AcquireGraphics()) - { - if (GetOutDevType() == OUTDEV_PDF) - { - mxFontCollection = pSVData->maGDIData.mxScreenFontList->Clone(); - mxFontCache.reset(new ImplFontCache); - } - else mpGraphics->GetDevFontList( mxFontCollection.get() ); - } - - // also update child windows if needed - if ( GetOutDevType() == OUTDEV_WINDOW ) - { - vcl::Window* pChild = static_cast<vcl::Window*>(this)->mpWindowImpl->mpFirstChild; - while ( pChild ) - { - pChild->ImplRefreshFontData( true ); - pChild = pChild->mpWindowImpl->mpNext; - } - } } void OutputDevice::ImplUpdateFontData() @@ -1486,4 +1465,14 @@ sal_Int32 OutputDevice::HasGlyphs( const vcl::Font& rTempFont, const OUString& r return -1; } +void OutputDevice::SetFontCollectionFromSVData() +{ + mxFontCollection = ImplGetSVData()->maGDIData.mxScreenFontList->Clone(); +} + +void OutputDevice::ResetNewFontCache() +{ + mxFontCache.reset(new ImplFontCache{}); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/window/window3.cxx b/vcl/source/window/window3.cxx index 492839f05415..c3412e0dda46 100644 --- a/vcl/source/window/window3.cxx +++ b/vcl/source/window/window3.cxx @@ -65,6 +65,14 @@ void Window::ImplClearFontData(bool bNewFontLists) for (Window* pChild = mpWindowImpl->mpFirstChild; pChild; pChild = pChild->mpWindowImpl->mpNext) pChild->ImplClearFontData(bNewFontLists); } + +void Window::ImplRefreshFontData(bool bNewFontLists) +{ + OutputDevice::ImplRefreshFontData(bNewFontLists); + for (Window* pChild = mpWindowImpl->mpFirstChild; pChild; pChild = pChild->mpWindowImpl->mpNext) + pChild->ImplRefreshFontData(bNewFontLists); +} + } /* namespace vcl */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits