Skip to content

Commit 6464d91

Browse files
committed
🐛 Fix zindex of picker
1 parent 04e6f9d commit 6464d91

File tree

2 files changed

+26
-13
lines changed

2 files changed

+26
-13
lines changed

denops/fall/main/picker.ts

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
import { Picker } from "../picker.ts";
2323

2424
let initialized: Promise<void>;
25+
let zindex = 50;
2526

2627
export const main: Entrypoint = (denops) => {
2728
denops.dispatcher = {
@@ -75,21 +76,29 @@ async function startPicker(
7576
params: ItemPickerParams<unknown, string> & GlobalConfig,
7677
{ signal }: { signal?: AbortSignal } = {},
7778
): Promise<void | true> {
79+
await using stack = new AsyncDisposableStack();
7880
const pickerParams = { screen, ...params };
79-
await using itemPicker = new Picker(pickerParams);
80-
await using actionPicker = new Picker({
81-
name: "@action",
82-
screen,
83-
source: new ListSource(
84-
Object.entries(params.actions).map(([name, action]) => ({
85-
value: name,
86-
detail: action,
87-
})),
88-
),
89-
...getActionPickerParams(),
90-
});
81+
const itemPicker = stack.use(new Picker({ ...pickerParams, zindex }));
82+
const actionPicker = stack.use(
83+
new Picker({
84+
name: "@action",
85+
screen,
86+
source: new ListSource(
87+
Object.entries(params.actions).map(([name, action]) => ({
88+
value: name,
89+
detail: action,
90+
})),
91+
),
92+
...getActionPickerParams(),
93+
zindex: zindex + 1,
94+
}),
95+
);
9196

92-
await using _guardItemPicker = await itemPicker.open(denops, { signal });
97+
zindex++;
98+
stack.defer(() => {
99+
zindex--;
100+
});
101+
stack.use(await itemPicker.open(denops, { signal }));
93102
while (true) {
94103
// Select items
95104
const resultItem = await itemPicker.start(

denops/fall/picker.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export type PickerParams<T> = {
3333
sorter?: Sorter<T>;
3434
renderer?: Renderer<T>;
3535
previewer?: Previewer<T>;
36+
zindex?: number;
3637
};
3738

3839
export type PickerResult<T> = {
@@ -80,19 +81,22 @@ export class Picker<T> implements AsyncDisposable {
8081
dimension: dimensions.input,
8182
border: borders.input,
8283
title: this.#name,
84+
zindex: params.zindex,
8385
}),
8486
);
8587
this.#listComponent = this.#stack.use(
8688
new ListComponent({
8789
dimension: dimensions.list,
8890
border: borders.list,
91+
zindex: params.zindex,
8992
}),
9093
);
9194
if ("preview" in dimensions && "preview" in borders) {
9295
this.#previewComponent = this.#stack.use(
9396
new PreviewComponent({
9497
dimension: dimensions.preview as Dimension,
9598
border: borders.preview as Border,
99+
zindex: params.zindex,
96100
}),
97101
);
98102
}

0 commit comments

Comments
 (0)