You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by al...@apache.org on 2012/10/08 18:13:37 UTC
svn commit: r1395635 - in /incubator/ooo/trunk/main:
editeng/source/editeng/impedit.cxx svx/source/svdraw/svdedxv.cxx
svx/source/svdraw/svdotext.cxx svx/source/svdraw/svdotxed.cxx
Author: alg
Date: Mon Oct 8 16:13:37 2012
New Revision: 1395635
URL: http://svn.apache.org/viewvc?rev=1395635&view=rev
Log:
#119885# Made EditMode work with text boxes where text is reaching over the TextBox's bounds
Modified:
incubator/ooo/trunk/main/editeng/source/editeng/impedit.cxx
incubator/ooo/trunk/main/svx/source/svdraw/svdedxv.cxx
incubator/ooo/trunk/main/svx/source/svdraw/svdotext.cxx
incubator/ooo/trunk/main/svx/source/svdraw/svdotxed.cxx
Modified: incubator/ooo/trunk/main/editeng/source/editeng/impedit.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/editeng/source/editeng/impedit.cxx?rev=1395635&r1=1395634&r2=1395635&view=diff
==============================================================================
--- incubator/ooo/trunk/main/editeng/source/editeng/impedit.cxx (original)
+++ incubator/ooo/trunk/main/editeng/source/editeng/impedit.cxx Mon Oct 8 16:13:37 2012
@@ -49,7 +49,6 @@
#include <sot/exchange.hxx>
#include <sot/formats.hxx>
-
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::linguistic2;
@@ -449,67 +448,54 @@ void ImpEditView::SetOutputArea( const R
void ImpEditView::ResetOutputArea( const Rectangle& rRec )
{
- Rectangle aCurArea( aOutArea );
- SetOutputArea( rRec );
- // Umliegende Bereiche invalidieren, wenn UpdateMode der Engine auf sal_True
- if ( !aCurArea.IsEmpty() && pEditEngine->pImpEditEngine->GetUpdateMode() )
- {
- long nMore = 0;
- if ( DoInvalidateMore() )
- nMore = GetWindow()->PixelToLogic( Size( nInvMore, 0 ) ).Width();
- if ( aCurArea.Left() < aOutArea.Left() )
- {
- Rectangle aRect( aCurArea.TopLeft(),
- Size( aOutArea.Left()-aCurArea.Left(), aCurArea.GetHeight() ) );
- if ( nMore )
- {
- aRect.Left() -= nMore;
- aRect.Top() -= nMore;
- aRect.Bottom() += nMore;
- }
- GetWindow()->Invalidate( aRect );
- }
- if ( aCurArea.Right() > aOutArea.Right() )
- {
- long nW = aCurArea.Right() - aOutArea.Right();
- Point aPos( aCurArea.TopRight() );
- aPos.X() -= nW;
- Rectangle aRect( aPos, Size( nW, aCurArea.GetHeight() ) );
- if ( nMore )
- {
- aRect.Right() += nMore;
- aRect.Top() -= nMore;
- aRect.Bottom() += nMore;
- }
- GetWindow()->Invalidate( aRect );
- }
- if ( aCurArea.Top() < aOutArea.Top() )
- {
- Rectangle aRect( aCurArea.TopLeft(), Size( aCurArea.GetWidth(), aOutArea.Top() - aCurArea.Top() ) );
- if ( nMore )
- {
- aRect.Top() -= nMore;
- aRect.Left() -= nMore;
- aRect.Right() += nMore;
- }
- GetWindow()->Invalidate( aRect );
- }
- if ( aCurArea.Bottom() > aOutArea.Bottom() )
- {
- long nH = aCurArea.Bottom() - aOutArea.Bottom();
- Point aPos( aCurArea.BottomLeft() );
- aPos.Y() -= nH;
- Rectangle aRect( aPos, Size( aCurArea.GetWidth(), nH ) );
- if ( nMore )
- {
- aRect.Bottom() += nMore;
- aRect.Left() -= nMore;
- aRect.Right() += nMore;
- }
+ // remember old out area
+ const Rectangle aOldArea(aOutArea);
- GetWindow()->Invalidate( aRect );
- }
- }
+ // apply new one
+ SetOutputArea(rRec);
+
+ // invalidate surrounding areas if update is true
+ if(!aOldArea.IsEmpty() && pEditEngine->pImpEditEngine->GetUpdateMode())
+ {
+ // #119885# use grown area if needed; do when getting bigger OR smaller
+ const sal_Int32 nMore(DoInvalidateMore() ? GetWindow()->PixelToLogic(Size(nInvMore, 0)).Width() : 0);
+
+ if(aOldArea.Left() > aOutArea.Left())
+ {
+ GetWindow()->Invalidate(Rectangle(aOutArea.Left() - nMore, aOldArea.Top() - nMore, aOldArea.Left(), aOldArea.Bottom() + nMore));
+ }
+ else if(aOldArea.Left() < aOutArea.Left())
+ {
+ GetWindow()->Invalidate(Rectangle(aOldArea.Left() - nMore, aOldArea.Top() - nMore, aOutArea.Left(), aOldArea.Bottom() + nMore));
+ }
+
+ if(aOldArea.Right() > aOutArea.Right())
+ {
+ GetWindow()->Invalidate(Rectangle(aOutArea.Right(), aOldArea.Top() - nMore, aOldArea.Right() + nMore, aOldArea.Bottom() + nMore));
+ }
+ else if(aOldArea.Right() < aOutArea.Right())
+ {
+ GetWindow()->Invalidate(Rectangle(aOldArea.Right(), aOldArea.Top() - nMore, aOutArea.Right() + nMore, aOldArea.Bottom() + nMore));
+ }
+
+ if(aOldArea.Top() > aOutArea.Top())
+ {
+ GetWindow()->Invalidate(Rectangle(aOldArea.Left() - nMore, aOutArea.Top() - nMore, aOldArea.Right() + nMore, aOldArea.Top()));
+ }
+ else if(aOldArea.Top() < aOutArea.Top())
+ {
+ GetWindow()->Invalidate(Rectangle(aOldArea.Left() - nMore, aOldArea.Top() - nMore, aOldArea.Right() + nMore, aOutArea.Top()));
+ }
+
+ if(aOldArea.Bottom() > aOutArea.Bottom())
+ {
+ GetWindow()->Invalidate(Rectangle(aOldArea.Left() - nMore, aOutArea.Bottom(), aOldArea.Right() + nMore, aOldArea.Bottom() + nMore));
+ }
+ else if(aOldArea.Bottom() < aOutArea.Bottom())
+ {
+ GetWindow()->Invalidate(Rectangle(aOldArea.Left() - nMore, aOldArea.Bottom(), aOldArea.Right() + nMore, aOutArea.Bottom() + nMore));
+ }
+ }
}
void ImpEditView::RecalcOutputArea()
Modified: incubator/ooo/trunk/main/svx/source/svdraw/svdedxv.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svx/source/svdraw/svdedxv.cxx?rev=1395635&r1=1395634&r2=1395635&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svx/source/svdraw/svdedxv.cxx (original)
+++ incubator/ooo/trunk/main/svx/source/svdraw/svdedxv.cxx Mon Oct 8 16:13:37 2012
@@ -211,6 +211,7 @@ void SdrObjEditView::ModelHasChanged()
aMinArea1.Move(aPvOfs.X(),aPvOfs.Y());
Rectangle aNewArea(aMinArea1);
aNewArea.Union(aEditArea1);
+
if (aNewArea!=aOldArea || aEditArea1!=aTextEditArea || aMinArea1!=aMinTextEditArea ||
pTextEditOutliner->GetMinAutoPaperSize()!=aPaperMin1 || pTextEditOutliner->GetMaxAutoPaperSize()!=aPaperMax1) {
aTextEditArea=aEditArea1;
Modified: incubator/ooo/trunk/main/svx/source/svdraw/svdotext.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svx/source/svdraw/svdotext.cxx?rev=1395635&r1=1395634&r2=1395635&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svx/source/svdraw/svdotext.cxx (original)
+++ incubator/ooo/trunk/main/svx/source/svdraw/svdotext.cxx Mon Oct 8 16:13:37 2012
@@ -862,6 +862,17 @@ void SdrTextObj::TakeTextRect( SdrOutlin
if (eAniDirection==SDRTEXTANI_LEFT || eAniDirection==SDRTEXTANI_RIGHT) nWdt=1000000;
if (eAniDirection==SDRTEXTANI_UP || eAniDirection==SDRTEXTANI_DOWN) nHgt=1000000;
}
+
+ // #119885# Do not limit/force height to geometrical frame (vice versa for vertical writing)
+ if(IsVerticalWriting())
+ {
+ nWdt = 1000000;
+ }
+ else
+ {
+ nHgt = 1000000;
+ }
+
rOutliner.SetMaxAutoPaperSize(Size(nWdt,nHgt));
}
Modified: incubator/ooo/trunk/main/svx/source/svdraw/svdotxed.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svx/source/svdraw/svdotxed.cxx?rev=1395635&r1=1395634&r2=1395635&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svx/source/svdraw/svdotxed.cxx (original)
+++ incubator/ooo/trunk/main/svx/source/svdraw/svdotxed.cxx Mon Oct 8 16:13:37 2012
@@ -180,9 +180,20 @@ void SdrTextObj::TakeTextEditArea(Size*
if (!bFitToSize) {
if (nMaxWdt==0 || nMaxWdt>aMaxSiz.Width()) nMaxWdt=aMaxSiz.Width();
if (nMaxHgt==0 || nMaxHgt>aMaxSiz.Height()) nMaxHgt=aMaxSiz.Height();
- if (!IsAutoGrowWidth() ) { nMaxWdt=aAnkSiz.Width(); nMinWdt=nMaxWdt; }
- if (!IsAutoGrowHeight()) { nMaxHgt=aAnkSiz.Height(); nMinHgt=nMaxHgt; }
- SdrTextAniKind eAniKind=GetTextAniKind();
+
+ if (!IsAutoGrowWidth() )
+ {
+ nMinWdt = aAnkSiz.Width();
+ nMaxWdt = nMinWdt;
+ }
+
+ if (!IsAutoGrowHeight())
+ {
+ nMinHgt = aAnkSiz.Height();
+ nMaxHgt = nMinHgt;
+ }
+
+ SdrTextAniKind eAniKind=GetTextAniKind();
SdrTextAniDirection eAniDirection=GetTextAniDirection();
// #101684#
@@ -194,9 +205,22 @@ void SdrTextObj::TakeTextEditArea(Size*
if (eAniDirection==SDRTEXTANI_LEFT || eAniDirection==SDRTEXTANI_RIGHT) nMaxWdt=1000000;
if (eAniDirection==SDRTEXTANI_UP || eAniDirection==SDRTEXTANI_DOWN) nMaxHgt=1000000;
}
- aPaperMax.Width()=nMaxWdt;
+
+ // #119885# Do not limit/force height to geometrical frame (vice versa for vertical writing)
+ if(IsVerticalWriting())
+ {
+ nMaxWdt = 1000000;
+ }
+ else
+ {
+ nMaxHgt = 1000000;
+ }
+
+ aPaperMax.Width()=nMaxWdt;
aPaperMax.Height()=nMaxHgt;
- } else {
+ }
+ else
+ {
aPaperMax=aMaxSiz;
}
aPaperMin.Width()=nMinWdt;