d5b90e37e69117123423942e15890d4b154450aa
Reintroduces legacy.GalleryGridCell's grouped-selection UI on top of JustifiedGalleryPane's own architecture: a hover-revealed circle checkbox in each thumbnail's top-left corner (click to check — Google Photos-style shrink-in-place with a rounded, inset thumbnail and a grey background ring, all CSS-driven via :checked); a per-date "select all" icon that slides in from the left of the date label on header hover, reflecting whether every photo of that day is checked; and a per-date kebab menu (regenerate thumbnails / set GPS / set rating), visible once at least one of that day's photos is checked. JustifiedGalleryPane.actionSelection moves from a bare Set<Long> to a Map<Long, BooleanProperty> (the same shape legacy.ThumbnailGalleryPane .checkedByFile always used) — needed so the checkbox icon and the header's own all-checked glyph/menu visibility can react live instead of being pushed to by hand. filesForDay/actionSelectedFilesForDay/ actionSelectedPropertiesForDay/toggleActionSelectedForDay round out the per-date half of that state; setOnRegenerateThumbnails/ setOnSetGpsForFiles/setOnSetRatingForFiles are new hooks GalleryView wires to the same MediaAnalysisService/MediaMetadataEditService calls legacy's own menu used. Driven by CSS's own :checked pseudo-class this time, not a plain-Java node mutation the way navigation selection is — safe now that the underlying AtlantaFX/Prism rendering bug that pushed navigation selection away from CSS (GuiBootstrap's prism.dirtyopts=false) is fixed application-wide, not just for that one node. The two selections stay fully independent: the navigation frame is always a card's topmost child, so it never ends up occluded by the checkbox or the checked-shrink background ring underneath it. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012sfcVC7rYy5k8XiKCbh4Tr
Description
No description provided
54 MiB
Languages
Java
97.4%
CSS
1.5%
Python
0.9%
JavaScript
0.2%