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);
|
on_close_ = std::move(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool on_event(mouse_move const & e)
|
bool on_event(mouse_move const & e) override
|
||||||
{
|
{
|
||||||
mouse_ = e.position;
|
mouse_ = e.position;
|
||||||
|
|
||||||
|
|
@ -244,22 +244,29 @@ namespace psemek::ui
|
||||||
shape_.box += geom::cast<float>(e.position - *drag_);
|
shape_.box += geom::cast<float>(e.position - *drag_);
|
||||||
drag_ = e.position;
|
drag_ = e.position;
|
||||||
post_reshape();
|
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_;
|
drag_ = *mouse_;
|
||||||
else
|
else
|
||||||
drag_ = std::nullopt;
|
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
|
struct shape const & shape() const override
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue