Fix slideshow video sizing, revert video hide
- Slideshow video player: auto_size_video=False, no height constraint - Revert video widget hide/show (caused info panel issues) - Preview video still auto-sizes to aspect ratio
This commit is contained in:
parent
bc0ddcb221
commit
6d6a33f99f
@ -94,6 +94,7 @@ class FullscreenPreview(QMainWindow):
|
|||||||
self._stack.addWidget(self._viewer)
|
self._stack.addWidget(self._viewer)
|
||||||
|
|
||||||
self._video = VideoPlayer()
|
self._video = VideoPlayer()
|
||||||
|
self._video._auto_size_video = False # fullscreen — don't constrain height
|
||||||
self._video.play_next.connect(lambda: self.navigate.emit(1))
|
self._video.play_next.connect(lambda: self.navigate.emit(1))
|
||||||
self._stack.addWidget(self._video)
|
self._stack.addWidget(self._video)
|
||||||
|
|
||||||
@ -485,7 +486,6 @@ class VideoPlayer(QWidget):
|
|||||||
self._ended = False
|
self._ended = False
|
||||||
self._video_sized = False
|
self._video_sized = False
|
||||||
self._video_widget.setMaximumHeight(16777215)
|
self._video_widget.setMaximumHeight(16777215)
|
||||||
self._video_widget.hide() # hide until first frame to prevent black flash
|
|
||||||
self._last_pos = 0
|
self._last_pos = 0
|
||||||
self._player.setLoops(QMediaPlayer.Loops.Infinite)
|
self._player.setLoops(QMediaPlayer.Loops.Infinite)
|
||||||
self._player.setSource(QUrl.fromLocalFile(path))
|
self._player.setSource(QUrl.fromLocalFile(path))
|
||||||
@ -562,18 +562,20 @@ class VideoPlayer(QWidget):
|
|||||||
else:
|
else:
|
||||||
self._play_btn.setText("Play")
|
self._play_btn.setText("Play")
|
||||||
|
|
||||||
|
_auto_size_video = True # set False for fullscreen/slideshow
|
||||||
|
|
||||||
def _on_video_size(self, frame) -> None:
|
def _on_video_size(self, frame) -> None:
|
||||||
"""Resize video widget to match video aspect ratio on first frame."""
|
"""Resize video widget to match video aspect ratio on first frame."""
|
||||||
if self._video_sized or not frame.isValid():
|
if self._video_sized or not frame.isValid():
|
||||||
return
|
return
|
||||||
self._video_sized = True
|
self._video_sized = True
|
||||||
|
if self._auto_size_video:
|
||||||
vw = frame.size().width()
|
vw = frame.size().width()
|
||||||
vh = frame.size().height()
|
vh = frame.size().height()
|
||||||
if vw > 0 and vh > 0:
|
if vw > 0 and vh > 0:
|
||||||
available_w = self._video_widget.parentWidget().width() if self._video_widget.parentWidget() else self._video_widget.width()
|
available_w = self._video_widget.parentWidget().width() if self._video_widget.parentWidget() else self._video_widget.width()
|
||||||
scaled_h = int(available_w * vh / vw)
|
scaled_h = int(available_w * vh / vw)
|
||||||
self._video_widget.setMaximumHeight(scaled_h)
|
self._video_widget.setMaximumHeight(scaled_h)
|
||||||
self._video_widget.show()
|
|
||||||
|
|
||||||
def _on_media_status(self, status) -> None:
|
def _on_media_status(self, status) -> None:
|
||||||
pass
|
pass
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user