Fix ui::checkbox::set_value
This commit is contained in:
parent
093308a116
commit
66deca8cda
2 changed files with 17 additions and 3 deletions
|
|
@ -14,7 +14,7 @@ namespace psemek::ui
|
||||||
bool on_event(mouse_click const & e) override;
|
bool on_event(mouse_click const & e) override;
|
||||||
|
|
||||||
bool value() const { return value_; }
|
bool value() const { return value_; }
|
||||||
void set_value(bool value) { value_ = value; }
|
void set_value(bool value, bool signal = true);
|
||||||
|
|
||||||
using on_value_changed_callback = std::function<void(bool)>;
|
using on_value_changed_callback = std::function<void(bool)>;
|
||||||
|
|
||||||
|
|
@ -40,6 +40,8 @@ namespace psemek::ui
|
||||||
bool value_ = false;
|
bool value_ = false;
|
||||||
|
|
||||||
on_value_changed_callback callback_;
|
on_value_changed_callback callback_;
|
||||||
|
|
||||||
|
void post_value_changed();
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,7 @@ namespace psemek::ui
|
||||||
{
|
{
|
||||||
state_ = state_t::mousedown;
|
state_ = state_t::mousedown;
|
||||||
value_ = !value_;
|
value_ = !value_;
|
||||||
if (callback_)
|
post_value_changed();
|
||||||
post([cb = callback_, v = value_]{ cb(v); });
|
|
||||||
on_state_changed(state_t::mouseover);
|
on_state_changed(state_t::mouseover);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -60,6 +59,13 @@ namespace psemek::ui
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void checkbox::set_value(bool value, bool signal)
|
||||||
|
{
|
||||||
|
value_ = value;
|
||||||
|
if (signal)
|
||||||
|
post_value_changed();
|
||||||
|
}
|
||||||
|
|
||||||
void checkbox::on_state_changed(state_t old)
|
void checkbox::on_state_changed(state_t old)
|
||||||
{
|
{
|
||||||
if (state() == state_t::mousedown || old == state_t::mousedown)
|
if (state() == state_t::mousedown || old == state_t::mousedown)
|
||||||
|
|
@ -68,4 +74,10 @@ namespace psemek::ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void checkbox::post_value_changed()
|
||||||
|
{
|
||||||
|
if (callback_)
|
||||||
|
post([cb = callback_, v = value_]{ cb(v); });
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue