From 9a8c053e047f96911386c106ed6cfbcd5c91f758 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Mon, 2 May 2016 10:49:24 -0400 Subject: [PATCH] Improve the logic for tool tips --- src/widgets/Ruler.cpp | 24 +++++++++++------------- src/widgets/Ruler.h | 30 ++++++++++++++++-------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/widgets/Ruler.cpp b/src/widgets/Ruler.cpp index 890bb1d1d..773ac7912 100644 --- a/src/widgets/Ruler.cpp +++ b/src/widgets/Ruler.cpp @@ -1898,7 +1898,7 @@ void AdornedRulerPanel::UpdatePrefs() // Affected by the last UpdateRects(); - RegenerateTooltips(); + RegenerateTooltips(mPrevZone); mButtonFontSize = -1; } @@ -1933,7 +1933,7 @@ void AdornedRulerPanel::InvalidateRuler() mRuler.Invalidate(); } -void AdornedRulerPanel::RegenerateTooltips() +void AdornedRulerPanel::RegenerateTooltips(StatusChoice choice) { #if wxUSE_TOOLTIPS if (mTimelineToolTip) { @@ -1941,7 +1941,7 @@ void AdornedRulerPanel::RegenerateTooltips() this->SetToolTip(_("Timeline actions disabled during recording")); } else { - switch(mPrevZone) { + switch(choice) { case StatusChoice::QuickPlayButton : case StatusChoice::EnteringQP : if (!mQuickPlayEnabled) { @@ -1996,7 +1996,7 @@ void AdornedRulerPanel::OnCapture(wxCommandEvent & evt) SetCursor(mCursorHand); mIsRecording = false; } - RegenerateTooltips(); + RegenerateTooltips(mPrevZone); } enum : int { @@ -2184,7 +2184,7 @@ void AdornedRulerPanel::OnMouseEvents(wxMouseEvent &evt) ? StatusChoice::EnteringScrubZone : StatusChoice::EnteringQP; const bool changeInZone = (zone != mPrevZone); - mPrevZone = zone; + const bool changing = evt.Leaving() || evt.Entering() || changeInZone; wxCoord xx = evt.GetX(); wxCoord mousePosX = xx; @@ -2198,11 +2198,9 @@ void AdornedRulerPanel::OnMouseEvents(wxMouseEvent &evt) } // Handle status bar messages - UpdateStatusBarAndTooltips ( - evt.Leaving() || evt.Entering() || changeInZone - ? zone - : StatusChoice::NoChange - ); + UpdateStatusBarAndTooltips (changing ? zone : StatusChoice::NoChange); + + mPrevZone = zone; auto &scrubber = mProject->GetScrubber(); if (scrubber.HasStartedScrubbing()) { @@ -2606,7 +2604,7 @@ void AdornedRulerPanel::UpdateStatusBarAndTooltips(StatusChoice choice) // Display a message, or empty message mProject->TP_DisplayStatusMessage(message); - RegenerateTooltips(); + RegenerateTooltips(choice); } void AdornedRulerPanel::OnToggleScrubbing(wxCommandEvent&) @@ -2707,7 +2705,7 @@ void AdornedRulerPanel::OnToggleQuickPlay(wxCommandEvent&) mQuickPlayEnabled = (mQuickPlayEnabled)? false : true; gPrefs->Write(wxT("/QuickPlay/QuickPlayEnabled"), mQuickPlayEnabled); gPrefs->Flush(); - RegenerateTooltips(); + RegenerateTooltips(mPrevZone); } void AdornedRulerPanel::OnSyncSelToQuickPlay(wxCommandEvent&) @@ -2748,7 +2746,7 @@ void AdornedRulerPanel::OnTimelineToolTips(wxCommandEvent&) gPrefs->Write(wxT("/QuickPlay/ToolTips"), mTimelineToolTip); gPrefs->Flush(); #if wxUSE_TOOLTIPS - RegenerateTooltips(); + RegenerateTooltips(mPrevZone); #endif } diff --git a/src/widgets/Ruler.h b/src/widgets/Ruler.h index 400cd42e0..90baee8c0 100644 --- a/src/widgets/Ruler.h +++ b/src/widgets/Ruler.h @@ -312,20 +312,6 @@ public: void InvalidateRuler(); void UpdatePrefs(); - void RegenerateTooltips(); - void HideQuickPlayIndicator(); - - void UpdateQuickPlayPos(wxCoord &mousPosX); - -private: - void OnCapture(wxCommandEvent & evt); - void OnPaint(wxPaintEvent &evt); - void OnSize(wxSizeEvent &evt); - void UpdateRects(); - void OnMouseEvents(wxMouseEvent &evt); - void HandleQPClick(wxMouseEvent &event, wxCoord mousePosX); - void HandleQPDrag(wxMouseEvent &event, wxCoord mousePosX); - void HandleQPRelease(wxMouseEvent &event); enum class StatusChoice { FirstButton = 0, @@ -344,6 +330,22 @@ private: choice = static_cast(1 + static_cast(choice)); return choice; } + + void RegenerateTooltips(StatusChoice choice); + void HideQuickPlayIndicator(); + + void UpdateQuickPlayPos(wxCoord &mousPosX); + +private: + void OnCapture(wxCommandEvent & evt); + void OnPaint(wxPaintEvent &evt); + void OnSize(wxSizeEvent &evt); + void UpdateRects(); + void OnMouseEvents(wxMouseEvent &evt); + void HandleQPClick(wxMouseEvent &event, wxCoord mousePosX); + void HandleQPDrag(wxMouseEvent &event, wxCoord mousePosX); + void HandleQPRelease(wxMouseEvent &event); + static inline bool IsButton(StatusChoice choice) { auto integer = static_cast(choice);