vcl/unx/gtk3/gtk3gtkinst.cxx |   31 ++++++++++++++++++++++++-------
 1 file changed, 24 insertions(+), 7 deletions(-)

New commits:
commit a905fed5ba72bc22098910d960e7a502365df9ef
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Fri Jul 26 10:47:01 2019 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Sat Jul 27 12:49:46 2019 +0200

    factor out setting widget bg
    
    Change-Id: I9f958e62df9efb00d5225ec485076fe8edbc2744
    (cherry picked from commit e1252cc0bd300bf873325c598a7e5ad940061055)
    Reviewed-on: https://gerrit.libreoffice.org/76448
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index a472537c2bfd..a846b16d6e17 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -1388,6 +1388,7 @@ private:
     sal_uInt16 m_nLastMouseButton;
     sal_uInt16 m_nLastMouseClicks;
     ImplSVEvent* m_pFocusEvent;
+    GtkCssProvider* m_pBgCssProvider;
     gulong m_nFocusInSignalId;
     gulong m_nMnemonicActivateSignalId;
     gulong m_nFocusOutSignalId;
@@ -1579,6 +1580,24 @@ private:
         }
     }
 
+    void set_background(const OUString* pColor)
+    {
+        GtkStyleContext *pWidgetContext = 
gtk_widget_get_style_context(GTK_WIDGET(m_pWidget));
+        if (m_pBgCssProvider)
+        {
+            gtk_style_context_remove_provider(pWidgetContext, 
GTK_STYLE_PROVIDER(m_pBgCssProvider));
+            m_pBgCssProvider = nullptr;
+        }
+        if (!pColor)
+            return;
+        m_pBgCssProvider = gtk_css_provider_new();
+        OUString aBuffer = "* { background-color: #" + *pColor + "; }";
+        OString aResult = OUStringToOString(aBuffer, RTL_TEXTENCODING_UTF8);
+        gtk_css_provider_load_from_data(m_pBgCssProvider, aResult.getStr(), 
aResult.getLength(), nullptr);
+        gtk_style_context_add_provider(pWidgetContext, 
GTK_STYLE_PROVIDER(m_pBgCssProvider),
+                                       
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+    }
+
 public:
     GtkInstanceWidget(GtkWidget* pWidget, GtkInstanceBuilder* pBuilder, bool 
bTakeOwnership)
         : m_pWidget(pWidget)
@@ -1590,6 +1609,7 @@ public:
         , m_nLastMouseButton(0)
         , m_nLastMouseClicks(0)
         , m_pFocusEvent(nullptr)
+        , m_pBgCssProvider(nullptr)
         , m_nFocusInSignalId(0)
         , m_nMnemonicActivateSignalId(0)
         , m_nFocusOutSignalId(0)
@@ -2081,13 +2101,8 @@ public:
 
     virtual void set_stack_background() override
     {
-        GtkStyleContext *pWidgetContext = 
gtk_widget_get_style_context(GTK_WIDGET(m_pWidget));
-        GtkCssProvider *pProvider = gtk_css_provider_new();
-        OUString aBuffer = "* { background-color: #" + 
Application::GetSettings().GetStyleSettings().GetWindowColor().AsRGBHexString() 
+ "; }";
-        OString aResult = OUStringToOString(aBuffer, RTL_TEXTENCODING_UTF8);
-        gtk_css_provider_load_from_data(pProvider, aResult.getStr(), 
aResult.getLength(), nullptr);
-        gtk_style_context_add_provider(pWidgetContext, 
GTK_STYLE_PROVIDER(pProvider),
-                                       
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+        OUString sColor = 
Application::GetSettings().GetStyleSettings().GetWindowColor().AsRGBHexString();
+        set_background(&sColor);
     }
 
     virtual ~GtkInstanceWidget() override
@@ -2121,6 +2136,8 @@ public:
         if (m_nSizeAllocateSignalId)
             g_signal_handler_disconnect(m_pWidget, m_nSizeAllocateSignalId);
 
+        set_background(nullptr);
+
         if (m_pMouseEventBox && m_pMouseEventBox != m_pWidget)
         {
             // put things back they way we found them
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to