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_enabled(bool value) override;
|
||||||
void set_hidden(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);
|
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 on_state_changed(state_t old);
|
||||||
virtual void post_on_click();
|
virtual void post_on_click();
|
||||||
|
virtual void post_on_release();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
state_t state_ = state_t::normal;
|
state_t state_ = state_t::normal;
|
||||||
|
|
||||||
on_click_callback callback_;
|
callback on_click_callback_;
|
||||||
|
callback on_release_callback_;
|
||||||
|
|
||||||
struct repeat
|
struct repeat
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ namespace psemek::ui
|
||||||
if (!e.down)
|
if (!e.down)
|
||||||
{
|
{
|
||||||
state_ = state_t::mouseover;
|
state_ = state_t::mouseover;
|
||||||
|
post_on_release();
|
||||||
on_state_changed(state_t::mousedown);
|
on_state_changed(state_t::mousedown);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -145,8 +146,14 @@ namespace psemek::ui
|
||||||
|
|
||||||
void button::post_on_click()
|
void button::post_on_click()
|
||||||
{
|
{
|
||||||
if (callback_)
|
if (on_click_callback_)
|
||||||
post(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