Add shown/hidden and minimized/maximized/restored window events
All checks were successful
Run tests / Run tests (push) Successful in 7m6s
All checks were successful
Run tests / Run tests (push) Successful in 7m6s
This commit is contained in:
parent
c22c257c96
commit
28126518d5
8 changed files with 65 additions and 0 deletions
|
|
@ -11,6 +11,8 @@ namespace psemek::app
|
||||||
{
|
{
|
||||||
void on_event(resize_event const &) override;
|
void on_event(resize_event const &) override;
|
||||||
void on_event(focus_event const &) override;
|
void on_event(focus_event const &) override;
|
||||||
|
void on_event(show_event const &) override;
|
||||||
|
void on_event(minimize_event const &) override;
|
||||||
void on_event(mouse_move_event const &) override;
|
void on_event(mouse_move_event const &) override;
|
||||||
void on_event(mouse_wheel_event const &) override;
|
void on_event(mouse_wheel_event const &) override;
|
||||||
void on_event(mouse_button_event const &) override;
|
void on_event(mouse_button_event const &) override;
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ namespace psemek::app
|
||||||
{
|
{
|
||||||
virtual void on_event(resize_event const &) {}
|
virtual void on_event(resize_event const &) {}
|
||||||
virtual void on_event(focus_event const &) {}
|
virtual void on_event(focus_event const &) {}
|
||||||
|
virtual void on_event(show_event const &) {}
|
||||||
|
virtual void on_event(minimize_event const &) {}
|
||||||
virtual void on_event(mouse_move_event const &) {}
|
virtual void on_event(mouse_move_event const &) {}
|
||||||
virtual void on_event(mouse_wheel_event const &) {}
|
virtual void on_event(mouse_wheel_event const &) {}
|
||||||
virtual void on_event(mouse_button_event const &) {}
|
virtual void on_event(mouse_button_event const &) {}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ namespace psemek::app
|
||||||
{
|
{
|
||||||
math::vector<int, 2> size = {0, 0};
|
math::vector<int, 2> size = {0, 0};
|
||||||
bool focus = true;
|
bool focus = true;
|
||||||
|
bool shown = false;
|
||||||
|
minimize_event minimized = minimize_event::restored;
|
||||||
math::point<int, 2> mouse = {0, 0};
|
math::point<int, 2> mouse = {0, 0};
|
||||||
int wheel = 0;
|
int wheel = 0;
|
||||||
util::hash_set<mouse_button> mouse_button_down;
|
util::hash_set<mouse_button> mouse_button_down;
|
||||||
|
|
@ -26,6 +28,16 @@ namespace psemek::app
|
||||||
state.focus = event.gained;
|
state.focus = event.gained;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void apply(event_state & state, show_event const & event)
|
||||||
|
{
|
||||||
|
state.shown = event.shown;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void apply(event_state & state, minimize_event const & event)
|
||||||
|
{
|
||||||
|
state.minimized = event;
|
||||||
|
}
|
||||||
|
|
||||||
inline void apply(event_state & state, mouse_move_event const & event)
|
inline void apply(event_state & state, mouse_move_event const & event)
|
||||||
{
|
{
|
||||||
state.mouse = event.position;
|
state.mouse = event.position;
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,18 @@ namespace psemek::app
|
||||||
bool gained;
|
bool gained;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct show_event
|
||||||
|
{
|
||||||
|
bool shown;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class minimize_event
|
||||||
|
{
|
||||||
|
minimized,
|
||||||
|
maximized,
|
||||||
|
restored,
|
||||||
|
};
|
||||||
|
|
||||||
struct mouse_move_event
|
struct mouse_move_event
|
||||||
{
|
{
|
||||||
math::point<int, 2> position;
|
math::point<int, 2> position;
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,8 @@ namespace psemek::app
|
||||||
{
|
{
|
||||||
void on_event(resize_event const &) override;
|
void on_event(resize_event const &) override;
|
||||||
void on_event(focus_event const &) override;
|
void on_event(focus_event const &) override;
|
||||||
|
void on_event(show_event const &) override;
|
||||||
|
void on_event(minimize_event const &) override;
|
||||||
void on_event(mouse_move_event const &) override;
|
void on_event(mouse_move_event const &) override;
|
||||||
void on_event(mouse_wheel_event const &) override;
|
void on_event(mouse_wheel_event const &) override;
|
||||||
void on_event(mouse_button_event const &) override;
|
void on_event(mouse_button_event const &) override;
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,16 @@ namespace psemek::app
|
||||||
apply(state_, event);
|
apply(state_, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void application_base::on_event(show_event const & event)
|
||||||
|
{
|
||||||
|
apply(state_, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void application_base::on_event(minimize_event const & event)
|
||||||
|
{
|
||||||
|
apply(state_, event);
|
||||||
|
}
|
||||||
|
|
||||||
void application_base::on_event(mouse_move_event const & event)
|
void application_base::on_event(mouse_move_event const & event)
|
||||||
{
|
{
|
||||||
apply(state_, event);
|
apply(state_, event);
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,16 @@ namespace psemek::app
|
||||||
on_event_impl(event);
|
on_event_impl(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void scene_application::on_event(show_event const & event)
|
||||||
|
{
|
||||||
|
on_event_impl(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void scene_application::on_event(minimize_event const & event)
|
||||||
|
{
|
||||||
|
on_event_impl(event);
|
||||||
|
}
|
||||||
|
|
||||||
void scene_application::on_event(mouse_move_event const & event)
|
void scene_application::on_event(mouse_move_event const & event)
|
||||||
{
|
{
|
||||||
on_event_impl(event);
|
on_event_impl(event);
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,21 @@ namespace psemek::sdl2
|
||||||
case SDL_WINDOWEVENT_FOCUS_LOST:
|
case SDL_WINDOWEVENT_FOCUS_LOST:
|
||||||
handler.on_event(app::focus_event{false});
|
handler.on_event(app::focus_event{false});
|
||||||
break;
|
break;
|
||||||
|
case SDL_WINDOWEVENT_SHOWN:
|
||||||
|
handler.on_event(app::show_event{true});
|
||||||
|
break;
|
||||||
|
case SDL_WINDOWEVENT_HIDDEN:
|
||||||
|
handler.on_event(app::show_event{false});
|
||||||
|
break;
|
||||||
|
case SDL_WINDOWEVENT_MINIMIZED:
|
||||||
|
handler.on_event(app::minimize_event::minimized);
|
||||||
|
break;
|
||||||
|
case SDL_WINDOWEVENT_MAXIMIZED:
|
||||||
|
handler.on_event(app::minimize_event::maximized);
|
||||||
|
break;
|
||||||
|
case SDL_WINDOWEVENT_RESTORED:
|
||||||
|
handler.on_event(app::minimize_event::restored);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SDL_MOUSEMOTION:
|
case SDL_MOUSEMOTION:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue