- int const delta = ev->delta() / 120;
- if (ev->modifiers() & Qt::ControlModifier) {
- docstring arg = convert<docstring>(5 * delta);
+ double const delta = ev->delta() / 120.0;
+ bool zoom = false;
+ switch (lyxrc.scroll_wheel_zoom) {
+ case LyXRC::SCROLL_WHEEL_ZOOM_CTRL:
+ zoom = ev->modifiers() & Qt::ControlModifier;
+ zoom &= !(ev->modifiers() & (Qt::ShiftModifier | Qt::AltModifier));
+ break;
+ case LyXRC::SCROLL_WHEEL_ZOOM_SHIFT:
+ zoom = ev->modifiers() & Qt::ShiftModifier;
+ zoom &= !(ev->modifiers() & (Qt::ControlModifier | Qt::AltModifier));
+ break;
+ case LyXRC::SCROLL_WHEEL_ZOOM_ALT:
+ zoom = ev->modifiers() & Qt::AltModifier;
+ zoom &= !(ev->modifiers() & (Qt::ShiftModifier | Qt::ControlModifier));
+ break;
+ case LyXRC::SCROLL_WHEEL_ZOOM_OFF:
+ break;
+ }
+ if (zoom) {
+ docstring arg = convert<docstring>(int(5 * delta));