diff options
Diffstat (limited to 'lang')
-rw-r--r-- | lang/gjs/src/gtk3/astalify.ts | 12 | ||||
-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/lua/astal/gtk3/astalify.lua | 2 | ||||
-rw-r--r-- | lang/lua/astal/gtk3/widget.lua | 7 |
5 files changed, 31 insertions, 1 deletions
diff --git a/lang/gjs/src/gtk3/astalify.ts b/lang/gjs/src/gtk3/astalify.ts index 6973805..9e6f022 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([prefix, group]: ActionGroup) { this.insert_action_group(prefix, group) } + set_action_group(actionGroup: ActionGroup) { this.actionGroup = actionGroup } + _setChildren(children: Gtk.Widget[]) { children = children.flat(Infinity).map(ch => ch instanceof Gtk.Widget ? ch @@ -165,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) @@ -327,3 +337,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 9da4bb6..19a3b7d 100644 --- a/lang/gjs/src/gtk3/jsx-runtime.ts +++ b/lang/gjs/src/gtk3/jsx-runtime.ts @@ -55,6 +55,7 @@ const ctors = { label: Widget.Label, levelbar: Widget.LevelBar, // TODO: listbox + menubutton: Widget.MenuButton, overlay: Widget.Overlay, revealer: Widget.Revealer, scrollable: Widget.Scrollable, @@ -83,6 +84,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<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/lua/astal/gtk3/astalify.lua b/lang/lua/astal/gtk3/astalify.lua index 95faa2c..5bf3c1d 100644 --- a/lang/lua/astal/gtk3/astalify.lua +++ b/lang/lua/astal/gtk3/astalify.lua @@ -174,7 +174,7 @@ return function(ctor) end))) -- default visible to true - if type(tbl.visible) ~= "boolean" then + if tbl.visible == nil then tbl.visible = true end diff --git a/lang/lua/astal/gtk3/widget.lua b/lang/lua/astal/gtk3/widget.lua index c8857e7..654da29 100644 --- a/lang/lua/astal/gtk3/widget.lua +++ b/lang/lua/astal/gtk3/widget.lua @@ -19,6 +19,7 @@ local Widget = { Label = astalify(Gtk.Label), LevelBar = astalify(Astal.LevelBar), -- TODO: ListBox + MenuButton = astalify(Gtk.MenuButton), Overlay = astalify(Astal.Overlay), Revealer = astalify(Gtk.Revealer), Scrollable = astalify(Astal.Scrollable), @@ -64,6 +65,12 @@ Gtk.Widget._attribute.click_through = { set = Astal.widget_set_click_through, } +Gtk.Widget._attribute.action_group = { + set = function (self, v) + self:insert_action_group(v[1], v[2]) + end +} + local no_implicit_destroy = {} Gtk.Widget._attribute.no_implicit_destroy = { get = function(self) |