summaryrefslogtreecommitdiff
path: root/lang/gjs
diff options
context:
space:
mode:
Diffstat (limited to 'lang/gjs')
-rw-r--r--lang/gjs/src/_astal.ts10
-rw-r--r--lang/gjs/src/gobject.ts2
-rw-r--r--lang/gjs/src/gtk3/astalify.ts5
-rw-r--r--lang/gjs/src/gtk3/jsx-runtime.ts2
-rw-r--r--lang/gjs/src/gtk3/widget.ts9
-rw-r--r--lang/gjs/src/overrides.ts4
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")