}
void Image_setZoom(entity me, float z)
{
- if (z < 0)
- me.zoomFactor = -z;
- else if (z == 0)
+ if (z < 0) // multiply by the current zoomFactor
+ me.zoomFactor *= -z;
+ else if (z == 0) // reset (no zoom)
me.zoomFactor = 1;
- else
- me.zoomFactor *= z;
+ else // directly set
+ me.zoomFactor = z;
me.zoomFactor = bound(1/16, me.zoomFactor, 16);
if (me.zoomFactor <= 1)
me.zoomOffset = '0.5 0.5 0';
}
void increaseZoom_Click(entity btn, entity me)
{
- me.screenshotImage.setZoom(me.screenshotImage, 2);
+ me.screenshotImage.setZoom(me.screenshotImage, -2);
}
void decreaseZoom_Click(entity btn, entity me)
{
- me.screenshotImage.setZoom(me.screenshotImage, 1/2);
+ me.screenshotImage.setZoom(me.screenshotImage, -1/2);
}
void resetZoom_Click(entity btn, entity me)
{
}
return SUPER(XonoticScreenshotViewerDialog).keyDown(me, key, ascii, shift);
default:
- // mousewheel doesn't always reach the first/last screenshot
- if (key == K_MWHEELUP)
- key = K_PGUP;
- else if (key == K_MWHEELDOWN)
- key = K_PGDN;
+ if (key == K_MWHEELUP || ascii == '+')
+ {
+ me.screenshotImage.setZoom(me.screenshotImage, -2);
+ return 1;
+ }
+ else if (key == K_MWHEELDOWN || ascii == '-')
+ {
+ me.screenshotImage.setZoom(me.screenshotImage, -1/2);
+ return 1;
+ }
if (me.scrList.keyDown(me.scrList, key, ascii, shift))
{
// keyDown has already changed the selected item