From 9940f1cf640dbcbcad53688fd3698beb6b96ff1f Mon Sep 17 00:00:00 2001 From: Leland Lucius Date: Fri, 12 Feb 2021 01:50:05 -0600 Subject: [PATCH] Bug 2571 - Linux: No digit highlight in Edit Label time / frequency controls --- src/tracks/labeltrack/ui/LabelTrackView.cpp | 14 +++++++++++--- src/tracks/labeltrack/ui/LabelTrackView.h | 3 +++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/tracks/labeltrack/ui/LabelTrackView.cpp b/src/tracks/labeltrack/ui/LabelTrackView.cpp index 98d4376f5..85be568c9 100644 --- a/src/tracks/labeltrack/ui/LabelTrackView.cpp +++ b/src/tracks/labeltrack/ui/LabelTrackView.cpp @@ -1829,7 +1829,16 @@ void LabelTrackView::ShowContextMenu( AudacityProject &project ) wxASSERT(success); static_cast(success); // Suppress unused variable warning if debug mode is disabled + // Bug #2571: Hackage alert! For some reason wxGTK does not like + // displaying the LabelDialog from within the PopupMenu "context". + // So, workaround it by editing the label AFTER the popup menu is + // closed. It's really ugly, but it works. :-( + mEditIndex = -1; parent->PopupMenu(&menu, x, ls->y + (mIconHeight / 2) - 1); + if (mEditIndex >= 0) + { + DoEditLabels( project, FindLabelTrack().get(), mEditIndex ); + } } } @@ -1881,9 +1890,8 @@ void LabelTrackView::OnContextMenu( break; case OnEditSelectedLabelID: { - int ndx = GetLabelIndex(selectedRegion.t0(), selectedRegion.t1()); - if (ndx != -1) - DoEditLabels( project, FindLabelTrack().get(), ndx ); + // Bug #2571: See above + mEditIndex = GetLabelIndex(selectedRegion.t0(), selectedRegion.t1()); } break; } diff --git a/src/tracks/labeltrack/ui/LabelTrackView.h b/src/tracks/labeltrack/ui/LabelTrackView.h index 34ada40d1..848f67660 100644 --- a/src/tracks/labeltrack/ui/LabelTrackView.h +++ b/src/tracks/labeltrack/ui/LabelTrackView.h @@ -252,6 +252,9 @@ private: std::weak_ptr mTextHandle; static wxFont msFont; + + // Bug #2571: See explanation in ShowContextMenu() + int mEditIndex; }; #endif