From 59d1ca46dffd094499eadf7afc881102082ca25c Mon Sep 17 00:00:00 2001 From: David Bailes Date: Mon, 12 Mar 2018 13:47:27 +0000 Subject: [PATCH] TrackPanelAx: add Select function Added an override for Select. This enables NVDA to move the focus to the current navigator object, and Jaws to move the focus to the current element when using the touch cursor. For info on accSelect: https://msdn.microsoft.com/en-us/library/windows/desktop/dd318474(v=vs.85).aspx --- src/TrackPanelAx.cpp | 28 ++++++++++++++++++++++++++++ src/TrackPanelAx.h | 3 +++ 2 files changed, 31 insertions(+) diff --git a/src/TrackPanelAx.cpp b/src/TrackPanelAx.cpp index de219d066..e636bfd0c 100644 --- a/src/TrackPanelAx.cpp +++ b/src/TrackPanelAx.cpp @@ -701,4 +701,32 @@ wxAccStatus TrackPanelAx::Navigate(wxNavDir navDir, int fromId, int* toId, wxAcc return wxACC_OK; } +// Modify focus or selection +wxAccStatus TrackPanelAx::Select(int childId, wxAccSelectionFlags selectFlags) +{ + // Only support change of focus + if (selectFlags != wxACC_SEL_TAKEFOCUS) + return wxACC_NOT_IMPLEMENTED; + + if (childId != CHILDID_SELF) { + int childCount; + GetChildCount( &childCount ); + if (childId > childCount) + return wxACC_FAIL; + + Track* t = FindTrack(childId).get(); + if (t) { + mTrackPanel->SetFocusedTrack(t); + mTrackPanel->EnsureVisible(t); + AudacityProject* p = GetActiveProject(); + if (p) + p->ModifyState(false); + } + } + else + return wxACC_NOT_IMPLEMENTED; + + return wxACC_OK; +} + #endif // wxUSE_ACCESSIBILITY diff --git a/src/TrackPanelAx.h b/src/TrackPanelAx.h index 4bb64148e..f808d11e1 100644 --- a/src/TrackPanelAx.h +++ b/src/TrackPanelAx.h @@ -107,6 +107,9 @@ public: // Navigates from fromId to toId/toObject wxAccStatus Navigate(wxNavDir navDir, int fromId, int* toId, wxAccessible** toObject) override; + + // Modify focus or selection + wxAccStatus Select(int childId, wxAccSelectionFlags selectFlags) override; #endif private: