This patch fixes this bug:
https://bugs.freedesktop.org/show_bug.cgi?id=52223
From ef69583b67ff9f34e615b3595984090515dec501 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?"Uray=20M.=20J=C3=A1nos"?= <[email protected]>
Date: Mon, 23 Jul 2012 18:48:47 +0200
Subject: [PATCH] fdo#52223 fix Object Catalog in Basic IDE when resizing

Change-Id: I96861bfcf7c0da6dd94c50acd673dedb14d15204
---
 basctl/source/basicide/baside2.cxx  |   28 +++++++++++++++++++++-------
 basctl/source/basicide/baside2.hxx  |    2 ++
 basctl/source/basicide/basides1.cxx |   23 ++++-------------------
 basctl/source/basicide/basidesh.cxx |    2 --
 basctl/source/inc/basidesh.hxx      |    2 --
 5 files changed, 27 insertions(+), 30 deletions(-)

diff --git a/basctl/source/basicide/baside2.cxx b/basctl/source/basicide/baside2.cxx
index e419c42..0ece951 100644
--- a/basctl/source/basicide/baside2.cxx
+++ b/basctl/source/basicide/baside2.cxx
@@ -1508,14 +1508,14 @@ void ModulWindowLayout::ArrangeWindows()
     if ( ( nVSplitPos < nMinPos ) || ( nVSplitPos > nMaxPos ) )
         nVSplitPos = ( nVSplitPos < nMinPos ) ? 0 : ( aSz.Height() - SPLIT_HEIGHT );
 
-    Size aXEWSz;
-    aXEWSz.Width() = aSz.Width() - OBJCAT_PANE_WIDTH;
-
-    aXEWSz.Height() = nVSplitPos + 1;
     if ( m_pModulWindow )
     {
         DBG_CHKOBJ( m_pModulWindow, ModulWindow, 0 );
-        m_pModulWindow->SetPosSizePixel( Point( OBJCAT_PANE_WIDTH, 0 ), aXEWSz );
+        bool const bObjCat = aObjectCatalog.IsVisible();
+        m_pModulWindow->SetPosSizePixel(
+            Point(bObjCat ? OBJCAT_PANE_WIDTH : 0, 0),
+            Size(bObjCat ? aSz.Width() - OBJCAT_PANE_WIDTH : aSz.Width(), nVSplitPos + 1)
+        );
     }
 
     aVSplitter.SetDragRectPixel( Rectangle( Point( 0, 0 ), Size( aSz.Width(), aSz.Height() ) ) );
@@ -1540,10 +1540,12 @@ void ModulWindowLayout::ArrangeWindows()
     if ( !aStackWindow.IsFloatingMode() )
         aStackWindow.SetPosSizePixel( aSWPos, aSWSz );
 
-    Size aOCSz( OBJCAT_PANE_WIDTH, aSz.Height() - aSWSz.Height() - 3 );
-    Point aOCPos( 0, 0 );
     if ( !aObjectCatalog.IsFloatingMode() )
+    {
+        Size aOCSz( OBJCAT_PANE_WIDTH, aSz.Height() - aSWSz.Height() - 3 );
+        Point aOCPos( 0, 0 );
         aObjectCatalog.SetPosSizePixel( aOCPos, aOCSz );
+    }
 
     if ( aStackWindow.IsFloatingMode() && aWatchWindow.IsFloatingMode() )
         aHSplitter.Hide();
@@ -1733,4 +1735,16 @@ Image ModulWindowLayout::getImage(sal_uInt16 nId) const
     return m_aImagesNormal.GetImage(nId);
 }
 
+// shows or hides the Object Catalog window (depending on its state)
+void ModulWindowLayout::ToggleObjectCatalog ()
+{
+    // show or hide?
+    bool const bShow = !aObjectCatalog.IsVisible();
+    bShow ? aObjectCatalog.Show() : aObjectCatalog.Hide();
+    if (m_pModulWindow)
+        m_pModulWindow->SetObjectCatalogDisplay(bShow);
+    // refreshing
+    ArrangeWindows();
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basctl/source/basicide/baside2.hxx b/basctl/source/basicide/baside2.hxx
index 9e90a75..e13ce31 100644
--- a/basctl/source/basicide/baside2.hxx
+++ b/basctl/source/basicide/baside2.hxx
@@ -477,6 +477,8 @@ public:
 
     inline Color const & getSyntaxColor(TokenTypes eType) const
     { return m_aSyntaxColors[eType]; }
+
+    void ToggleObjectCatalog ();
 };
 
 #endif  // _BASIDE2_HXX
diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx
index d11ece3..ae9443f 100644
--- a/basctl/source/basicide/basides1.cxx
+++ b/basctl/source/basicide/basides1.cxx
@@ -439,26 +439,11 @@ void BasicIDEShell::ExecuteGlobal( SfxRequest& rReq )
             pWin->EditMacro( rInfo.GetMethod() );
         }
         break;
+
         case SID_BASICIDE_OBJCAT:
-        {
-            if ( bObjectCatalogDisplay )
-            {
-                pModulLayout->GetObjectCatalog().Hide();
-                dynamic_cast<ModulWindow*>(pCurWin)->SetPosPixel( Point( 0, 0 ) );
-                dynamic_cast<ModulWindow*>(pCurWin)->SetSizePixel( Size( pCurWin->GetSizePixel().Width() + OBJCAT_PANE_WIDTH, pCurWin->GetSizePixel().Height() ) );
-                dynamic_cast<ModulWindow*>(pCurWin)->SetObjectCatalogDisplay( false );
-                bObjectCatalogDisplay = sal_False;
-            }
-            else
-            {
-                pModulLayout->GetObjectCatalog().Show();
-                dynamic_cast<ModulWindow*>(pCurWin)->SetPosPixel( Point( OBJCAT_PANE_WIDTH, 0 ) );
-                dynamic_cast<ModulWindow*>(pCurWin)->SetSizePixel( Size( pCurWin->GetSizePixel().Width() - OBJCAT_PANE_WIDTH, pCurWin->GetSizePixel().Height() ) );
-                dynamic_cast<ModulWindow*>(pCurWin)->SetObjectCatalogDisplay( true );
-                bObjectCatalogDisplay = sal_True;
-            }
-        }
-        break;
+            pModulLayout->ToggleObjectCatalog();
+            break;
+
         case SID_BASICIDE_NAMECHANGEDONTAB:
         {
             DBG_ASSERT( rReq.GetArgs(), "arguments expected" );
diff --git a/basctl/source/basicide/basidesh.cxx b/basctl/source/basicide/basidesh.cxx
index 8144b17..885f7af 100644
--- a/basctl/source/basicide/basidesh.cxx
+++ b/basctl/source/basicide/basidesh.cxx
@@ -193,8 +193,6 @@ void BasicIDEShell::Init()
     pObjectCatalog = 0;
     bCreatingWindow = sal_False;
 
-    bObjectCatalogDisplay = sal_True;
-
     pTabBar = new BasicIDETabBar( &GetViewFrame()->GetWindow() );
     pTabBar->SetSplitHdl( LINK( this, BasicIDEShell, TabBarSplitHdl ) );
     bTabBarSplitted = sal_False;
diff --git a/basctl/source/inc/basidesh.hxx b/basctl/source/inc/basidesh.hxx
index 7ec8c84..9caf921 100644
--- a/basctl/source/inc/basidesh.hxx
+++ b/basctl/source/inc/basidesh.hxx
@@ -91,8 +91,6 @@ friend class LocalizationMgr;
 friend class ContainerListenerImpl;
     ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener > m_xLibListener;
 
-    sal_Bool            bObjectCatalogDisplay;
-
 #if _SOLAR__PRIVATE
     void                Init();
     void                InitTabBar();
-- 
1.7.7

_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to