Blame SOURCES/0001-gtk3-stop-the-ever-shrinking-size-of-toplevel-on-eve.patch

a9add1
From 3b31d0dc86d75f8283951f3fd6a4f48ff649ed99 Mon Sep 17 00:00:00 2001
a9add1
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
a9add1
Date: Fri, 4 Dec 2015 13:07:57 +0000
a9add1
Subject: [PATCH] gtk3: stop the ever shrinking size of toplevel on every
a9add1
 restore
a9add1
MIME-Version: 1.0
a9add1
Content-Type: text/plain; charset=UTF-8
a9add1
Content-Transfer-Encoding: 8bit
a9add1
a9add1
for getting and setting the window state, work on the toplevel m_pWindow. Leave
a9add1
the "geometry" alone as its for the purpose of the current known size of the
a9add1
toplevel window contents
a9add1
a9add1
Change-Id: Idf701aacf4aed4eefbca1bc1ebebaf38d1c82e27
a9add1
Reviewed-on: https://gerrit.libreoffice.org/20397
a9add1
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
a9add1
Tested-by: Caolán McNamara <caolanm@redhat.com>
a9add1
(cherry picked from commit 7242ed0567297c3c5186b4095496fc01448359f4)
a9add1
---
a9add1
 vcl/unx/gtk3/gtk3gtkframe.cxx | 41 ++++++++++++++++++++++++++++-------------
a9add1
 1 file changed, 28 insertions(+), 13 deletions(-)
a9add1
a9add1
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
a9add1
index 966dc80..576946f 100644
a9add1
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
a9add1
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
a9add1
@@ -1703,6 +1703,28 @@ void GtkSalFrame::SetWindowState( const SalFrameState* pState )
a9add1
     TriggerPaintEvent();
a9add1
 }
a9add1
 
a9add1
+namespace
a9add1
+{
a9add1
+    void GetPosAndSize(GtkWindow *pWindow, long& rX, long &rY, long &rWidth, long &rHeight)
a9add1
+    {
a9add1
+       gint root_x, root_y;
a9add1
+       gtk_window_get_position(GTK_WINDOW(pWindow), &root_x, &root_y);
a9add1
+       rX = root_x;
a9add1
+       rY = root_y;
a9add1
+       gint width, height;
a9add1
+       gtk_window_get_size(GTK_WINDOW(pWindow), &width, &height);
a9add1
+       rWidth = width;
a9add1
+       rHeight = height;
a9add1
+    }
a9add1
+
a9add1
+    Rectangle GetPosAndSize(GtkWindow *pWindow)
a9add1
+    {
a9add1
+        long nX, nY, nWidth, nHeight;
a9add1
+        GetPosAndSize(pWindow, nX, nY, nWidth, nHeight);
a9add1
+        return Rectangle(nX, nY, nX + nWidth, nY + nHeight);
a9add1
+    }
a9add1
+}
a9add1
+
a9add1
 bool GtkSalFrame::GetWindowState( SalFrameState* pState )
a9add1
 {
a9add1
     pState->mnState = WINDOWSTATE_STATE_NORMAL;
a9add1
@@ -1717,10 +1739,8 @@ bool GtkSalFrame::GetWindowState( SalFrameState* pState )
a9add1
         pState->mnY                 = m_aRestorePosSize.Top();
a9add1
         pState->mnWidth             = m_aRestorePosSize.GetWidth();
a9add1
         pState->mnHeight            = m_aRestorePosSize.GetHeight();
a9add1
-        pState->mnMaximizedX        = maGeometry.nX;
a9add1
-        pState->mnMaximizedY        = maGeometry.nY;
a9add1
-        pState->mnMaximizedWidth    = maGeometry.nWidth;
a9add1
-        pState->mnMaximizedHeight   = maGeometry.nHeight;
a9add1
+        GetPosAndSize(GTK_WINDOW(m_pWindow), pState->mnMaximizedX, pState->mnMaximizedY,
a9add1
+                                             pState->mnMaximizedWidth, pState->mnMaximizedWidth);
a9add1
         pState->mnMask  |= WINDOWSTATE_MASK_MAXIMIZED_X          |
a9add1
                            WINDOWSTATE_MASK_MAXIMIZED_Y          |
a9add1
                            WINDOWSTATE_MASK_MAXIMIZED_WIDTH      |
a9add1
@@ -1728,10 +1748,8 @@ bool GtkSalFrame::GetWindowState( SalFrameState* pState )
a9add1
     }
a9add1
     else
a9add1
     {
a9add1
-        pState->mnX         = maGeometry.nX;
a9add1
-        pState->mnY         = maGeometry.nY;
a9add1
-        pState->mnWidth     = maGeometry.nWidth;
a9add1
-        pState->mnHeight    = maGeometry.nHeight;
a9add1
+        GetPosAndSize(GTK_WINDOW(m_pWindow), pState->mnX, pState->mnY,
a9add1
+                                             pState->mnWidth, pState->mnHeight);
a9add1
     }
a9add1
     pState->mnMask  |= WINDOWSTATE_MASK_X            |
a9add1
                        WINDOWSTATE_MASK_Y            |
a9add1
@@ -1932,8 +1950,7 @@ void GtkSalFrame::ShowFullScreen( bool bFullScreen, sal_Int32 nScreen )
a9add1
 
a9add1
     if( bFullScreen )
a9add1
     {
a9add1
-        m_aRestorePosSize = Rectangle( Point( maGeometry.nX, maGeometry.nY ),
a9add1
-                                       Size( maGeometry.nWidth, maGeometry.nHeight ) );
a9add1
+        m_aRestorePosSize = GetPosAndSize(GTK_WINDOW(m_pWindow));
a9add1
         SetScreen( nScreen, SET_FULLSCREEN );
a9add1
     }
a9add1
     else
a9add1
@@ -2963,9 +2980,7 @@ gboolean GtkSalFrame::signalWindowState( GtkWidget*, GdkEvent* pEvent, gpointer
a9add1
     if(   (pEvent->window_state.new_window_state & GDK_WINDOW_STATE_MAXIMIZED) &&
a9add1
         ! (pThis->m_nState & GDK_WINDOW_STATE_MAXIMIZED) )
a9add1
     {
a9add1
-        pThis->m_aRestorePosSize =
a9add1
-            Rectangle( Point( pThis->maGeometry.nX, pThis->maGeometry.nY ),
a9add1
-                       Size( pThis->maGeometry.nWidth, pThis->maGeometry.nHeight ) );
a9add1
+        pThis->m_aRestorePosSize = GetPosAndSize(GTK_WINDOW(pThis->m_pWindow));
a9add1
     }
a9add1
     pThis->m_nState = pEvent->window_state.new_window_state;
a9add1
 
a9add1
-- 
a9add1
2.5.0
a9add1