Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


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"?= <uray.janos@gmail.com>
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


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.