diff options
Diffstat (limited to 'lang/gjs')
-rw-r--r-- | lang/gjs/src/_astal.ts | 10 | ||||
-rw-r--r-- | lang/gjs/src/gobject.ts | 2 | ||||
-rw-r--r-- | lang/gjs/src/gtk3/astalify.ts | 5 | ||||
-rw-r--r-- | lang/gjs/src/gtk3/jsx-runtime.ts | 2 | ||||
-rw-r--r-- | lang/gjs/src/gtk3/widget.ts | 9 | ||||
-rw-r--r-- | lang/gjs/src/overrides.ts | 4 |
6 files changed, 28 insertions, 4 deletions
diff --git a/lang/gjs/src/_astal.ts b/lang/gjs/src/_astal.ts index cfd8c9f..6f3285b 100644 --- a/lang/gjs/src/_astal.ts +++ b/lang/gjs/src/_astal.ts @@ -65,8 +65,16 @@ export function hook<Widget extends Connectable>( export function construct<Widget extends Connectable & { [setChildren]: (children: any[]) => void }>(widget: Widget, config: any) { const { setup, child, children = [], ...props } = config - if (child) + if (child) { children.unshift(child) + } + + // remove undefined values + for (const [key, value] of Object.entries(props)) { + if (value === undefined) { + delete props[key] + } + } // collect bindings const bindings: Array<[string, Binding<any>]> = Object diff --git a/lang/gjs/src/gobject.ts b/lang/gjs/src/gobject.ts index 1d6b9a1..7a5105f 100644 --- a/lang/gjs/src/gobject.ts +++ b/lang/gjs/src/gobject.ts @@ -174,7 +174,7 @@ function defaultValue(declaration: PropertyDeclaration) { switch (declaration) { case String: - return "default-string" + return "" case Number: return 0 case Boolean: diff --git a/lang/gjs/src/gtk3/astalify.ts b/lang/gjs/src/gtk3/astalify.ts index 92ffb6f..9cab5b2 100644 --- a/lang/gjs/src/gtk3/astalify.ts +++ b/lang/gjs/src/gtk3/astalify.ts @@ -35,6 +35,9 @@ export default function astalify< get noImplicitDestroy(): boolean { return this[noImplicitDestroy] } set noImplicitDestroy(value: boolean) { this[noImplicitDestroy] = value } + set actionGroup([prefix, group]: ActionGroup) { this.insert_action_group(prefix, group) } + set_action_group(actionGroup: ActionGroup) { this.actionGroup = actionGroup } + protected getChildren(): Array<Gtk.Widget> { if (this instanceof Gtk.Bin) { return this.get_child() ? [this.get_child()!] : [] @@ -192,3 +195,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 f37c695..cc97f2e 100644 --- a/lang/gjs/src/gtk3/jsx-runtime.ts +++ b/lang/gjs/src/gtk3/jsx-runtime.ts @@ -32,6 +32,7 @@ const ctors = { label: Widget.Label, levelbar: Widget.LevelBar, // TODO: listbox + menubutton: Widget.MenuButton, overlay: Widget.Overlay, revealer: Widget.Revealer, scrollable: Widget.Scrollable, @@ -60,6 +61,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 759a4b1..10e4842 100644 --- a/lang/gjs/src/gtk3/widget.ts +++ b/lang/gjs/src/gtk3/widget.ts @@ -116,6 +116,15 @@ export class LevelBar extends astalify(Astal.LevelBar) { // TODO: ListBox + +// MenuButton +export type MenuButtonProps = ConstructProps<MenuButton, Gtk.MenuButton.ConstructorProps> +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() }, diff --git a/lang/gjs/src/overrides.ts b/lang/gjs/src/overrides.ts index 5b1ebad..0d09e7b 100644 --- a/lang/gjs/src/overrides.ts +++ b/lang/gjs/src/overrides.ts @@ -47,8 +47,8 @@ await suppress(import("gi://AstalHyprland"), ({ Hyprland, Monitor, Workspace }) await suppress(import("gi://AstalMpris"), ({ Mpris, Player }) => { patch(Mpris.prototype, "players") - patch(Player.prototype, "supported_uri_schemas") - patch(Player.prototype, "supportedUriSchemas") + patch(Player.prototype, "supported_uri_schemes") + patch(Player.prototype, "supportedUriSchemes") patch(Player.prototype, "supported_mime_types") patch(Player.prototype, "supportedMimeTypes") patch(Player.prototype, "comments") |