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