From ce64b076e6930dfc499d889ad992191a4fbb7b11 Mon Sep 17 00:00:00 2001 From: kotontrion Date: Sat, 16 Nov 2024 11:48:43 +0100 Subject: gjs: add actionGroup property --- lang/gjs/src/gtk3/astalify.ts | 5 +++++ lang/gjs/src/gtk3/jsx-runtime.ts | 2 ++ lang/gjs/src/gtk3/widget.ts | 9 +++++++++ 3 files changed, 16 insertions(+) (limited to 'lang/gjs') diff --git a/lang/gjs/src/gtk3/astalify.ts b/lang/gjs/src/gtk3/astalify.ts index b9621be..b9dd36f 100644 --- a/lang/gjs/src/gtk3/astalify.ts +++ b/lang/gjs/src/gtk3/astalify.ts @@ -69,6 +69,9 @@ export default function astalify< get noImplicitDestroy(): boolean { return this.__no_implicit_destroy } set noImplicitDestroy(value: boolean) { this.__no_implicit_destroy = value } + set actionGroup(actionGroup: ActionGroup) { this.insert_action_group(actionGroup.prefix, actionGroup.actionGroup) } + set_action_group(actionGroup: ActionGroup) { this.actionGroup = actionGroup } + _setChildren(children: Gtk.Widget[]) { children = children.flat(Infinity).map(ch => ch instanceof Gtk.Widget ? ch @@ -327,3 +330,5 @@ type Cursor = | "nwse-resize" | "zoom-in" | "zoom-out" + +type ActionGroup = { prefix: string, actionGroup: Gtk.ActionGroup } diff --git a/lang/gjs/src/gtk3/jsx-runtime.ts b/lang/gjs/src/gtk3/jsx-runtime.ts index 22dc424..10b3bcf 100644 --- a/lang/gjs/src/gtk3/jsx-runtime.ts +++ b/lang/gjs/src/gtk3/jsx-runtime.ts @@ -54,6 +54,7 @@ const ctors = { label: Widget.Label, levelbar: Widget.LevelBar, // TODO: listbox + menubutton: Widget.MenuButton, overlay: Widget.Overlay, revealer: Widget.Revealer, scrollable: Widget.Scrollable, @@ -82,6 +83,7 @@ declare global { label: Widget.LabelProps levelbar: Widget.LevelBarProps // TODO: listbox + menubutton: Widget.MenuButton, overlay: Widget.OverlayProps revealer: Widget.RevealerProps scrollable: Widget.ScrollableProps diff --git a/lang/gjs/src/gtk3/widget.ts b/lang/gjs/src/gtk3/widget.ts index b4e8497..b3c4a4d 100644 --- a/lang/gjs/src/gtk3/widget.ts +++ b/lang/gjs/src/gtk3/widget.ts @@ -102,6 +102,15 @@ export class LevelBar extends astalify(Astal.LevelBar) { // TODO: ListBox + +// MenuButton +export type MenuButtonProps = ConstructProps +export class MenuButton extends astalify(Gtk.MenuButton) { + static { GObject.registerClass({ GTypeName: "MenuButton" }, this) } + constructor(props?: MenuButtonProps, child?: BindableChild) { super({ child, ...props } as any) } +} + + // Overlay Object.defineProperty(Astal.Overlay.prototype, "overlays", { get() { return this.get_overlays() }, -- cgit v1.2.3 From c5664e2941b33609de0743a8475a40b24522a3dc Mon Sep 17 00:00:00 2001 From: Aylur Date: Thu, 19 Dec 2024 23:42:33 +0100 Subject: update examples, fix styling --- lang/gjs/src/gtk3/astalify.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lang/gjs') diff --git a/lang/gjs/src/gtk3/astalify.ts b/lang/gjs/src/gtk3/astalify.ts index b758976..18df132 100644 --- a/lang/gjs/src/gtk3/astalify.ts +++ b/lang/gjs/src/gtk3/astalify.ts @@ -69,7 +69,7 @@ export default function astalify< get noImplicitDestroy(): boolean { return this.__no_implicit_destroy } set noImplicitDestroy(value: boolean) { this.__no_implicit_destroy = value } - set actionGroup(actionGroup: ActionGroup) { this.insert_action_group(actionGroup.prefix, actionGroup.actionGroup) } + set actionGroup([prefix, group]: ActionGroup) { this.insert_action_group(prefix, group) } set_action_group(actionGroup: ActionGroup) { this.actionGroup = actionGroup } _setChildren(children: Gtk.Widget[]) { @@ -331,4 +331,4 @@ type Cursor = | "zoom-in" | "zoom-out" -type ActionGroup = { prefix: string, actionGroup: Gtk.ActionGroup } +type ActionGroup = [prefix: string, actionGroup: Gtk.ActionGroup] -- cgit v1.2.3 From 11425c9636903811418700ca2384f03443be19f7 Mon Sep 17 00:00:00 2001 From: Aylur Date: Fri, 20 Dec 2024 00:41:48 +0100 Subject: fix(gjs): filter undefined props close #151 --- lang/gjs/src/gtk3/astalify.ts | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lang/gjs') diff --git a/lang/gjs/src/gtk3/astalify.ts b/lang/gjs/src/gtk3/astalify.ts index 18df132..9e6f022 100644 --- a/lang/gjs/src/gtk3/astalify.ts +++ b/lang/gjs/src/gtk3/astalify.ts @@ -168,6 +168,13 @@ export default function astalify< const { setup, child, children = [], ...props } = config props.visible ??= true + // remove undefined values + for (const [key, value] of Object.entries(props)) { + if (value === undefined) { + delete props[key] + } + } + if (child) children.unshift(child) -- cgit v1.2.3