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
+6
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 {
+5 -2
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);
+4
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);
}