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(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_wheel_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(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_wheel_event const &) {}
|
||||
virtual void on_event(mouse_button_event const &) {}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@ namespace psemek::app
|
|||
{
|
||||
math::vector<int, 2> size = {0, 0};
|
||||
bool focus = true;
|
||||
bool shown = false;
|
||||
minimize_event minimized = minimize_event::restored;
|
||||
math::point<int, 2> mouse = {0, 0};
|
||||
int wheel = 0;
|
||||
util::hash_set<mouse_button> mouse_button_down;
|
||||
|
|
@ -26,6 +28,16 @@ namespace psemek::app
|
|||
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)
|
||||
{
|
||||
state.mouse = event.position;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,18 @@ namespace psemek::app
|
|||
bool gained;
|
||||
};
|
||||
|
||||
struct show_event
|
||||
{
|
||||
bool shown;
|
||||
};
|
||||
|
||||
enum class minimize_event
|
||||
{
|
||||
minimized,
|
||||
maximized,
|
||||
restored,
|
||||
};
|
||||
|
||||
struct mouse_move_event
|
||||
{
|
||||
math::point<int, 2> position;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ namespace psemek::app
|
|||
{
|
||||
void on_event(resize_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_wheel_event const &) override;
|
||||
void on_event(mouse_button_event const &) override;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,16 @@ namespace psemek::app
|
|||
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)
|
||||
{
|
||||
apply(state_, event);
|
||||
|
|
|
|||
|
|
@ -13,6 +13,16 @@ namespace psemek::app
|
|||
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)
|
||||
{
|
||||
on_event_impl(event);
|
||||
|
|
|
|||
|
|
@ -168,6 +168,21 @@ namespace psemek::sdl2
|
|||
case SDL_WINDOWEVENT_FOCUS_LOST:
|
||||
handler.on_event(app::focus_event{false});
|
||||
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;
|
||||
case SDL_MOUSEMOTION:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue