Stop sample previews on mouse release or browser focus loss (#5764)
Stop previews on mouse up and focus loss.
This commit is contained in:
@@ -108,6 +108,7 @@ protected:
|
||||
void keyPressEvent( QKeyEvent * ke ) override;
|
||||
void keyReleaseEvent( QKeyEvent * ke ) override;
|
||||
void hideEvent( QHideEvent * he ) override;
|
||||
void focusOutEvent( QFocusEvent * fe ) override;
|
||||
|
||||
|
||||
private:
|
||||
|
||||
@@ -433,6 +433,16 @@ void FileBrowserTreeWidget::hideEvent(QHideEvent* he)
|
||||
|
||||
|
||||
|
||||
void FileBrowserTreeWidget::focusOutEvent(QFocusEvent* fe)
|
||||
{
|
||||
// Cancel previews when the user clicks outside the browser
|
||||
stopPreview();
|
||||
QTreeWidget::focusOutEvent(fe);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void FileBrowserTreeWidget::contextMenuEvent(QContextMenuEvent * e )
|
||||
{
|
||||
FileItem * file = dynamic_cast<FileItem *>( itemAt( e->pos() ) );
|
||||
@@ -674,22 +684,8 @@ void FileBrowserTreeWidget::mouseReleaseEvent(QMouseEvent * me )
|
||||
|
||||
QMutexLocker previewLocker(&m_pphMutex);
|
||||
|
||||
if (m_previewPlayHandle != nullptr)
|
||||
{
|
||||
// If less than 3 seconds remain of the sample, we don't
|
||||
// stop them if the user releases mouse-button...
|
||||
if (m_previewPlayHandle->type() == PlayHandle::TypeSamplePlayHandle)
|
||||
{
|
||||
SamplePlayHandle* s = dynamic_cast<SamplePlayHandle*>(m_previewPlayHandle);
|
||||
auto second = static_cast<f_cnt_t>(Engine::mixer()->processingSampleRate());
|
||||
if (s && s->totalFrames() - s->framesDone() <= second * 3)
|
||||
{
|
||||
s->setDoneMayReturnTrue(true);
|
||||
}
|
||||
else { stopPreview(); }
|
||||
}
|
||||
else { stopPreview(); }
|
||||
}
|
||||
//TODO: User setting to allow samples to play until completion instead
|
||||
if (m_previewPlayHandle != nullptr) { stopPreview(); }
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user