Kaydet (Commit) b83edcf0 authored tarafından abdulmajeed ahmed's avatar abdulmajeed ahmed

fdo#56412 Movement of embedded objects is opposite to the change direction

not a perfect solution but best we can get without large rework.

Change-Id: I4a8c6eb611dd88cb29999b10b80a914c66a11c1c
üst ed0646e5
...@@ -210,31 +210,50 @@ Point SvResizeHelper::GetTrackPosPixel( const Rectangle & rRect ) const ...@@ -210,31 +210,50 @@ Point SvResizeHelper::GetTrackPosPixel( const Rectangle & rRect ) const
Point aBR = aOuter.BottomRight(); Point aBR = aOuter.BottomRight();
Point aTR = aOuter.TopRight(); Point aTR = aOuter.TopRight();
Point aBL = aOuter.BottomLeft(); Point aBL = aOuter.BottomLeft();
bool bRTL = Application::GetSettings().GetLayoutRTL();
switch( nGrab ) switch( nGrab )
{ {
case 0: case 0:
// FIXME: disable it for RTL because it's wrong calculations
if( bRTL )
break;
aPos = aRect.TopLeft() - aOuter.TopLeft(); aPos = aRect.TopLeft() - aOuter.TopLeft();
break; break;
case 1: case 1:
aPos.Y() = aRect.Top() - aOuter.Top(); aPos.Y() = aRect.Top() - aOuter.Top();
break; break;
case 2: case 2:
// FIXME: disable it for RTL because it's wrong calculations
if( bRTL )
break;
aPos = aRect.TopRight() - aTR; aPos = aRect.TopRight() - aTR;
break; break;
case 3: case 3:
aPos.X() = aRect.Right() - aTR.X(); if( bRTL )
aPos.X() = aRect.Left() - aTR.X();
else
aPos.X() = aRect.Right() - aTR.X();
break; break;
case 4: case 4:
// FIXME: disable it for RTL because it's wrong calculations
if( bRTL )
break;
aPos = aRect.BottomRight() - aBR; aPos = aRect.BottomRight() - aBR;
break; break;
case 5: case 5:
aPos.Y() = aRect.Bottom() - aBR.Y(); aPos.Y() = aRect.Bottom() - aBR.Y();
break; break;
case 6: case 6:
// FIXME: disable it for RTL because it's wrong calculations
if( bRTL )
break;
aPos = aRect.BottomLeft() - aBL; aPos = aRect.BottomLeft() - aBL;
break; break;
case 7: case 7:
aPos.X() = aRect.Left() - aOuter.Left(); if( bRTL )
aPos.X() = aRect.Right() + aOuter.Right() - aOuter.TopRight().X();
else
aPos.X() = aRect.Left() - aOuter.Left();
break; break;
case 8: case 8:
aPos = aRect.TopLeft() - aOuter.TopLeft(); aPos = aRect.TopLeft() - aOuter.TopLeft();
...@@ -256,38 +275,63 @@ Rectangle SvResizeHelper::GetTrackRectPixel( const Point & rTrackPos ) const ...@@ -256,38 +275,63 @@ Rectangle SvResizeHelper::GetTrackRectPixel( const Point & rTrackPos ) const
Point aDiff = rTrackPos - aSelPos; Point aDiff = rTrackPos - aSelPos;
aTrackRect = aOuter; aTrackRect = aOuter;
Point aBR = aOuter.BottomRight(); Point aBR = aOuter.BottomRight();
bool bRTL = Application::GetSettings().GetLayoutRTL();
switch( nGrab ) switch( nGrab )
{ {
case 0: case 0:
aTrackRect.Top() += aDiff.Y(); aTrackRect.Top() += aDiff.Y();
aTrackRect.Left() += aDiff.X(); // ugly solution for resizing OLE objects in RTL
if( bRTL )
aTrackRect.Right() = aBR.X() - aDiff.X();
else
aTrackRect.Left() += aDiff.X();
break; break;
case 1: case 1:
aTrackRect.Top() += aDiff.Y(); aTrackRect.Top() += aDiff.Y();
break; break;
case 2: case 2:
aTrackRect.Top() += aDiff.Y(); aTrackRect.Top() += aDiff.Y();
aTrackRect.Right() = aBR.X() + aDiff.X(); // ugly solution for resizing OLE objects in RTL
if( bRTL )
aTrackRect.Left() -= aDiff.X();
else
aTrackRect.Right() = aBR.X() + aDiff.X();
break; break;
case 3: case 3:
aTrackRect.Right() = aBR.X() + aDiff.X(); // ugly solution for resizing OLE objects in RTL
if( bRTL )
aTrackRect.Left() -= aDiff.X();
else
aTrackRect.Right() = aBR.X() + aDiff.X();
break; break;
case 4: case 4:
aTrackRect.Bottom() = aBR.Y() + aDiff.Y(); aTrackRect.Bottom() = aBR.Y() + aDiff.Y();
aTrackRect.Right() = aBR.X() + aDiff.X(); // ugly solution for resizing OLE objects in RTL
if( bRTL )
aTrackRect.Left() -= aDiff.X();
else
aTrackRect.Right() = aBR.X() + aDiff.X();
break; break;
case 5: case 5:
aTrackRect.Bottom() = aBR.Y() + aDiff.Y(); aTrackRect.Bottom() = aBR.Y() + aDiff.Y();
break; break;
case 6: case 6:
aTrackRect.Bottom() = aBR.Y() + aDiff.Y(); aTrackRect.Bottom() = aBR.Y() + aDiff.Y();
aTrackRect.Left() += aDiff.X(); // ugly solution for resizing OLE objects in RTL
if( bRTL )
aTrackRect.Right() = aBR.X() - aDiff.X();
else
aTrackRect.Left() += aDiff.X();
break; break;
case 7: case 7:
aTrackRect.Left() += aDiff.X(); // ugly solution for resizing OLE objects in RTL
if( bRTL )
aTrackRect.Right() = aBR.X() - aDiff.X();
else
aTrackRect.Left() += aDiff.X();
break; break;
case 8: case 8:
if( Application::GetSettings().GetLayoutRTL() ) if( bRTL )
aDiff.X() = -aDiff.X(); // workaround for move in RTL mode aDiff.X() = -aDiff.X(); // workaround for move in RTL mode
aTrackRect.SetPos( aTrackRect.TopLeft() + aDiff ); aTrackRect.SetPos( aTrackRect.TopLeft() + aDiff );
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment