parent
8bd0b732e7
commit
557e4c7a52
32 changed files with 281 additions and 12 deletions
modules/ags/gtk4/widgets/subclasses
34
modules/ags/gtk4/widgets/subclasses/menubutton.ts
Normal file
34
modules/ags/gtk4/widgets/subclasses/menubutton.ts
Normal file
|
@ -0,0 +1,34 @@
|
|||
import { register } from 'astal';
|
||||
import { Gtk } from 'astal/gtk4';
|
||||
|
||||
import astalify, { type AstalifyProps, type ConstructProps } from '../astalify';
|
||||
|
||||
|
||||
export type MenuButtonProps = ConstructProps<
|
||||
MenuButtonClass,
|
||||
Gtk.MenuButton.ConstructorProps & AstalifyProps
|
||||
>;
|
||||
|
||||
@register({ GTypeName: 'MenuButton' })
|
||||
export class MenuButtonClass extends astalify(Gtk.MenuButton) {
|
||||
constructor({ cssName = 'menubutton', ...props }: MenuButtonProps = {}) {
|
||||
super({ cssName, ...props });
|
||||
}
|
||||
|
||||
getChildren(self: MenuButtonClass) {
|
||||
return [self.popover, self.child];
|
||||
}
|
||||
|
||||
setChildren(self: MenuButtonClass, children: Gtk.Widget[]) {
|
||||
for (const child of children) {
|
||||
if (child instanceof Gtk.Popover) {
|
||||
self.set_popover(child);
|
||||
}
|
||||
else {
|
||||
self.set_child(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const MenuButton = (props?: MenuButtonProps) => new MenuButtonClass(props);
|
Loading…
Add table
Add a link
Reference in a new issue