Fix grid nav: up/down in last row, preview no longer steals focus
- Up/Down in grid's last incomplete row moves to last post instead of triggering page turn - Preview panel set to NoFocus so clicking it doesn't steal keyboard focus from the grid
This commit is contained in:
parent
6554344523
commit
708d177801
@ -356,15 +356,24 @@ class ThumbnailGrid(QScrollArea):
|
|||||||
else:
|
else:
|
||||||
self._select(idx - 1)
|
self._select(idx - 1)
|
||||||
elif key in (Qt.Key.Key_Down, Qt.Key.Key_J):
|
elif key in (Qt.Key.Key_Down, Qt.Key.Key_J):
|
||||||
if idx + cols >= len(self._thumbs):
|
target = idx + cols
|
||||||
|
if target >= len(self._thumbs):
|
||||||
|
# If there are posts ahead in the last row, go to the last one
|
||||||
|
if idx < len(self._thumbs) - 1:
|
||||||
|
self._select(len(self._thumbs) - 1)
|
||||||
|
else:
|
||||||
self.nav_past_end.emit()
|
self.nav_past_end.emit()
|
||||||
else:
|
else:
|
||||||
self._select(idx + cols)
|
self._select(target)
|
||||||
elif key in (Qt.Key.Key_Up, Qt.Key.Key_K):
|
elif key in (Qt.Key.Key_Up, Qt.Key.Key_K):
|
||||||
if idx - cols < 0:
|
target = idx - cols
|
||||||
|
if target < 0:
|
||||||
|
if idx > 0:
|
||||||
|
self._select(0)
|
||||||
|
else:
|
||||||
self.nav_before_start.emit()
|
self.nav_before_start.emit()
|
||||||
else:
|
else:
|
||||||
self._select(idx - cols)
|
self._select(target)
|
||||||
elif key == Qt.Key.Key_Return or key == Qt.Key.Key_Enter:
|
elif key == Qt.Key.Key_Return or key == Qt.Key.Key_Enter:
|
||||||
if 0 <= idx < len(self._thumbs):
|
if 0 <= idx < len(self._thumbs):
|
||||||
self.post_activated.emit(idx)
|
self.post_activated.emit(idx)
|
||||||
|
|||||||
@ -473,11 +473,13 @@ class ImagePreview(QWidget):
|
|||||||
|
|
||||||
# Image viewer (index 0)
|
# Image viewer (index 0)
|
||||||
self._image_viewer = ImageViewer()
|
self._image_viewer = ImageViewer()
|
||||||
|
self._image_viewer.setFocusPolicy(Qt.FocusPolicy.NoFocus)
|
||||||
self._image_viewer.close_requested.connect(self.close_requested)
|
self._image_viewer.close_requested.connect(self.close_requested)
|
||||||
self._stack.addWidget(self._image_viewer)
|
self._stack.addWidget(self._image_viewer)
|
||||||
|
|
||||||
# Video player (index 1)
|
# Video player (index 1)
|
||||||
self._video_player = VideoPlayer()
|
self._video_player = VideoPlayer()
|
||||||
|
self._video_player.setFocusPolicy(Qt.FocusPolicy.NoFocus)
|
||||||
self._stack.addWidget(self._video_player)
|
self._stack.addWidget(self._video_player)
|
||||||
|
|
||||||
# Info label
|
# Info label
|
||||||
@ -485,7 +487,7 @@ class ImagePreview(QWidget):
|
|||||||
self._info_label.setStyleSheet("padding: 2px 6px;")
|
self._info_label.setStyleSheet("padding: 2px 6px;")
|
||||||
layout.addWidget(self._info_label)
|
layout.addWidget(self._info_label)
|
||||||
|
|
||||||
self.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
|
self.setFocusPolicy(Qt.FocusPolicy.NoFocus)
|
||||||
self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||||
self.customContextMenuRequested.connect(self._on_context_menu)
|
self.customContextMenuRequested.connect(self._on_context_menu)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user