Here is the patch for EasyHack 32719. I have also discovered another bug
relating to Impress Templates, documented here:

https://bugs.freedesktop.org/show_bug.cgi?id=39705

I am submitting this under the LGPLv3+/MPL 1.1 license.

Thanks,
-- 
--Jeffrey Chang
From cc0eaea9cbb38dfab3ac92641b29822a9631bcb6 Mon Sep 17 00:00:00 2001
From: Jeffrey Chang <jeffdch...@gmail.com>
Date: Tue, 2 Aug 2011 00:24:08 +0800
Subject: [PATCH] Fixed the textbox dimension problem on MasterPages in impress.

---
 sd/source/core/sdpage.cxx |   67 ++++++++++++++++++++++++---------------------
 1 files changed, 36 insertions(+), 31 deletions(-)

diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 8af853f..451299c 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -850,6 +850,7 @@ void SdPage::CreateTitleAndLayout(sal_Bool bInit, sal_Bool bCreate )
             SdrObject* pNumber = pMasterPage->GetPresObj( PRESOBJ_SLIDENUMBER );
             if( pNumber == NULL )
                 pMasterPage->CreateDefaultPresObj( PRESOBJ_SLIDENUMBER, true );
+
         }
     }
 }
@@ -921,8 +922,8 @@ SdrObject* SdPage::CreateDefaultPresObj(PresObjKind eObjKind, bool bInsert)
             // create header&footer objects for handout and notes master
             Point aTitlePos ( GetLftBorder(), GetUppBorder() );
             Size aPageSize ( GetSize() );
-            aPageSize.Width()  -= GetLftBorder() + GetRgtBorder();
-            aPageSize.Height() -= GetUppBorder() + GetLwrBorder();
+            aPageSize.Width()  -= GetLftBorder() + GetRgtBorder()*5;
+            aPageSize.Height() -= GetUppBorder() + GetLwrBorder()*5;
 
 
             const int NOTES_HEADER_FOOTER_WIDTH = long(aPageSize.Width() * 0.434);
@@ -1070,8 +1071,8 @@ Rectangle SdPage::GetLayoutRect() const
         {
             aLayoutPos.X() += long( aLayoutSize.Width() * 0.05 );
             aLayoutPos.Y() += long( aLayoutSize.Height() * 0.234 );
-            aLayoutSize.Width() = long( aLayoutSize.Width() * 0.9 );
-            aLayoutSize.Height() = long( aLayoutSize.Height() * 0.66 );
+            aLayoutSize.Width() = long( aLayoutSize.Width() * 0.88 );
+            aLayoutSize.Height() = long( aLayoutSize.Height() * 0.58 );
             aLayoutRect.SetPos(aLayoutPos);
             aLayoutRect.SetSize(aLayoutSize);
         }
@@ -1209,22 +1210,21 @@ static void CalcAutoLayoutRectangles( SdPage& rPage, int nLayout, Rectangle* rRe
 
     sal_Bool    bRightToLeft = ( rPage.GetModel() && static_cast< SdDrawDocument* >( rPage.GetModel() )->GetDefaultWritingMode() == ::com::sun::star::text::WritingMode_RL_TB );
 
+    //aLayoutSize.Height() = long (aLayoutSize.Height() * 0.85);
+
     switch( nLayout )
     {
     case 0: // default layout using only the title and layout area
-        break; // do nothing
-    case 1: // title, 2 shapes
-    case 9: // title, 2 vertical shapes
-        aLayoutSize.Width()  = long (aLayoutSize.Width() * 0.488);
+        {
         rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
-
         aLayoutPos.X() = long (aLayoutPos.X() + aLayoutSize.Width() * 1.05);
-        rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
-
-        if( bRightToLeft && (nLayout != 9) )
-            ::std::swap< Rectangle >( rRectangle[1], rRectangle[2] );
-        break;
+        break; // do nothing
+        }
+    case 1: // title, 2 shapes
+        {
+        }
     case 2: // title, shape, 2 shapes
+        {
         aTempPnt = aLayoutPos;
         aTempSize = aLayoutSize;
         aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
@@ -1246,7 +1246,9 @@ static void CalcAutoLayoutRectangles( SdPage& rPage, int nLayout, Rectangle* rRe
             rRectangle[3].Left() = rRectangle[2].Left();
         }
         break;
+        }
     case 3: // title, 2 shapes, shape
+        {
         aTempPnt = aLayoutPos;
         aTempSize = aLayoutSize;
         aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
@@ -1268,15 +1270,18 @@ static void CalcAutoLayoutRectangles( SdPage& rPage, int nLayout, Rectangle* rRe
             rRectangle[3].Left() = rRectangle[2].Left();
         }
         break;
+        }
     case 4: // title, shape above shape
+        {
         aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
         rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
 
         aLayoutPos.Y() = long (aLayoutPos.Y() + aLayoutSize.Height() * 1.095);
         rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
         break;
-
+        }
     case 5: // title, 2 shapes above shape
+        {
         aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
         aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
         rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
@@ -1290,6 +1295,7 @@ static void CalcAutoLayoutRectangles( SdPage& rPage, int nLayout, Rectangle* rRe
         aLayoutSize.Width() = long (aLayoutSize.Width() / 0.488);
         rRectangle[3] = Rectangle (aLayoutPos, aLayoutSize);
         break;
+        }
     case 6: // title, 4 shapes
     {
         sal_uLong nX = long (aLayoutPos.X());
@@ -1311,6 +1317,7 @@ static void CalcAutoLayoutRectangles( SdPage& rPage, int nLayout, Rectangle* rRe
     case 7: // vertical title, shape above shape
     {
         Size aSize( rRectangle[0].GetSize().Height(), rRectangle[1].BottomLeft().Y() - rRectangle[0].TopLeft().Y() );
+        //aSize.Height() = long (aSize.Height() * 0.85);
         rRectangle[0].SetSize( aSize );
         rRectangle[0].SetPos( aTitleRect.TopRight() - Point( aSize.Width(), 0 ) );
 
@@ -1332,6 +1339,7 @@ static void CalcAutoLayoutRectangles( SdPage& rPage, int nLayout, Rectangle* rRe
     case 8: // vertical title, shape
     {
         Size aSize( rRectangle[0].GetSize().Height(), rRectangle[1].BottomLeft().Y() - rRectangle[0].TopLeft().Y() );
+        //aSize.Height() = long (aSize.Height() * 0.85);
         rRectangle[0].SetSize( aSize );
         rRectangle[0].SetPos( aTitleRect.TopRight() - Point( aSize.Width(), 0 ) );
 
@@ -1343,9 +1351,21 @@ static void CalcAutoLayoutRectangles( SdPage& rPage, int nLayout, Rectangle* rRe
         rRectangle[1].SetSize( aSize );
         break;
     }
+    case 9: // title, 2 vertical shapes
+        {
+        aLayoutSize.Width()  = long (aLayoutSize.Width() * 0.488);
+        rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
+        aLayoutPos.X() = long (aLayoutPos.X() + aLayoutSize.Width() * 1.05);
+        rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
+
+        if( bRightToLeft && (nLayout != 9) )
+            ::std::swap< Rectangle >( rRectangle[1], rRectangle[2] );
+        break;
+        }
     case 10: // onlytext
     {
         Size aSize( rRectangle[0].GetSize().Width(), rRectangle[1].BottomLeft().Y() - rRectangle[0].TopLeft().Y() );
+        //aSize.Height() = long (aSize.Height() * 0.85);
         rRectangle[0].SetSize( aSize );
         rRectangle[0].SetPos( aTitlePos);
         break;
@@ -1462,7 +1482,7 @@ void findAutoLayoutShapesImpl( SdPage& rPage, const LayoutDescriptor& rDescripto
                 case PRESOBJ_GRAPHIC:
                     bFound = eSdrObjKind == OBJ_GRAF;
                     break;
-                case PRESOBJ_OBJECT:
+                case PRESOBJ_OBJECT://WHAT The...
                     if( eSdrObjKind == OBJ_OLE2 )
                     {
                         SdrOle2Obj* pOle2 = dynamic_cast< SdrOle2Obj* >( pObj );
@@ -2406,21 +2426,6 @@ void SdPage::SetObjText(SdrTextObj* pObj, SdrOutliner* pOutliner, PresObjKind eO
 
                     aString += String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\n\t\t\t\t" ));
                     aString += String ( SdResId( STR_PRESOBJ_MPOUTLLAYER4 ) );
-
-                    aString += String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\n\t\t\t\t\t" ));
-                    aString += String ( SdResId( STR_PRESOBJ_MPOUTLLAYER5 ) );
-
-                    aString += String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\n\t\t\t\t\t\t" ));
-                    aString += String ( SdResId( STR_PRESOBJ_MPOUTLLAYER6 ) );
-
-                    aString += String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\n\t\t\t\t\t\t\t" ));
-                    aString += String ( SdResId( STR_PRESOBJ_MPOUTLLAYER7 ) );
-
-                    aString += String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\n\t\t\t\t\t\t\t\t" ));
-                    aString += String ( SdResId( STR_PRESOBJ_MPOUTLLAYER8 ) );
-
-                    aString += String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\n\t\t\t\t\t\t\t\t\t" ));
-                    aString += String ( SdResId( STR_PRESOBJ_MPOUTLLAYER9 ) );
                 }
             }
             break;
-- 
1.7.3.4

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to