Skip to content
Snippets Groups Projects
Unverified Commit 5112d913 authored by Arthur Sonzogni's avatar Arthur Sonzogni Committed by GitHub
Browse files

Button: invoke `on_click` at the end. (#807)

Some users might destroy `this`, which would result in UAF.

In the future, we should consider alternatives like posting a task to
the main loop, or rely on users for this.

Fixed:https://github.com/ArthurSonzogni/FTXUI/issues/804
parent 91a162a3
No related branches found
No related tags found
No related merge requests found
...@@ -98,10 +98,13 @@ class ButtonBase : public ComponentBase, public ButtonOption { ...@@ -98,10 +98,13 @@ class ButtonBase : public ComponentBase, public ButtonOption {
} }
void OnClick() { void OnClick() {
on_click();
animation_background_ = 0.5F; // NOLINT animation_background_ = 0.5F; // NOLINT
animation_foreground_ = 0.5F; // NOLINT animation_foreground_ = 0.5F; // NOLINT
SetAnimationTarget(1.F); // NOLINT SetAnimationTarget(1.F); // NOLINT
// TODO(arthursonzogni): Consider posting the task to the main loop, instead
// of invoking it immediately.
on_click(); // May delete this.
} }
bool OnEvent(Event event) override { bool OnEvent(Event event) override {
...@@ -110,7 +113,7 @@ class ButtonBase : public ComponentBase, public ButtonOption { ...@@ -110,7 +113,7 @@ class ButtonBase : public ComponentBase, public ButtonOption {
} }
if (event == Event::Return) { if (event == Event::Return) {
OnClick(); OnClick(); // May delete this.
return true; return true;
} }
return false; return false;
...@@ -127,7 +130,7 @@ class ButtonBase : public ComponentBase, public ButtonOption { ...@@ -127,7 +130,7 @@ class ButtonBase : public ComponentBase, public ButtonOption {
if (event.mouse().button == Mouse::Left && if (event.mouse().button == Mouse::Left &&
event.mouse().motion == Mouse::Pressed) { event.mouse().motion == Mouse::Pressed) {
TakeFocus(); TakeFocus();
OnClick(); OnClick(); // May delete this.
return true; return true;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment