diff options
Diffstat (limited to 'src/ui/widget/rotateable.cpp')
| -rw-r--r-- | src/ui/widget/rotateable.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/ui/widget/rotateable.cpp b/src/ui/widget/rotateable.cpp index 64b37a07f..6c2056da1 100644 --- a/src/ui/widget/rotateable.cpp +++ b/src/ui/widget/rotateable.cpp @@ -34,7 +34,7 @@ Rotateable::Rotateable(): signal_button_press_event().connect(sigc::mem_fun(*this, &Rotateable::on_click)); signal_motion_notify_event().connect(sigc::mem_fun(*this, &Rotateable::on_motion)); signal_button_release_event().connect(sigc::mem_fun(*this, &Rotateable::on_release)); - gtk_widget_add_events(GTK_WIDGET(gobj()), GDK_SCROLL_MASK); + gtk_widget_add_events(GTK_WIDGET(gobj()), GDK_SCROLL_MASK | GDK_SMOOTH_SCROLL_MASK); signal_scroll_event().connect(sigc::mem_fun(*this, &Rotateable::on_scroll)); } @@ -139,6 +139,9 @@ bool Rotateable::on_scroll(GdkEventScroll* event) change = 1.0; } else if (event->direction == GDK_SCROLL_DOWN) { change = -1.0; + } else if (event->direction == GDK_SCROLL_SMOOTH) { + double delta_y_clamped = CLAMP(event->delta_y, -1.0, 1.0); // values > 1 result in excessive changes + change = 1.0 * -delta_y_clamped; } else { return FALSE; } |
