void Viewport::drag()
{
drag_offset_ = view_.offset();
+ drag_v_offset_ = view_.owner_visual_v_offset();
}
void Viewport::drag_by(const QPoint &delta)
view_.set_scale_offset(view_.scale(),
(*drag_offset_ - delta.x() * view_.scale()));
+
+ view_.set_v_offset(-drag_v_offset_ - delta.y());
}
void Viewport::drag_release()
{
assert(e);
- if (e->orientation() == Qt::Vertical)
- {
+ if (e->orientation() == Qt::Vertical) {
if (e->modifiers() & Qt::ControlModifier) {
// Vertical scrolling with the control key pressed
// is intrepretted as vertical scrolling
// Vertical scrolling is interpreted as zooming in/out
view_.zoom(e->delta() / 120, e->x());
}
- }
- else if (e->orientation() == Qt::Horizontal)
- {
+ } else if (e->orientation() == Qt::Horizontal) {
// Horizontal scrolling is interpreted as moving left/right
view_.set_scale_offset(view_.scale(),
e->delta() * view_.scale() + view_.offset());