Skip to content

Commit aa4cd77

Browse files
committed
fix(autohide): not working all the time
1 parent 121cb2d commit aa4cd77

2 files changed

Lines changed: 21 additions & 21 deletions

File tree

src/ui/react/fancy-toolbar/modules/shared/state/windows.ts

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { computed, effect, signal } from "@preact/signals";
22
import { invoke, SeelenCommand, SeelenEvent, subscribe, Widget } from "@seelen-ui/lib";
33
import { type FocusedApp, HideMode } from "@seelen-ui/lib/types";
4-
import { debounce } from "lodash";
54
import { $settings, $widget_rect } from "./mod";
65
import { $mouse_at_edge } from "./system";
76
import { $is_this_webview_focused } from "libs/ui/react/utils/signals";
@@ -80,24 +79,24 @@ effect(() => {
8079
hidden = !$is_this_webview_focused.value && !isMouseOverEdge;
8180
break;
8281
case HideMode.OnOverlap:
83-
hidden = $is_tb_overlapped.value &&
84-
!$is_this_webview_focused.value &&
85-
!isMouseOverEdge;
82+
hidden = $is_tb_overlapped.value && !$is_this_webview_focused.value && !isMouseOverEdge;
8683
break;
8784
}
8885

89-
const doHide = debounce(() => ($hidden_by_autohide.value = true), delayToHide);
90-
const doShow = debounce(() => ($hidden_by_autohide.value = false), delayToShow);
91-
86+
let timeout: ReturnType<typeof setTimeout> | null = null;
9287
if (hidden) {
93-
doHide();
88+
timeout = setTimeout(() => ($hidden_by_autohide.value = true), delayToHide);
9489
} else {
95-
doShow();
96-
if (flush) doShow.flush();
90+
if (flush) {
91+
$hidden_by_autohide.value = false;
92+
} else {
93+
timeout = setTimeout(() => ($hidden_by_autohide.value = false), delayToShow);
94+
}
9795
}
9896

9997
return () => {
100-
doHide.cancel();
101-
doShow.cancel();
98+
if (timeout) {
99+
clearTimeout(timeout);
100+
}
102101
};
103102
});

src/ui/react/weg/modules/shared/state/hidden.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { computed, effect, signal } from "@preact/signals";
22
import { HideMode } from "@seelen-ui/lib/types";
33
import { $is_this_webview_focused } from "libs/ui/react/utils/signals.ts";
4-
import { debounce } from "lodash";
54

65
import { $mouse_at_edge } from "./system.ts";
76
import { $settings } from "./settings.ts";
@@ -36,18 +35,20 @@ effect(() => {
3635
break;
3736
}
3837

39-
const doHide = debounce(() => ($dock_should_be_hidden.value = true), delayToHide);
40-
const doShow = debounce(() => ($dock_should_be_hidden.value = false), delayToShow);
41-
38+
let timeout: ReturnType<typeof setTimeout> | null = null;
4239
if (hidden) {
43-
doHide();
40+
timeout = setTimeout(() => ($dock_should_be_hidden.value = true), delayToHide);
4441
} else {
45-
doShow();
46-
if (flush) doShow.flush();
42+
if (flush) {
43+
$dock_should_be_hidden.value = false;
44+
} else {
45+
timeout = setTimeout(() => ($dock_should_be_hidden.value = false), delayToShow);
46+
}
4747
}
4848

4949
return () => {
50-
doHide.cancel();
51-
doShow.cancel();
50+
if (timeout) {
51+
clearTimeout(timeout);
52+
}
5253
};
5354
});

0 commit comments

Comments
 (0)