diff --git a/frontend/src/components/floating-menus/MenuList.svelte b/frontend/src/components/floating-menus/MenuList.svelte index 1d90d9cbe32..70e5606dbbd 100644 --- a/frontend/src/components/floating-menus/MenuList.svelte +++ b/frontend/src/components/floating-menus/MenuList.svelte @@ -250,7 +250,6 @@ function onEntryPointerLeave(menuListEntry: MenuListEntry) { if (!menuListEntry.children?.length) { - dispatch("hoverOutEntry"); return; } @@ -263,6 +262,11 @@ } } + function onPointerLeave() { + dispatch("hoverOutEntry"); + return; + } + function includeSeparator(entries: MenuListEntry[][], section: MenuListEntry[], sectionIndex: number, search: string): boolean { const elementsBeforeCurrentSection = entries .slice(0, sectionIndex) @@ -465,6 +469,7 @@ bind:this={scroller} scrollableY={scrollableY && virtualScrollingEntryHeight !== 0} on:scroll={onScroll} + on:pointerleave={onPointerLeave} styles={{ "min-width": virtualScrollingEntryHeight ? `${minWidth}px` : `inherit` }} > {#if virtualScrollingEntryHeight} diff --git a/frontend/src/components/panels/Layers.svelte b/frontend/src/components/panels/Layers.svelte index 539c71298ce..0acd4865af3 100644 --- a/frontend/src/components/panels/Layers.svelte +++ b/frontend/src/components/panels/Layers.svelte @@ -695,12 +695,14 @@ .control-bar { height: 32px; flex: 0 0 auto; - margin: 0 4px; + padding-left: 4px; + padding-right: 15px; + border-bottom: 1px solid var(--color-2-mildblack); - justify-content: space-between; + justify-content: space-evenly; .widget-span:first-child { - flex: 1 1 auto; + flex: 1 0.5 auto; } &:not(:has(*)) { diff --git a/frontend/src/components/widgets/inputs/DropdownInput.svelte b/frontend/src/components/widgets/inputs/DropdownInput.svelte index cb9d3277877..9586ee70a05 100644 --- a/frontend/src/components/widgets/inputs/DropdownInput.svelte +++ b/frontend/src/components/widgets/inputs/DropdownInput.svelte @@ -46,6 +46,7 @@ let activeEntry = makeActiveEntry(); let activeEntrySkipWatcher = false; let initialSelectedIndex: number | undefined = undefined; + let activeEntryOnOpen: string | undefined = undefined; let open = false; $: watchSelectedIndex(selectedIndex); @@ -54,7 +55,18 @@ $: watchOpen(open); function watchOpen(open: boolean) { - initialSelectedIndex = open ? selectedIndex : undefined; + if (open) { + initialSelectedIndex = selectedIndex; + activeEntryOnOpen = activeEntry.value; + } else { + // Suppress hoverOutEntry if a new selection was made + const selectionMade = activeEntryOnOpen !== undefined && activeEntry.value !== activeEntryOnOpen; + if (initialSelectedIndex !== undefined && !selectionMade) { + dispatch("hoverOutEntry", initialSelectedIndex); + } + initialSelectedIndex = undefined; + activeEntryOnOpen = undefined; + } } // Called only when `selectedIndex` is changed from outside this component diff --git a/frontend/src/components/widgets/inputs/FieldInput.svelte b/frontend/src/components/widgets/inputs/FieldInput.svelte index a823b3a2e71..e63dc6a430d 100644 --- a/frontend/src/components/widgets/inputs/FieldInput.svelte +++ b/frontend/src/components/widgets/inputs/FieldInput.svelte @@ -123,7 +123,7 @@