summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAylur <[email protected]>2024-11-15 15:24:49 +0000
committerAylur <[email protected]>2024-11-15 15:25:47 +0000
commit2dd071c5bbbec7c584cf07349ffbca56189e0a78 (patch)
tree125f7946e96977617e9a149cc82d182daefb2b7d
parent5a09ab8c27579b417ee6259b6bcf8e3e3aa78449 (diff)
fix(gjs): gobject decorators
subclassing further now works correctly signals without args are fixed
-rw-r--r--lang/gjs/src/gobject.ts6
-rw-r--r--lang/gjs/src/gtk3/astalify.ts6
-rw-r--r--lang/gjs/src/gtk3/index.ts4
3 files changed, 10 insertions, 6 deletions
diff --git a/lang/gjs/src/gobject.ts b/lang/gjs/src/gobject.ts
index 59dd62a..b744cfb 100644
--- a/lang/gjs/src/gobject.ts
+++ b/lang/gjs/src/gobject.ts
@@ -51,6 +51,8 @@ export function register(options: MetaInfo = {}) {
Properties: { ...cls[meta]?.Properties },
...options,
}, cls)
+
+ delete cls[meta]
}
}
@@ -124,7 +126,9 @@ export function signal(
}
}
else {
- target.constructor[meta].Signals[name] = declaration
+ target.constructor[meta].Signals[name] = declaration || {
+ param_types: [],
+ }
}
if (!desc) {
diff --git a/lang/gjs/src/gtk3/astalify.ts b/lang/gjs/src/gtk3/astalify.ts
index b9621be..6973805 100644
--- a/lang/gjs/src/gtk3/astalify.ts
+++ b/lang/gjs/src/gtk3/astalify.ts
@@ -43,7 +43,7 @@ function setProp(obj: any, prop: string, value: any) {
export default function astalify<
C extends { new(...args: any[]): Gtk.Widget },
->(cls: C) {
+>(cls: C, clsName = cls.name) {
class Widget extends cls {
get css(): string { return Astal.widget_get_css(this) }
set css(css: string) { Astal.widget_set_css(this, css) }
@@ -233,7 +233,7 @@ export default function astalify<
}
GObject.registerClass({
- GTypeName: `Astal_${cls.name}`,
+ GTypeName: `Astal_${clsName}`,
Properties: {
"class-name": GObject.ParamSpec.string(
"class-name", "", "", GObject.ParamFlags.READWRITE, "",
@@ -256,7 +256,7 @@ export default function astalify<
return Widget
}
-type BindableProps<T> = {
+export type BindableProps<T> = {
[K in keyof T]: Binding<T[K]> | T[K];
}
diff --git a/lang/gjs/src/gtk3/index.ts b/lang/gjs/src/gtk3/index.ts
index cfafbda..ff641af 100644
--- a/lang/gjs/src/gtk3/index.ts
+++ b/lang/gjs/src/gtk3/index.ts
@@ -1,9 +1,9 @@
import Astal from "gi://Astal?version=3.0"
import Gtk from "gi://Gtk?version=3.0"
import Gdk from "gi://Gdk?version=3.0"
-import astalify, { type ConstructProps } from "./astalify.js"
+import astalify, { type ConstructProps, type BindableProps } from "./astalify.js"
export { Astal, Gtk, Gdk }
export { default as App } from "./app.js"
-export { astalify, ConstructProps }
+export { astalify, ConstructProps, BindableProps }
export * as Widget from "./widget.js"