Kaydet (Commit) f8d29fea authored tarafından Noel Grandin's avatar Noel Grandin

handle empty tools::Rectangle in svx

Change-Id: I45e26c9cdc00ae6d3bc56534d612b83b5ac26074
Reviewed-on: https://gerrit.libreoffice.org/72125
Tested-by: Jenkins
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 08b79ade
......@@ -212,8 +212,9 @@ void DialControlBmp::DrawBackground()
SetLineColor();
SetFillColor( GetBackgroundColor() );
DrawEllipse( tools::Rectangle( maRect.Left() + DIAL_OUTER_WIDTH, maRect.Top() + DIAL_OUTER_WIDTH,
maRect.Right() - DIAL_OUTER_WIDTH, maRect.Bottom() - DIAL_OUTER_WIDTH ) );
tools::Rectangle aEllipseRect = maRect;
aEllipseRect.shrink(DIAL_OUTER_WIDTH);
DrawEllipse( aEllipseRect );
}
......
......@@ -501,17 +501,26 @@ void SdrObjGroup::SetSnapRect(const tools::Rectangle& rRect)
{
tools::Rectangle aBoundRect0; if (pUserCall!=nullptr) aBoundRect0=GetLastBoundRect();
tools::Rectangle aOld(GetSnapRect());
long nMulX=rRect.Right()-rRect.Left();
long nDivX=aOld.Right()-aOld.Left();
long nMulY=rRect.Bottom()-rRect.Top();
long nDivY=aOld.Bottom()-aOld.Top();
if (nDivX==0) { nMulX=1; nDivX=1; }
if (nDivY==0) { nMulY=1; nDivY=1; }
if (nMulX!=nDivX || nMulY!=nDivY) {
Fraction aX(nMulX,nDivX);
Fraction aY(nMulY,nDivY);
if (aOld.IsEmpty())
{
Fraction aX(1,1);
Fraction aY(1,1);
Resize(aOld.TopLeft(),aX,aY);
}
else
{
long nMulX=rRect.Right()-rRect.Left();
long nDivX=aOld.Right()-aOld.Left();
long nMulY=rRect.Bottom()-rRect.Top();
long nDivY=aOld.Bottom()-aOld.Top();
if (nDivX==0) { nMulX=1; nDivX=1; }
if (nDivY==0) { nMulY=1; nDivY=1; }
if (nMulX!=nDivX || nMulY!=nDivY) {
Fraction aX(nMulX,nDivX);
Fraction aY(nMulY,nDivY);
Resize(aOld.TopLeft(),aX,aY);
}
}
if (rRect.Left()!=aOld.Left() || rRect.Top()!=aOld.Top()) {
Move(Size(rRect.Left()-aOld.Left(),rRect.Top()-aOld.Top()));
}
......
......@@ -2362,6 +2362,14 @@ void SdrPathObj::RecalcSnapRect()
void SdrPathObj::NbcSetSnapRect(const tools::Rectangle& rRect)
{
tools::Rectangle aOld(GetSnapRect());
if (aOld.IsEmpty())
{
Fraction aX(1,1);
Fraction aY(1,1);
NbcResize(aOld.TopLeft(), aX, aY);
NbcMove(Size(rRect.Left() - aOld.Left(), rRect.Top() - aOld.Top()));
return;
}
// Take empty into account when calculating scale factors
long nMulX = rRect.IsWidthEmpty() ? 0 : rRect.Right() - rRect.Left();
......
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