diff options
author | Aylur <[email protected]> | 2024-06-19 02:29:23 +0200 |
---|---|---|
committer | Aylur <[email protected]> | 2024-06-19 02:29:23 +0200 |
commit | 9f775f32422a6934a4e76eeaad066ea26443e294 (patch) | |
tree | 49845754db93cfac344b6a9fb05098234de13027 | |
parent | 4e2fefe8c0174f6d8b8c9942b57bd89740a29f77 (diff) |
expose toggleClassName
-rw-r--r-- | gjs/src/astalify.ts | 5 | ||||
-rw-r--r-- | lua/astal/widget.lua | 4 | ||||
-rw-r--r-- | src/widget/widget.vala | 18 |
3 files changed, 19 insertions, 8 deletions
diff --git a/gjs/src/astalify.ts b/gjs/src/astalify.ts index 6e5e5b5..915014a 100644 --- a/gjs/src/astalify.ts +++ b/gjs/src/astalify.ts @@ -67,6 +67,7 @@ export type Widget<C extends { new(...args: any): Gtk.Widget }> = InstanceType<C className: string css: string cursor: Cursor + toggleClassName(name: string, on: boolean): void hook( object: Connectable, signal: string, @@ -173,6 +174,10 @@ function proxify< return hook(this, obj, sig, callback) } + klass.prototype.toggleClassName = function (name: string, on = true) { + Astal.widget_toggle_class_name(this, name, on) + } + Object.defineProperty(klass.prototype, "className", { get() { return Astal.widget_get_class_names(this).join(" ") }, set(v) { Astal.widget_set_class_names(this, v.split(/\s+/)) }, diff --git a/lua/astal/widget.lua b/lua/astal/widget.lua index f9a7800..f38cdb9 100644 --- a/lua/astal/widget.lua +++ b/lua/astal/widget.lua @@ -128,6 +128,10 @@ local function astalify(ctor) end end + function ctor:toggle_class_name(name, on) + Astal.toggle_class_name(self, name, on) + end + return function(tbl) if tbl == nil then tbl = {} diff --git a/src/widget/widget.vala b/src/widget/widget.vala index de34c6d..de5ba00 100644 --- a/src/widget/widget.vala +++ b/src/widget/widget.vala @@ -72,14 +72,16 @@ public List<weak string> widget_get_class_names(Gtk.Widget widget) { return widget.get_style_context().list_classes(); } -public void widget_toggle_class_name(Gtk.Widget widget, - string class_name, - bool condition) { - var c = widget.get_style_context(); - if (condition) - c.add_class(class_name); - else - c.remove_class(class_name); +public void widget_toggle_class_name( + Gtk.Widget widget, + string class_name, + bool condition = true +) { + var c = widget.get_style_context(); + if (condition) + c.add_class(class_name); + else + c.remove_class(class_name); } private class Cursor { |