#if defined(Hiro_Widget) struct mWidget : mSizable { Declare(Widget) auto doDrop(vector names) const -> void; auto doMouseEnter() const -> void; auto doMouseLeave() const -> void; auto doMouseMove(Position position) const -> void; auto doMousePress(Mouse::Button button) const -> void; auto doMouseRelease(Mouse::Button button) const -> void; auto droppable() const -> bool; auto focusable() const -> bool; auto mouseCursor() const -> MouseCursor; auto onDrop(const function)>& callback = {}) -> type&; auto onMouseEnter(const function& callback = {}) -> type&; auto onMouseLeave(const function& callback = {}) -> type&; auto onMouseMove(const function& callback = {}) -> type&; auto onMousePress(const function& callback = {}) -> type&; auto onMouseRelease(const function& callback = {}) -> type&; auto remove() -> type& override; auto setDroppable(bool droppable = true) -> type&; auto setFocusable(bool focusable = true) -> type&; auto setMouseCursor(const MouseCursor& mouseCursor = {}) -> type&; auto setToolTip(const string& toolTip = "") -> type&; auto toolTip() const -> string; //private: struct State { bool droppable = false; bool focusable = false; MouseCursor mouseCursor; function)> onDrop; function onMouseEnter; function onMouseLeave; function onMouseMove; function onMousePress; function onMouseRelease; string toolTip; } state; }; #endif