vcl/inc/unx/gtk/gtkframe.hxx       |    1 +
 vcl/unx/gtk/window/gtksalframe.cxx |   17 +++++++++++------
 2 files changed, 12 insertions(+), 6 deletions(-)

New commits:
commit 133e04fc1a870c0aad207e82eefeeeceaba5dc6d
Author: Caolán McNamara <caol...@redhat.com>
Date:   Wed Jun 17 09:23:32 2015 +0100

    Resolves: tdf#91880 Invalidate graphics when the gtk window is destroyed
    
    not just when the GtkSalFrame is dtored
    
    Change-Id: Iec33f4de39224f9b1e60d72c02164402196aaac0
    (cherry picked from commit 6dcd81f81be0067425f42f0898316d7f52e279d6)

diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx
index 5792efa..9268eb0e 100644
--- a/vcl/inc/unx/gtk/gtkframe.hxx
+++ b/vcl/inc/unx/gtk/gtkframe.hxx
@@ -231,6 +231,7 @@ class GtkSalFrame : public SalFrame, public 
X11WindowProvider
     void Init( SalFrame* pParent, sal_uLong nStyle );
     void Init( SystemParentData* pSysData );
     void InitCommon();
+    void InvalidateGraphics();
 
     // signals
     static gboolean     signalButton( GtkWidget*, GdkEventButton*, gpointer );
diff --git a/vcl/unx/gtk/window/gtksalframe.cxx 
b/vcl/unx/gtk/window/gtksalframe.cxx
index 5ed6465..e687d2b 100644
--- a/vcl/unx/gtk/window/gtksalframe.cxx
+++ b/vcl/unx/gtk/window/gtksalframe.cxx
@@ -845,17 +845,23 @@ void GtkSalFrame::EnsureAppMenuWatch()
 #endif
 }
 
-GtkSalFrame::~GtkSalFrame()
+void GtkSalFrame::InvalidateGraphics()
 {
-    for( unsigned int i = 0; i < SAL_N_ELEMENTS(m_aGraphics); ++i )
+    for (unsigned int i = 0; i < SAL_N_ELEMENTS(m_aGraphics); ++i)
     {
         if( !m_aGraphics[i].pGraphics )
             continue;
 #if !GTK_CHECK_VERSION(3,0,0)
         m_aGraphics[i].pGraphics->SetDrawable( None, m_nXScreen );
+        m_aGraphics[i].pGraphics->SetWindow(NULL);
 #endif
         m_aGraphics[i].bInUse = false;
     }
+}
+
+GtkSalFrame::~GtkSalFrame()
+{
+    InvalidateGraphics();
 
     if( m_pParent )
         m_pParent->m_aChildren.remove( this );
@@ -1317,8 +1323,10 @@ void GtkSalFrame::Init( SalFrame* pParent, sal_uLong 
nStyle )
         }
     }
     else
+    {
         m_pWindow = gtk_widget_new( GTK_TYPE_WINDOW, "type", eWinType,
                                     "visible", FALSE, NULL );
+    }
     g_object_set_data( G_OBJECT( m_pWindow ), "SalFrame", this );
     g_object_set_data( G_OBJECT( m_pWindow ), "libo-version", 
(gpointer)LIBO_VERSION_DOTTED);
 
@@ -3071,11 +3079,7 @@ void GtkSalFrame::createNewWindow( ::Window aNewParent, 
bool bXEmbed, SalX11Scre
     }
     if( m_pRegion )
     {
-#if GTK_CHECK_VERSION(3,0,0)
-        cairo_region_destroy( m_pRegion );
-#else
         gdk_region_destroy( m_pRegion );
-#endif
     }
     if( m_pFixedContainer )
         gtk_widget_destroy( GTK_WIDGET(m_pFixedContainer) );
@@ -4005,6 +4009,7 @@ void GtkSalFrame::signalDestroy( GtkWidget* pObj, 
gpointer frame )
     {
         pThis->m_pFixedContainer = NULL;
         pThis->m_pWindow = NULL;
+        pThis->InvalidateGraphics();
     }
 }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to