summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-02-11 20:58:53 +1100
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-02-11 20:58:53 +1100
commit0274360617a23daf81fb2baf85a1bfebe2b395e8 (patch)
treedeb120fa844e7aef9a06238b9a2884c32797016a /src
parenttooltip: position at cursor not widget (diff)
downloadcaelestia-shell-0274360617a23daf81fb2baf85a1bfebe2b395e8.tar.gz
caelestia-shell-0274360617a23daf81fb2baf85a1bfebe2b395e8.tar.bz2
caelestia-shell-0274360617a23daf81fb2baf85a1bfebe2b395e8.zip
refactor: astal widget type
There is no base type, but the return type of astalify works
Diffstat (limited to 'src')
-rw-r--r--src/modules/bar.tsx3
-rw-r--r--src/utils/types.ts3
-rw-r--r--src/utils/widgets.ts7
3 files changed, 9 insertions, 4 deletions
diff --git a/src/modules/bar.tsx b/src/modules/bar.tsx
index 16c505a..ae5cde9 100644
--- a/src/modules/bar.tsx
+++ b/src/modules/bar.tsx
@@ -4,6 +4,7 @@ import Updates from "@/services/updates";
import { getAppCategoryIcon } from "@/utils/icons";
import { ellipsize } from "@/utils/strings";
import { bindCurrentTime, osIcon } from "@/utils/system";
+import type { AstalWidget } from "@/utils/types";
import { setupCustomTooltip } from "@/utils/widgets";
import type PopupWindow from "@/widgets/popupwindow";
import { execAsync, register, Variable } from "astal";
@@ -20,7 +21,7 @@ import AstalWp01 from "gi://AstalWp";
const hyprland = AstalHyprland.get_default();
const hookFocusedClientProp = (
- self: any, // Ugh why is there no base Widget type
+ self: AstalWidget,
prop: keyof AstalHyprland.Client,
callback: (c: AstalHyprland.Client | null) => void
) => {
diff --git a/src/utils/types.ts b/src/utils/types.ts
index 9a44e51..d2c1943 100644
--- a/src/utils/types.ts
+++ b/src/utils/types.ts
@@ -1,5 +1,8 @@
+import type { astalify } from "astal/gtk3";
import type AstalHyprland from "gi://AstalHyprland";
+export type AstalWidget = InstanceType<ReturnType<typeof astalify>>;
+
export type Address = `0x${string}`;
export interface Client {
diff --git a/src/utils/widgets.ts b/src/utils/widgets.ts
index fe7ff3e..c6f0f19 100644
--- a/src/utils/widgets.ts
+++ b/src/utils/widgets.ts
@@ -1,8 +1,9 @@
import { Binding, register } from "astal";
import { Astal, astalify, Gtk, Widget, type ConstructProps } from "astal/gtk3";
import AstalHyprland from "gi://AstalHyprland";
+import type { AstalWidget } from "./types";
-export const setupCustomTooltip = (self: any, text: string | Binding<string>) => {
+export const setupCustomTooltip = (self: AstalWidget, text: string | Binding<string>) => {
if (!text) return null;
const window = new Widget.Window({
@@ -27,7 +28,7 @@ export const setupCustomTooltip = (self: any, text: string | Binding<string>) =>
window.marginLeft = marginLeft;
});
- if (text instanceof Binding) self.hook(text, (_: any, v: string) => !v && window.hide());
+ if (text instanceof Binding) self.hook(text, (_, v) => !v && window.hide());
self.connect("query-tooltip", () => {
if (text instanceof Binding && !text.get()) return false;
@@ -54,7 +55,7 @@ export const setupCustomTooltip = (self: any, text: string | Binding<string>) =>
return window;
};
-export const setupChildClickthrough = (self: any) =>
+export const setupChildClickthrough = (self: AstalWidget) =>
self.connect("size-allocate", () => self.get_window()?.set_child_input_shapes());
@register()