cui/source/dialogs/about.cxx | 12 ++++-------- cui/uiconfig/ui/aboutdialog.ui | 1 + include/vcl/weld.hxx | 4 ++-- vcl/source/app/salvtables.cxx | 8 ++++---- vcl/source/window/aboutdialog.cxx | 4 +--- vcl/unx/gtk3/gtk3gtkinst.cxx | 38 +++++++++----------------------------- 6 files changed, 21 insertions(+), 46 deletions(-)
New commits: commit a52d09ebe7da6ee870c29a0790720dba13ecc358 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Fri Aug 16 14:56:54 2019 +0100 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Mon Aug 19 13:08:26 2019 +0200 tdf#126254 Help - About is black with Linux gen and gtk2 Change-Id: If18693e1cb8a92a7a152dd9decc892fc5f2b7ab5 Reviewed-on: https://gerrit.libreoffice.org/77601 Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Tested-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/cui/source/dialogs/about.cxx b/cui/source/dialogs/about.cxx index 776d89f9e88f..b222fde3ca6d 100644 --- a/cui/source/dialogs/about.cxx +++ b/cui/source/dialogs/about.cxx @@ -187,10 +187,8 @@ void AboutDialog::SetLogo() m_xDialog->set_logo(nullptr); else { - ScopedVclPtr<VirtualDevice> xDevice(m_xDialog->create_virtual_device()); - xDevice->SetOutputSize(aLogoBitmap.GetSizePixel()); - xDevice->DrawBitmapEx(Point(), aLogoBitmap); - m_xDialog->set_logo(xDevice.get()); + Graphic aGraphic(aLogoBitmap); + m_xDialog->set_logo(aGraphic.GetXGraphic()); } } @@ -202,10 +200,8 @@ IMPL_LINK(AboutDialog, SizeAllocHdl, const Size&, rSize, void) if (!(Application::GetSettings().GetStyleSettings().GetHighContrastMode())) { SfxApplication::loadBrandSvg("shell/about", aBackgroundBitmap, rSize.Width()); - ScopedVclPtr<VirtualDevice> xDevice(m_xDialog->create_virtual_device()); - xDevice->SetOutputSize(aBackgroundBitmap.GetSizePixel()); - xDevice->DrawBitmapEx(Point(), aBackgroundBitmap); - m_xDialog->set_background(xDevice.get()); + Graphic aGraphic(aBackgroundBitmap); + m_xDialog->set_background(aGraphic.GetXGraphic()); } } diff --git a/cui/uiconfig/ui/aboutdialog.ui b/cui/uiconfig/ui/aboutdialog.ui index 07f2be7e3e06..b2ad949019c8 100644 --- a/cui/uiconfig/ui/aboutdialog.ui +++ b/cui/uiconfig/ui/aboutdialog.ui @@ -9,6 +9,7 @@ <property name="default_height">0</property> <property name="type_hint">dialog</property> <property name="title" translatable="yes" context="aboutdialog|AboutDialog">About %PRODUCTNAME</property> + <property name="resizable">False</property> <property name="program_name">%PRODUCTNAME</property> <property name="comments" translatable="yes" context="aboutdialog|description">%PRODUCTNAME is a modern, easy-to-use, open source productivity suite for word processing, spreadsheets, presentations and more.</property> <property name="website">https://www.libreoffice.org/</property> diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 35e645af2467..8c4899732c77 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -450,8 +450,8 @@ public: virtual void set_website(const OUString& rURL) = 0; virtual void set_website_label(const OUString& rLabel) = 0; virtual OUString get_website_label() const = 0; - virtual void set_logo(VirtualDevice* pDevice) = 0; - virtual void set_background(VirtualDevice* pDevice) = 0; + virtual void set_logo(const css::uno::Reference<css::graphic::XGraphic>& rImage) = 0; + virtual void set_background(const css::uno::Reference<css::graphic::XGraphic>& rImage) = 0; }; struct VCL_DLLPUBLIC ComboBoxEntry diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index ceff007c408b..da2c50b25d64 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -1441,13 +1441,13 @@ public: { return m_xAboutDialog->GetWebsiteLabel(); } - virtual void set_logo(VirtualDevice* pDevice) override + virtual void set_logo(const css::uno::Reference<css::graphic::XGraphic>& rImage) override { - m_xAboutDialog->SetLogo(createImage(*pDevice)); + m_xAboutDialog->SetLogo(Image(rImage)); } - virtual void set_background(VirtualDevice* pDevice) override + virtual void set_background(const css::uno::Reference<css::graphic::XGraphic>& rImage) override { - m_xAboutDialog->SetBackground(createImage(*pDevice)); + m_xAboutDialog->SetBackground(Image(rImage)); } }; diff --git a/vcl/source/window/aboutdialog.cxx b/vcl/source/window/aboutdialog.cxx index 3bf2dc0155d1..a7ae1bdae58b 100644 --- a/vcl/source/window/aboutdialog.cxx +++ b/vcl/source/window/aboutdialog.cxx @@ -129,10 +129,8 @@ void AboutDialog::SetBackground(const Image& rBackgroundBitmap) Invalidate(); } -void AboutDialog::Paint(vcl::RenderContext& rRenderContext, const ::tools::Rectangle& rRect) +void AboutDialog::Paint(vcl::RenderContext& rRenderContext, const ::tools::Rectangle& /*rRect*/) { - rRenderContext.SetClipRegion(vcl::Region(rRect)); - Size aSize(GetOutputSizePixel()); Point aPos(aSize.Width() - m_aBackgroundBitmap.GetSizePixel().Width(), aSize.Height() - m_aBackgroundBitmap.GetSizePixel().Height()); diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 507ec779312b..928e75835ed0 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -3472,9 +3472,9 @@ public: return OUString(pText, pText ? strlen(pText) : 0, RTL_TEXTENCODING_UTF8); } - virtual void set_logo(VirtualDevice* pDevice) override + virtual void set_logo(const css::uno::Reference<css::graphic::XGraphic>& rImage) override { - GdkPixbuf* pixbuf = pDevice ? getPixbuf(*pDevice) : nullptr; + GdkPixbuf* pixbuf = rImage.is() ? getPixbuf(rImage) : nullptr; if (!pixbuf) gtk_about_dialog_set_logo(m_pAboutDialog, nullptr); else @@ -3484,7 +3484,7 @@ public: } } - virtual void set_background(VirtualDevice* pDevice) override + virtual void set_background(const css::uno::Reference<css::graphic::XGraphic>& rImage) override { GtkStyleContext *pStyleContext = gtk_widget_get_style_context(GTK_WIDGET(m_pAboutDialog)); if (m_pCssProvider) @@ -3495,37 +3495,17 @@ public: mxBackgroundImage.reset(); - if (pDevice) + if (rImage.is()) { mxBackgroundImage.reset(new utl::TempFile()); mxBackgroundImage->EnableKillingFile(true); - OString sOutput = mxBackgroundImage->GetFileName().toUtf8(); - - cairo_surface_t* orig_surface = get_underlying_cairo_surface(*pDevice); - double m_fXScale, m_fYScale; - dl_cairo_surface_get_device_scale(orig_surface, &m_fXScale, &m_fYScale); - - cairo_surface_t* surface; - if (m_fXScale != 1.0 || m_fYScale != -1) - { - Size aSize(pDevice->GetOutputSizePixel()); - surface = cairo_surface_create_similar_image(orig_surface, - CAIRO_FORMAT_ARGB32, - aSize.Width(), - aSize.Height()); - cairo_t* cr = cairo_create(surface); - cairo_set_source_surface(cr, orig_surface, 0, 0); - cairo_paint(cr); - cairo_destroy(cr); - } - else - surface = orig_surface; - - cairo_surface_write_to_png(surface, sOutput.getStr()); + Image aImage(rImage); - if (surface != orig_surface) - cairo_surface_destroy(surface); + vcl::PNGWriter aPNGWriter(aImage.GetBitmapEx()); + SvStream* pStream = mxBackgroundImage->GetStream(StreamMode::WRITE); + aPNGWriter.Write(*pStream); + mxBackgroundImage->CloseStream(); m_pCssProvider = gtk_css_provider_new(); OUString aBuffer = "* { background-image: url(\"" + mxBackgroundImage->GetURL() + "\"); }"; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits