diff --git a/uppsrc/IconDes/Bar.cpp b/uppsrc/IconDes/Bar.cpp index b358d9f41..484394859 100644 --- a/uppsrc/IconDes/Bar.cpp +++ b/uppsrc/IconDes/Bar.cpp @@ -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() diff --git a/uppsrc/IconDes/IconDes.cpp b/uppsrc/IconDes/IconDes.cpp index 85313075c..8a6c14145 100644 --- a/uppsrc/IconDes/IconDes.cpp +++ b/uppsrc/IconDes/IconDes.cpp @@ -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() diff --git a/uppsrc/IconDes/Paint.cpp b/uppsrc/IconDes/Paint.cpp index 6c17dbdae..3d9ff3c46 100644 --- a/uppsrc/IconDes/Paint.cpp +++ b/uppsrc/IconDes/Paint.cpp @@ -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);