[Libreoffice-commits] core.git: cui/source cui/uiconfig include/vcl vcl/source vcl/unx

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Fri Aug 16 15:43:24 UTC 2019


 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 a94f95d173e531fe7df0e8caebd6763253798b39
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Fri Aug 16 14:56:54 2019 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Aug 16 17:42:41 2019 +0200

    tdf#126254 Help - About is black with Linux gen and gtk2
    
    Change-Id: If18693e1cb8a92a7a152dd9decc892fc5f2b7ab5
    Reviewed-on: https://gerrit.libreoffice.org/77591
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/cui/source/dialogs/about.cxx b/cui/source/dialogs/about.cxx
index a10fd4ecba9b..a9617f7a8381 100644
--- a/cui/source/dialogs/about.cxx
+++ b/cui/source/dialogs/about.cxx
@@ -178,10 +178,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());
     }
 }
 
@@ -193,10 +191,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 9f781faf1c1c..198b7a72f0d6 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -453,8 +453,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 0ca121c0e8ac..90481eaf0c7e 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1438,13 +1438,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 10074a1a3eac..483aec85017e 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 b015248a4acb..aa831c1bfbb9 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -3514,9 +3514,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
@@ -3526,7 +3526,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)
@@ -3537,37 +3537,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() + "\"); }";


More information about the Libreoffice-commits mailing list