From 26d0a387e849f7d7941f33504ba2979a35db01fd Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sat, 8 Aug 2020 15:12:24 +0200 Subject: [PATCH] DeskBar raise-to-front: reintroduce fLastClickTime This was removed in hrev33708 when enabling the "double click to raise" feature. It results in all clicks after the first one just raising the team again. Fixes #8471 --- src/apps/deskbar/ExpandoMenuBar.cpp | 14 ++++++++++++-- src/apps/deskbar/ExpandoMenuBar.h | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/apps/deskbar/ExpandoMenuBar.cpp b/src/apps/deskbar/ExpandoMenuBar.cpp index fa3eca64a1..e63ec59790 100644 --- a/src/apps/deskbar/ExpandoMenuBar.cpp +++ b/src/apps/deskbar/ExpandoMenuBar.cpp @@ -96,7 +96,8 @@ TExpandoMenuBar::TExpandoMenuBar(menu_layout layout, TBarView* barView) fFirstBuild(true), fPreviousDragTargetItem(NULL), fLastMousedOverItem(NULL), - fLastClickedItem(NULL) + fLastClickedItem(NULL), + fLastClickTime(0) { SetItemMargins(0.0f, 0.0f, 0.0f, 0.0f); SetFont(be_plain_font); @@ -333,14 +334,23 @@ TExpandoMenuBar::MouseDown(BPoint where) // double-click on an item brings the team to front int32 clicks; + bigtime_t clickSpeed = 0; + get_click_speed(&clickSpeed); + bigtime_t delta = system_time() - fLastClickTime; if (message->FindInt32("clicks", &clicks) == B_OK && clicks > 1 - && item == menuItem && item == fLastClickedItem) { + && item == menuItem && item == fLastClickedItem + && delta <= clickSpeed) { be_roster->ActivateApp((addr_t)item->Teams()->ItemAt(0)); // activate this team return; // absorb the message } + // Update fLastClickTime only if we are not already triggering the + // double-click action. Otherwise the delay is renewed at every subsequent + // click and they keep triggering the double click action + fLastClickTime = system_time(); + BMenuBar::MouseDown(where); } diff --git a/src/apps/deskbar/ExpandoMenuBar.h b/src/apps/deskbar/ExpandoMenuBar.h index 372c9e5ce3..facabecbe0 100644 --- a/src/apps/deskbar/ExpandoMenuBar.h +++ b/src/apps/deskbar/ExpandoMenuBar.h @@ -129,6 +129,7 @@ private: TTeamMenuItem* fPreviousDragTargetItem; BMenuItem* fLastMousedOverItem; BMenuItem* fLastClickedItem; + bigtime_t fLastClickTime; BList fTeamList; static bool sDoMonitor;