From f67693b2e0dc8dc8e89a44b2db17fc1f6bc64931 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Fri, 23 May 2014 22:22:02 -0300 Subject: [PATCH] Make mouse dragging work as it should. This patch makes mouse dragging work as it should, a tiny bit different than the old version, but I think it's a better way. What's missing: Keyboard actions. Signed-off-by: Tomaz Canabrava Signed-off-by: Dirk Hohndel --- qt-ui/profile/profilewidget2.cpp | 21 +++++++++++++++++++-- qt-ui/profile/profilewidget2.h | 1 + 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp index dd4ecca85..b1bf57f9f 100644 --- a/qt-ui/profile/profilewidget2.cpp +++ b/qt-ui/profile/profilewidget2.cpp @@ -1009,12 +1009,29 @@ void ProfileWidget2::repositionDiveHandlers() } } +int ProfileWidget2::fixHandlerIndex(DiveHandler *activeHandler) +{ + int index = handles.indexOf(activeHandler); + if (index > 0 && index < handles.count() - 1) { + DiveHandler *before = handles[index - 1]; + if (before->pos().x() > activeHandler->pos().x()) { + handles.swap(index, index-1); + return index - 1; + } + DiveHandler *after = handles[index + 1]; + if (after->pos().x() < activeHandler->pos().x()) { + handles.swap(index, index+1); + return index + 1; + } + } + return index; +} + void ProfileWidget2::recreatePlannedDive() { DiveHandler *activeHandler = qobject_cast(sender()); DivePlannerPointsModel *plannerModel = DivePlannerPointsModel::instance(); - int index = handles.indexOf(activeHandler); - + int index = fixHandlerIndex(activeHandler); int mintime = 0, maxtime = (timeAxis->maximum() + 10) * 60; if (index > 0) mintime = plannerModel->at(index - 1).time; diff --git a/qt-ui/profile/profilewidget2.h b/qt-ui/profile/profilewidget2.h index 1c1258de5..4b1d881de 100644 --- a/qt-ui/profile/profilewidget2.h +++ b/qt-ui/profile/profilewidget2.h @@ -149,6 +149,7 @@ private: QList handles; QList gases; void repositionDiveHandlers(); + int fixHandlerIndex(DiveHandler *activeHandler); }; #endif // PROFILEWIDGET2_H