Support ui::button::on_release callback
This commit is contained in:
parent
d692256580
commit
72cbec959d
2 changed files with 20 additions and 6 deletions
|
|
@ -24,11 +24,16 @@ namespace psemek::ui
|
|||
void set_enabled(bool value) override;
|
||||
void set_hidden(bool value) override;
|
||||
|
||||
using on_click_callback = std::function<void()>;
|
||||
using callback = std::function<void()>;
|
||||
|
||||
void on_click(on_click_callback callback)
|
||||
void on_click(callback callback)
|
||||
{
|
||||
callback_ = std::move(callback);
|
||||
on_click_callback_ = std::move(callback);
|
||||
}
|
||||
|
||||
void on_release(callback callback)
|
||||
{
|
||||
on_release_callback_ = std::move(callback);
|
||||
}
|
||||
|
||||
virtual void set_repeat(float wait, float period);
|
||||
|
|
@ -46,11 +51,13 @@ namespace psemek::ui
|
|||
|
||||
virtual void on_state_changed(state_t old);
|
||||
virtual void post_on_click();
|
||||
virtual void post_on_release();
|
||||
|
||||
private:
|
||||
state_t state_ = state_t::normal;
|
||||
|
||||
on_click_callback callback_;
|
||||
callback on_click_callback_;
|
||||
callback on_release_callback_;
|
||||
|
||||
struct repeat
|
||||
{
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ namespace psemek::ui
|
|||
if (!e.down)
|
||||
{
|
||||
state_ = state_t::mouseover;
|
||||
post_on_release();
|
||||
on_state_changed(state_t::mousedown);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -145,8 +146,14 @@ namespace psemek::ui
|
|||
|
||||
void button::post_on_click()
|
||||
{
|
||||
if (callback_)
|
||||
post(callback_);
|
||||
if (on_click_callback_)
|
||||
post(on_click_callback_);
|
||||
}
|
||||
|
||||
void button::post_on_release()
|
||||
{
|
||||
if (on_release_callback_)
|
||||
post(on_release_callback_);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue