IconDes: fixed divide by zero issue

git-svn-id: svn://ultimatepp.org/upp/trunk@11936 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2018-05-09 08:27:37 +00:00
parent 444648324f
commit 6c7efb2a80
3 changed files with 7 additions and 4 deletions

View file

@ -44,12 +44,12 @@ void IconDes::SetMagnify(int mag)
void IconDes::ZoomIn()
{
SetMagnify(magnify+2);
SetMagnify(max(magnify, 1) + 2);
}
void IconDes::ZoomOut()
{
SetMagnify(magnify-2);
SetMagnify(max(magnify, 1) - 2);
}
void IconDes::DoPaste()

View file

@ -52,14 +52,16 @@ void IconDes::SyncShow()
void IconDes::SetSb()
{
magnify = max(magnify, 1);
if(IsCurrent()) {
sb.SetTotal(GetImageSize());
sb.SetPage(GetSize() / max(magnify, 1));
sb.SetPage(GetSize() / magnify);
}
}
void IconDes::Scroll()
{
magnify = max(magnify, 1);
scroller.Scroll(*this, GetSize(), sb, Size(magnify, magnify));
}
@ -101,7 +103,7 @@ void IconDes::SetCurrentImage(ImageBuffer& ib)
Point IconDes::GetPos(Point p)
{
return p / magnify + sb;
return p / max(magnify, 1) + sb;
}
void IconDes::FinishPaste()

View file

@ -53,6 +53,7 @@ void IconDes::Paint(Draw& w)
scroller.Set(spos);
Size isz = image.GetSize();
bool pastepaint = HasCapture() && IsPasting();
magnify = max(magnify, 1);
if(magnify == 1) {
w.DrawRect(sz, SColorPaper());
ImageBuffer pb(isz);