summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAylur <[email protected]>2024-10-22 16:02:06 +0000
committerAylur <[email protected]>2024-10-22 16:02:06 +0000
commit004b12381b3891836ecbf3bb22aa3054145e3f38 (patch)
tree64cbe42456f989076c72e80b1394d01bb3d4dcfa
parentbfb7e27c1f9d099fcc457379f0317b1cea43fc37 (diff)
fix(gjs): property decorator
make it not static
-rw-r--r--lang/gjs/src/gobject.ts20
1 files changed, 10 insertions, 10 deletions
diff --git a/lang/gjs/src/gobject.ts b/lang/gjs/src/gobject.ts
index d37ac69..aeb3d9e 100644
--- a/lang/gjs/src/gobject.ts
+++ b/lang/gjs/src/gobject.ts
@@ -4,6 +4,7 @@ export { default as GLib } from "gi://GLib?version=2.0"
export { GObject, GObject as default }
const meta = Symbol("meta")
+const priv = Symbol("priv")
const { ParamSpec, ParamFlags } = GObject
@@ -55,28 +56,27 @@ export function property(declaration: PropertyDeclaration = Object) {
const name = kebabify(prop)
if (!desc) {
- let value = defaultValue(declaration)
-
Object.defineProperty(target, prop, {
get() {
- return value
+ return this[priv]?.[prop] ?? defaultValue(declaration)
},
- set(v) {
- if (v !== value) {
- value = v
+ set(v: any) {
+ if (v !== this[prop]) {
+ this[priv] ??= {}
+ this[priv][prop] = v
this.notify(name)
}
},
})
Object.defineProperty(target, `set_${name.replace("-", "_")}`, {
- value: function (v: any) {
+ value(v: any) {
this[prop] = v
},
})
Object.defineProperty(target, `get_${name.replace("-", "_")}`, {
- value: function () {
+ value() {
return this[prop]
},
})
@@ -95,10 +95,10 @@ export function property(declaration: PropertyDeclaration = Object) {
}
export function signal(...params: Array<{ $gtype: GObject.GType } | typeof Object>):
-(target: any, signal: any, desc?: PropertyDescriptor) => void
+ (target: any, signal: any, desc?: PropertyDescriptor) => void
export function signal(declaration?: SignalDeclaration):
-(target: any, signal: any, desc?: PropertyDescriptor) => void
+ (target: any, signal: any, desc?: PropertyDescriptor) => void
export function signal(
declaration?: SignalDeclaration | { $gtype: GObject.GType } | typeof Object,