class GenericButton : CustomWidget { EventHandling handleClick(ClickEvent e) { .... this._clicked = true; .... } EventHandling handleMouseButton(MouseButtonEvent e) { .... enableStyle("active"); _active = true; .... } bool globalHandleMouseButton(MouseButtonEvent e) { .... disableStyle("active"); _active = false; .... } EventHandling handleMouseEnter(MouseEnterEvent e) { _hover = true; enableStyle("hover"); .... } EventHandling handleMouseLeave(MouseLeaveEvent e) { _hover = false; disableStyle("hover"); .... } override void onGuiStructureBuilt() { this._clicked = false; super.onGuiStructureBuilt(); } this() { this.addHandler(&this.handleClick); this.addHandler(&this.handleMouseButton); this.addHandler(&this.handleMouseEnter); this.addHandler(&this.handleMouseLeave); } mixin(defineProperties( "inline out bool clicked, inline out bool active, inline out bool hover")); mixin MWidget; }