mirror of
https://invent.kde.org/graphics/okular
synced 2024-08-25 02:45:38 +00:00
Stop playing videos when they are no longer visible
This mimics Adobe Reader behaviour BUGS: 286932 FIXED-IN: 4.8.0
This commit is contained in:
parent
e56df195f0
commit
89e2611f32
|
@ -3832,6 +3832,7 @@ void PageView::slotRequestVisiblePixmaps( int newValue )
|
|||
QRect viewportRect( horizontalScrollBar()->value(),
|
||||
verticalScrollBar()->value(),
|
||||
viewport()->width(), viewport()->height() );
|
||||
const QRect viewportRectAtZeroZero( 0, 0, viewport()->width(), viewport()->height() );
|
||||
|
||||
// some variables used to determine the viewport
|
||||
int nearPageNumber = -1;
|
||||
|
@ -3862,6 +3863,10 @@ void PageView::slotRequestVisiblePixmaps( int newValue )
|
|||
vw->move(
|
||||
qRound( i->uncroppedGeometry().left() + i->uncroppedWidth() * r.left ) + 1 - viewportRect.left(),
|
||||
qRound( i->uncroppedGeometry().top() + i->uncroppedHeight() * r.top ) + 1 - viewportRect.top() );
|
||||
|
||||
if ( vw->isPlaying() && viewportRectAtZeroZero.intersect( vw->geometry() ).isEmpty() ) {
|
||||
vw->stop();
|
||||
}
|
||||
}
|
||||
|
||||
if ( !i->isVisible() )
|
||||
|
|
|
@ -219,6 +219,11 @@ Okular::NormalizedRect VideoWidget::normGeometry() const
|
|||
return d->geom;
|
||||
}
|
||||
|
||||
bool VideoWidget::isPlaying() const
|
||||
{
|
||||
return d->player->isPlaying();
|
||||
}
|
||||
|
||||
void VideoWidget::play()
|
||||
{
|
||||
d->load();
|
||||
|
|
|
@ -27,6 +27,8 @@ class VideoWidget : public QWidget
|
|||
|
||||
void setNormGeometry( const Okular::NormalizedRect &rect );
|
||||
Okular::NormalizedRect normGeometry() const;
|
||||
|
||||
bool isPlaying() const;
|
||||
|
||||
public slots:
|
||||
void play();
|
||||
|
|
Loading…
Reference in a new issue