Hide preview and expand info panel when slideshow is open

Preview widget hidden (not just cleared), info panel expands to
fill the space. Splitter sizes saved and restored on close.
This commit is contained in:
pax 2026-04-05 03:40:44 -05:00
parent e0f54a963d
commit d8b28152f6

View File

@ -363,7 +363,7 @@ class BooruApp(QMainWindow):
self._splitter.addWidget(self._stack) self._splitter.addWidget(self._stack)
# Right: preview + info (vertical split) # Right: preview + info (vertical split)
right = QSplitter(Qt.Orientation.Vertical) self._right_splitter = right = QSplitter(Qt.Orientation.Vertical)
self._preview = ImagePreview() self._preview = ImagePreview()
self._preview.close_requested.connect(self._close_preview) self._preview.close_requested.connect(self._close_preview)
@ -1096,11 +1096,13 @@ class BooruApp(QMainWindow):
if self._preview._stack.currentIndex() == 1: if self._preview._stack.currentIndex() == 1:
video_pos = self._preview._video_player._player.position() video_pos = self._preview._video_player._player.position()
# Clear the main preview — slideshow takes over # Clear the main preview — slideshow takes over
# Show info panel in the freed space # Hide preview, expand info panel into the freed space
self._info_was_visible = self._info_panel.isVisible() self._info_was_visible = self._info_panel.isVisible()
self._info_panel.show() self._right_splitter_sizes = self._right_splitter.sizes()
self._preview.clear() self._preview.clear()
self._preview._info_label.setText(info) self._preview.hide()
self._info_panel.show()
self._right_splitter.setSizes([0, 0, 1000])
self._preview._current_path = path self._preview._current_path = path
from .preview import FullscreenPreview from .preview import FullscreenPreview
cols = self._grid._flow.columns cols = self._grid._flow.columns
@ -1127,9 +1129,12 @@ class BooruApp(QMainWindow):
self._update_fullscreen_state() self._update_fullscreen_state()
def _on_fullscreen_closed(self) -> None: def _on_fullscreen_closed(self) -> None:
# Restore info panel visibility # Restore preview and info panel visibility
self._preview.show()
if not getattr(self, '_info_was_visible', False): if not getattr(self, '_info_was_visible', False):
self._info_panel.hide() self._info_panel.hide()
if hasattr(self, '_right_splitter_sizes'):
self._right_splitter.setSizes(self._right_splitter_sizes)
# Grab video position before cleanup # Grab video position before cleanup
video_pos = 0 video_pos = 0
if self._fullscreen_window and self._fullscreen_window._stack.currentIndex() == 1: if self._fullscreen_window and self._fullscreen_window._stack.currentIndex() == 1: