add 'ondefocus' ui event

This commit is contained in:
MihailRis 2025-04-24 22:41:40 +03:00
parent e6dea9ed48
commit 9befbb9795
3 changed files with 15 additions and 2 deletions

View File

@ -74,6 +74,11 @@ UINode* UINode::listenDoubleClick(const onaction& action) {
return this;
}
UINode* UINode::listenDefocus(const onaction& action) {
defocusCallbacks.listen(action);
return this;
}
void UINode::click(int, int) {
pressed = true;
}
@ -98,6 +103,7 @@ bool UINode::isPressed() const {
void UINode::defocus() {
focused = false;
defocusCallbacks.notify(gui);
}
bool UINode::isFocused() const {

View File

@ -114,6 +114,8 @@ namespace gui {
ActionsSet actions;
/// @brief 'ondoubleclick' callbacks
ActionsSet doubleClickCallbacks;
/// @brief 'ondefocus' callbacks
ActionsSet defocusCallbacks;
/// @brief element tooltip text
std::wstring tooltip;
/// @brief element tooltip delay
@ -169,8 +171,9 @@ namespace gui {
/// @brief Get element z-index
int getZIndex() const;
virtual UINode* listenAction(const onaction &action);
virtual UINode* listenDoubleClick(const onaction &action);
virtual UINode* listenAction(const onaction& action);
virtual UINode* listenDoubleClick(const onaction& action);
virtual UINode* listenDefocus(const onaction& action);
virtual void onFocus() {focused = true;}
virtual void doubleClick(int x, int y);

View File

@ -180,6 +180,10 @@ static void read_uinode(
node.listenAction(onclick);
}
if (auto ondefocus = create_action(reader, element, "ondefocus")) {
node.listenDefocus(ondefocus);
}
if (auto ondoubleclick = create_action(reader, element, "ondoubleclick")) {
node.listenDoubleClick(ondoubleclick);
}