Audacity 3.2.0
WaveTrackAffordanceHandle.cpp
Go to the documentation of this file.
1/*!********************************************************************
2*
3 Audacity: A Digital Audio Editor
4
5 @file WaveTrackAffordanceHandle.cpp
6
7 Vitaly Sverchinsky
8
9 **********************************************************************/
10
13#include "WaveChannelView.h"
14#include "ViewInfo.h"
15
16#include "WaveClip.h"
17#include "../../../../RefreshCode.h"
18#include "../../../../TrackPanelMouseEvent.h"
19#include "ProjectHistory.h"
20
21#include <wx/event.h>
22
23WaveTrackAffordanceHandle::WaveTrackAffordanceHandle(const std::shared_ptr<Track>& track, const std::shared_ptr<WaveClip>& target)
24 : AffordanceHandle(track), mTarget(target)
25{ }
26
28{
29 // We only care about left clicks here,
30 // however we need to intercept Release events for right clicks later
31 if (event.event.GetButton() != wxMOUSE_BTN_LEFT)
33
35
37 {
38 auto affordanceControl = std::dynamic_pointer_cast<WaveTrackAffordanceControls>(event.pCell);
39
40 if (affordanceControl)
41 {
42 result |= affordanceControl->OnAffordanceClick(event, project);
43 if (!event.event.GetSkipped())//event is "consumed"
44 return result | RefreshCode::Cancelled;
45 event.event.Skip(false);
46 }
47 }
48 return result | AffordanceHandle::Click(event, project);
49}
50
52{
53 auto& viewInfo = ViewInfo::Get(*project);
54 viewInfo.selectedRegion.setTimes(mTarget->GetPlayStartTime(), mTarget->GetPlayEndTime());
55
56 ProjectHistory::Get(*project).ModifyState(false);
57
59}
60
62{
63 return true;
64}
65
67{
68 auto result = AffordanceHandle::Release(event, pProject, pParent);
69
70 if (event.event.RightUp())
71 result |= event.pCell->DoContextMenu(event.rect, pParent, nullptr, pProject);
72
73 return result;
74}
const auto project
Result Release(const TrackPanelMouseEvent &event, AudacityProject *pProject, wxWindow *pParent) override
Result Click(const TrackPanelMouseEvent &evt, AudacityProject *pProject) override
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
Definition: Project.h:90
void ModifyState(bool bWantsAutoSave)
static ProjectHistory & Get(AudacityProject &project)
unsigned Result
Definition: UIHandle.h:39
static ViewInfo & Get(AudacityProject &project)
Definition: ViewInfo.cpp:235
static bool ClipDetailsVisible(const ClipTimes &clip, const ZoomInfo &zoomInfo, const wxRect &viewRect)
std::shared_ptr< WaveClip > mTarget
bool HandlesRightClick() override
Whether the handle has any special right-button handling.
WaveTrackAffordanceHandle(const std::shared_ptr< Track > &track, const std::shared_ptr< WaveClip > &target)
Result Click(const TrackPanelMouseEvent &event, AudacityProject *project) override
UIHandle::Result Release(const TrackPanelMouseEvent &event, AudacityProject *pProject, wxWindow *pParent) override
UIHandle::Result SelectAt(const TrackPanelMouseEvent &event, AudacityProject *project) override
std::shared_ptr< TrackPanelCell > pCell