From a7b8bf7b993eef37beaa9af45a3233f303e0c8d1 Mon Sep 17 00:00:00 2001 From: John Scipione Date: Thu, 6 Aug 2026 12:15:02 -0400 Subject: [PATCH] Tracker: Do not start edit while dragging, fixes #20176. We have to check for dragging in Pulse(), it's too late to check this by the time we have gotten to StartEdit(). A bit of additional cleanup including some related comments. Change-Id: Id292d73593d12028e7368c50dac0869c4a7df94b Reviewed-on: https://review.haiku-os.org/c/haiku/+/11439 Tested-by: Commit checker robot Reviewed-by: waddlesplash Haiku-Format: Haiku-format Bot --- src/kits/tracker/PoseView.cpp | 5 ++--- src/kits/tracker/TextWidget.cpp | 12 +++--------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp index 90c18c0810..2f4ff385a0 100644 --- a/src/kits/tracker/PoseView.cpp +++ b/src/kits/tracker/PoseView.cpp @@ -970,9 +970,8 @@ BPoseView::Pulse() } } - // do we have a TextWidget waiting for expiracy of its double-click - // check? - if (fTextWidgetToCheck != NULL) + // Do we have a TextWidget waiting for its double-click check to expire? + if (fTextWidgetToCheck != NULL && !IsDragging()) fTextWidgetToCheck->CheckExpiration(); } diff --git a/src/kits/tracker/TextWidget.cpp b/src/kits/tracker/TextWidget.cpp index ff39b48b93..d9143b752b 100644 --- a/src/kits/tracker/TextWidget.cpp +++ b/src/kits/tracker/TextWidget.cpp @@ -244,21 +244,19 @@ BTextWidget::CalcClickRect(BPoint poseLoc, const BColumn* column, const BPoseVie void BTextWidget::CheckExpiration() { - if (IsEditable() && fParams.pose->IsSelected() && fLastClickedTime) { + if (fLastClickedTime > 0 && IsEditable() && fParams.pose->IsSelected()) { bigtime_t doubleClickSpeed; get_click_speed(&doubleClickSpeed); bigtime_t delta = system_time() - fLastClickedTime; if (delta > doubleClickSpeed) { - // at least 'doubleClickSpeed' microseconds ellapsed and no click - // was registered since. + // at least 'doubleClickSpeed' microseconds elapsed with no click fLastClickedTime = 0; StartEdit(fParams.bounds, fParams.poseView, fParams.pose); } } else { - fLastClickedTime = 0; - fParams.poseView->SetTextWidgetToCheck(NULL); + CancelWait(); } } @@ -445,10 +443,6 @@ BTextWidget::StartEdit(BRect bounds, BPoseView* view, BPose* pose) if (!IsEditable() || IsActive()) return; - // do not start edit while dragging - if (view->IsDragging()) - return; - view->SetActiveTextWidget(this); // The initial text color has to be set differently on Desktop