Fix default window event handling: events are considered processed if mouse is over window
This commit is contained in:
parent
c5802b2bbe
commit
90d5917ef4
1 changed files with 15 additions and 8 deletions
|
|
@ -235,7 +235,7 @@ namespace psemek::ui
|
|||
on_close_ = std::move(callback);
|
||||
}
|
||||
|
||||
bool on_event(mouse_move const & e)
|
||||
bool on_event(mouse_move const & e) override
|
||||
{
|
||||
mouse_ = e.position;
|
||||
|
||||
|
|
@ -244,22 +244,29 @@ namespace psemek::ui
|
|||
shape_.box += geom::cast<float>(e.position - *drag_);
|
||||
drag_ = e.position;
|
||||
post_reshape();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
return shape().contains(geom::cast<float>(*mouse_));
|
||||
}
|
||||
|
||||
bool on_event(mouse_click const & e)
|
||||
bool on_event(mouse_click const & e) override
|
||||
{
|
||||
if (e.button == mouse_button::left)
|
||||
if (!mouse_ || !shape().contains(geom::cast<float>(*mouse_)))
|
||||
return false;
|
||||
|
||||
if (e.button == mouse_button::left && mouse_)
|
||||
{
|
||||
if (mouse_ && e.down)
|
||||
if (e.down)
|
||||
drag_ = *mouse_;
|
||||
else
|
||||
drag_ = std::nullopt;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool on_event(mouse_wheel const &) override
|
||||
{
|
||||
return mouse_ && shape().contains(geom::cast<float>(*mouse_));
|
||||
}
|
||||
|
||||
struct shape const & shape() const override
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue