summaryrefslogtreecommitdiffstats
path: root/src/waveform/renderers/waveformwidgetrenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/waveform/renderers/waveformwidgetrenderer.cpp')
-rw-r--r--src/waveform/renderers/waveformwidgetrenderer.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/waveform/renderers/waveformwidgetrenderer.cpp b/src/waveform/renderers/waveformwidgetrenderer.cpp
index 8c37c2d2cd..fb1de6cd7c 100644
--- a/src/waveform/renderers/waveformwidgetrenderer.cpp
+++ b/src/waveform/renderers/waveformwidgetrenderer.cpp
@@ -288,3 +288,30 @@ void WaveformWidgetRenderer::setTrack(TrackPointer track) {
m_rendererStack[i]->onSetTrack();
}
}
+
+std::optional<CuePointer> WaveformWidgetRenderer::getCueAtPoint(QPoint point) {
+ WaveformMarkPointer pSelectedMark;
+ for (auto pMark : m_markBoundaries.keys()) {
+ if (m_markBoundaries[pMark].contains(point)) {
+ pSelectedMark = pMark;
+ break;
+ }
+ }
+ if (!pSelectedMark) {
+ return std::nullopt;
+ }
+
+ CuePointer pSelectedCue;
+ QList<CuePointer> cueList = getTrackInfo()->getCuePoints();
+ for (const auto& pCue : cueList) {
+ if (pCue->getHotCue() == pSelectedMark->getHotCue()) {
+ pSelectedCue = pCue;
+ break;
+ }
+ }
+ if (pSelectedCue != nullptr) {
+ return pSelectedCue;
+ }
+
+ return std::nullopt;
+}