[Libreoffice-commits] core.git: dbaccess/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Sun Dec 23 21:23:12 UTC 2018


 dbaccess/source/ui/control/VertSplitView.cxx |   18 ++++++++++++++++--
 dbaccess/source/ui/inc/VertSplitView.hxx     |    4 +++-
 2 files changed, 19 insertions(+), 3 deletions(-)

New commits:
commit 092d005fe0368c57502479bc79fcee63ce07fa48
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Sun Dec 23 19:39:39 2018 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Sun Dec 23 22:22:50 2018 +0100

    Resolves: tdf#122285 task panel too short
    
    there are a bunch of resizes as base starts up, and base will position
    the splitwin on the first time its big enough to place it and gets stuck
    too high up, before it goes full size.
    
    We don't want this jumping around on every subsequent user size, but we do
    want it to get placed at the final size during the load.
    
    So post the resize event to occur on idle, and when it finally gets a chance
    to run we'll be at our final size and the placement is good
    
    Change-Id: Iccb169bac93a5cf8bc931945bc7e1b71c6c9dd23
    Reviewed-on: https://gerrit.libreoffice.org/65586
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/dbaccess/source/ui/control/VertSplitView.cxx b/dbaccess/source/ui/control/VertSplitView.cxx
index 956cec1e887e..4f44d180114e 100644
--- a/dbaccess/source/ui/control/VertSplitView.cxx
+++ b/dbaccess/source/ui/control/VertSplitView.cxx
@@ -32,6 +32,7 @@ OSplitterView::OSplitterView(vcl::Window* _pParent) : Window(_pParent,WB_DIALOGC
     ,m_pSplitter( nullptr )
     ,m_pLeft(nullptr)
     ,m_pRight(nullptr)
+    ,m_pResizeId(nullptr)
 {
     ImplInitSettings();
 }
@@ -43,6 +44,11 @@ OSplitterView::~OSplitterView()
 
 void OSplitterView::dispose()
 {
+    if (m_pResizeId)
+    {
+        RemoveUserEvent(m_pResizeId);
+        m_pResizeId = nullptr;
+    }
     m_pSplitter.clear();
     m_pLeft.clear();
     m_pRight.clear();
@@ -102,9 +108,10 @@ void OSplitterView::GetFocus()
         m_pRight->GrabFocus();
 }
 
-void OSplitterView::Resize()
+IMPL_LINK_NOARG(OSplitterView, ResizeHdl, void*, void)
 {
-    Window::Resize();
+    m_pResizeId = nullptr;
+
     OSL_ENSURE( m_pRight, "No init called!");
 
     Point   aSplitPos;
@@ -142,7 +149,14 @@ void OSplitterView::Resize()
         m_pRight->setPosSizePixel( aSplitPos.X(), aPlaygroundPos.Y() + aSplitPos.Y() + aSplitSize.Height(),
                                aPlaygroundSize.Width() , aPlaygroundSize.Height() - aSplitSize.Height() - aSplitPos.Y());
     }
+}
 
+void OSplitterView::Resize()
+{
+    Window::Resize();
+    if (m_pResizeId)
+        RemoveUserEvent(m_pResizeId);
+    m_pResizeId = PostUserEvent(LINK(this, OSplitterView, ResizeHdl), this, true);
 }
 
 void OSplitterView::set(vcl::Window* _pRight,Window* _pLeft)
diff --git a/dbaccess/source/ui/inc/VertSplitView.hxx b/dbaccess/source/ui/inc/VertSplitView.hxx
index 1ccf6a0683f1..25a0a6442e81 100644
--- a/dbaccess/source/ui/inc/VertSplitView.hxx
+++ b/dbaccess/source/ui/inc/VertSplitView.hxx
@@ -30,9 +30,11 @@ namespace dbaui
         VclPtr<Splitter>                m_pSplitter;
         VclPtr<vcl::Window>             m_pLeft;
         VclPtr<vcl::Window>             m_pRight;
+        ImplSVEvent *m_pResizeId;
 
         void ImplInitSettings();
-        DECL_LINK( SplitHdl, Splitter*, void );
+        DECL_LINK(SplitHdl, Splitter*, void);
+        DECL_LINK(ResizeHdl, void*, void);
     protected:
         virtual void DataChanged(const DataChangedEvent& rDCEvt) override;
     public:


More information about the Libreoffice-commits mailing list