From 0cb54f66ee915258b5c0e2f2aa28fefc655a403d Mon Sep 17 00:00:00 2001 From: timonrieger Date: Fri, 12 Jun 2026 15:10:20 +0200 Subject: [PATCH] fix(web): shift+click on GPS asset extends range selection in geolocation utility --- .../lib/components/assets/thumbnail/Thumbnail.svelte | 10 +++++----- web/src/lib/components/timeline/Timeline.svelte | 5 +++-- .../routes/(user)/utilities/geolocation/+page.svelte | 5 +++++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/web/src/lib/components/assets/thumbnail/Thumbnail.svelte b/web/src/lib/components/assets/thumbnail/Thumbnail.svelte index 347ff3e75f..c050ce4cea 100644 --- a/web/src/lib/components/assets/thumbnail/Thumbnail.svelte +++ b/web/src/lib/components/assets/thumbnail/Thumbnail.svelte @@ -44,7 +44,7 @@ brokenAssetClass?: ClassValue; dimmed?: boolean; albumUsers?: UserResponseDto[]; - onClick?: (asset: TimelineAsset) => void; + onClick?: (asset: TimelineAsset, event?: MouseEvent) => void; onPreview?: (asset: TimelineAsset) => void; onSelect?: (asset: TimelineAsset) => void; onMouseEvent?: (event: { isMouseOver: boolean; selectedGroupIndex: number }) => void; @@ -93,12 +93,12 @@ } }; - const callClickHandlers = () => { + const callClickHandlers = (e?: MouseEvent) => { if (selected) { - onIconClickedHandler(); + onIconClickedHandler(e); return; } - onClick?.($state.snapshot(asset)); + onClick?.($state.snapshot(asset), e); }; const handleClick = (e: MouseEvent) => { @@ -109,7 +109,7 @@ e.stopPropagation(); e.preventDefault(); - callClickHandlers(); + callClickHandlers(e); }; const onMouseEnter = () => { diff --git a/web/src/lib/components/timeline/Timeline.svelte b/web/src/lib/components/timeline/Timeline.svelte index b3acb09e13..22ed092aa1 100644 --- a/web/src/lib/components/timeline/Timeline.svelte +++ b/web/src/lib/components/timeline/Timeline.svelte @@ -59,6 +59,7 @@ groupTitle: string, asset: TimelineAsset, ) => void, + event?: MouseEvent, ) => void; } @@ -685,9 +686,9 @@ {asset} {albumUsers} {groupIndex} - onClick={(asset) => { + onClick={(asset, event) => { if (typeof onThumbnailClick === 'function') { - onThumbnailClick(asset, timelineManager, timelineDay, _onClick); + onThumbnailClick(asset, timelineManager, timelineDay, _onClick, event); } else { _onClick(timelineManager, timelineDay.getAssets(), timelineDay.groupTitle, asset); } diff --git a/web/src/routes/(user)/utilities/geolocation/+page.svelte b/web/src/routes/(user)/utilities/geolocation/+page.svelte index 061872e42c..5701775173 100644 --- a/web/src/routes/(user)/utilities/geolocation/+page.svelte +++ b/web/src/routes/(user)/utilities/geolocation/+page.svelte @@ -118,7 +118,12 @@ groupTitle: string, asset: TimelineAsset, ) => void, + event?: MouseEvent, ) => { + if (event?.shiftKey) { + onClick(timelineManager, timelineDay.getAssets(), timelineDay.groupTitle, asset); + return; + } if (hasGps(asset)) { locationUpdated = true; setTimeout(() => {