Skip to content

v1.15.0

Latest

Choose a tag to compare

@github-actions github-actions released this 24 Jul 13:34

Added

  • F2 shortcut for the "Rename selection" button — clicking the button moved keyboard focus away from the file list, preventing further arrow-key navigation until it regained focus; a shortcut triggers the action without stealing focus. Also added to the shortcuts window (F1) and to the button's tooltip.
  • Hidden catalogs — catalogs whose name starts with . or - are now excluded from the Catalog menu and the "Delete catalog…" list. list_catalogs() gained an include_hidden keyword argument (default False) to opt into seeing them. Switching to a hidden catalog no longer overwrites catalog.conf, so restarting the app always resumes the last non-hidden catalog rather than a hidden one.
  • Optional positional CLI argument to load a specific catalog at startuppbpicat <name> (may be a hidden catalog; a name starting with - must be passed after --, e.g. pbpicat -- -secret). If no catalog with that name exists, a warning dialog is shown and startup falls back to the normal behaviour (last opened catalog).
  • "Sort ↓" / "Sort ↑" buttons in the history edit windows (Settings → Histories…) alongside the existing Move up/down — sort ascending/descending, locale-aware (QCollator using the interface's display language) and insensitive to case and diacritics (O=o=Ô=Ǫ, Œ=OE=œ). Disabled when fewer than 2 items are in the list. Empty-string entries always sort to the end, regardless of direction.

Changed

  • "New catalog…" / "Duplicate catalog…" — name already taken — previously just showed a blocking "Already exists" error and cancelled. Now asks whether to open the existing catalog instead (checked against all catalogs, including hidden ones); choosing "Open" switches to it, otherwise the action is cancelled as before.

Fixed

  • Arrow-key navigation jumped to the first row after renaming a file (not the first in the list) with the F2 shortcut — renaming triggers a disk change that QFileSystemWatcher picks up shortly after refresh_and_select()'s own refresh already ran, restarting the 400 ms debounce and firing a second, redundant _refresh_preserve_selection(). That method (and refresh_and_select_paths()) restored the previous selection after the table rebuild but never restored the current index, which the rebuild invalidates — so the renamed-to row stayed visibly selected while currentIndex() was -1, and the next arrow-key press navigated as if starting from row 0. Both methods now delegate to a new shared _select_paths_and_set_current() helper, which also calls selectionModel().setCurrentIndex() for the first restored row — centralizing the fix instead of duplicating it in both call sites.