This singleton class handles all events. More...
Public Member Functions | |
thandler () | |
~thandler () | |
void | handle_event (const SDL_Event &event) |
Inherited from events::sdl_handler. More... | |
void | handle_window_event (const SDL_Event &event) |
Inherited from events::sdl_handler. More... | |
void | connect (tdispatcher *dispatcher) |
Connects a dispatcher. More... | |
void | disconnect (tdispatcher *dispatcher) |
Disconnects a dispatcher. More... | |
Public Member Functions inherited from events::sdl_handler | |
virtual void | process_event () |
virtual void | draw () |
virtual void | volatile_draw () |
virtual void | volatile_undraw () |
virtual bool | requires_event_focus (const SDL_Event *=nullptr) const |
virtual void | process_help_string (int, int) |
virtual void | process_tooltip_string (int, int) |
virtual void | join () |
virtual void | join (context &c) |
virtual void | join_same (sdl_handler *parent) |
virtual void | leave () |
virtual void | join_global () |
virtual void | leave_global () |
Public Attributes | |
tdispatcher * | mouse_focus |
The dispatcher that captured the mouse focus. More... | |
Private Member Functions | |
void | activate () |
Reinitializes the state of all dispatchers. More... | |
void | draw (const bool force) |
void | video_resize (const tpoint &new_size) |
Fires a video resize event. More... | |
void | mouse (const tevent event, const tpoint &position) |
Fires a generic mouse event. More... | |
void | mouse_button_up (const tpoint &position, const Uint8 button) |
Fires a mouse button up event. More... | |
void | mouse_button_down (const tpoint &position, const Uint8 button) |
Fires a mouse button down event. More... | |
void | mouse_wheel (const tpoint &position, int scrollx, int scrolly) |
Fires a mouse wheel event. More... | |
tdispatcher * | keyboard_dispatcher () |
Gets the dispatcher that wants to receive the keyboard input. More... | |
void | hat_motion (const SDL_Event &event) |
Handles a hat motion event. More... | |
void | button_down (const SDL_Event &event) |
Handles a joystick button down event. More... | |
void | key_down (const SDL_Event &event) |
Fires a key down event. More... | |
bool | hotkey_pressed (const hotkey::hotkey_ptr key) |
Handles the pressing of a hotkey. More... | |
void | key_down (const SDLKey key, const SDLMod modifier, const utf8::string &unicode) |
Fires a key down event. More... | |
void | text_input (const std::string &unicode) |
Fires a text input event. More... | |
void | keyboard (const tevent event) |
Fires a keyboard event which has no parameters. More... | |
Private Attributes | |
std::vector< tdispatcher * > | dispatchers_ |
The dispatchers. More... | |
tdispatcher * | keyboard_focus_ |
Needed to determine which dispatcher gets the keyboard events. More... | |
Friends | |
bool | gui2::is_in_dialog () |
void | capture_keyboard (tdispatcher *) |
Captures the keyboard. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from events::sdl_handler | |
sdl_handler (const bool auto_join=true) | |
virtual | ~sdl_handler () |
virtual std::vector < sdl_handler * > | handler_members () |
This singleton class handles all events.
It's a new experimental class.
Definition at line 123 of file handler.cpp.
gui2::event::thandler::thandler | ( | ) |
Definition at line 297 of file handler.cpp.
References events::sdl_handler::join().
gui2::event::thandler::~thandler | ( | ) |
Definition at line 315 of file handler.cpp.
References events::sdl_handler::leave().
|
private |
Reinitializes the state of all dispatchers.
This is needed when the application gets activated, to make sure the state of mainly the mouse is set properly.
Definition at line 490 of file handler.cpp.
References dispatchers_, and gui2::event::SDL_ACTIVATE.
Referenced by disconnect(), and handle_event().
|
private |
Handles a joystick button down event.
event | The SDL joystick button event triggered. |
Definition at line 679 of file handler.cpp.
References hotkey::get_hotkey(), and hotkey_pressed().
Referenced by handle_event().
void gui2::event::thandler::connect | ( | tdispatcher * | dispatcher | ) |
Connects a dispatcher.
dispatcher | The dispatcher to connect. |
Definition at line 441 of file handler.cpp.
References dispatchers_, gui2::event::event_context, gui2::event::find(), and events::sdl_handler::join().
Referenced by gui2::event::connect_dispatcher().
void gui2::event::thandler::disconnect | ( | tdispatcher * | dispatcher | ) |
Disconnects a dispatcher.
dispatcher | The dispatcher to disconnect. |
Definition at line 454 of file handler.cpp.
References activate(), dispatchers_, gui2::event::event_context, gui2::event::find(), itor, keyboard_focus_, events::sdl_handler::leave(), mouse_focus, and gui2::twidget::set_is_dirty().
Referenced by gui2::event::disconnect_dispatcher().
|
private |
For now we use a hack, but would be nice to rewrite it for 1.9/1.11.
Definition at line 499 of file handler.cpp.
References dispatchers_, gui2::event::DRAW, CVideo::flip(), and gui2::twidget::set_is_dirty().
|
virtual |
Inherited from events::sdl_handler.
No dispatchers drop the event.
Implements events::sdl_handler.
Definition at line 322 of file handler.cpp.
References activate(), gui2::twindow::AUTO_CLOSE, button_down(), gui2::event::CLOSE_WINDOW, CLOSE_WINDOW_EVENT, DBG_GUI_E, dispatchers_, DOUBLE_CLICK_EVENT, events::sdl_handler::draw(), DRAW_ALL_EVENT, DRAW_EVENT, gui2::execute_timer(), gui2::get_mouse_position(), hat_motion(), HOVER_REMOVE_POPUP_EVENT, key_down(), mouse(), mouse_button_down(), mouse_button_up(), mouse_wheel(), gui2::event::SDL_MOUSE_MOTION, gui2::twindow::set_retval(), gui2::event::SHOW_HELPTIP, SHOW_HELPTIP_EVENT, text_input(), TIMER_EVENT, video_resize(), gui2::twindow::window_instance(), WRN_GUI_E, and gui2::tpoint::x.
Referenced by handle_window_event().
|
virtual |
Inherited from events::sdl_handler.
Implements events::sdl_handler.
Definition at line 436 of file handler.cpp.
References handle_event().
|
private |
Handles a hat motion event.
event | The SDL joystick hat event triggered. |
Definition at line 666 of file handler.cpp.
References hotkey::get_hotkey(), and hotkey_pressed().
Referenced by handle_event().
|
private |
Handles the pressing of a hotkey.
key | The hotkey item pressed. |
Definition at line 711 of file handler.cpp.
References gui2::event::tdispatcher::execute_hotkey(), hotkey::get_id(), and keyboard_dispatcher().
Referenced by button_down(), hat_motion(), and key_down().
|
private |
Fires a key down event.
event | The SDL keyboard event triggered. |
Definition at line 692 of file handler.cpp.
References hotkey::get_hotkey(), and hotkey_pressed().
Referenced by handle_event(), and text_input().
|
private |
Fires a key down event.
key | The SDL key code of the key pressed. |
modifier | The SDL key modifiers used. |
unicode | The unicode value for the key pressed. |
Definition at line 722 of file handler.cpp.
References DBG_GUI_E, keyboard_dispatcher(), and gui2::event::SDL_KEY_DOWN.
Fires a keyboard event which has no parameters.
This can happen for example when the mouse wheel is used.
event | The event to fire. |
Definition at line 737 of file handler.cpp.
References DBG_GUI_E, and keyboard_dispatcher().
|
private |
Gets the dispatcher that wants to receive the keyboard input.
nullptr | No dispatcher found. |
Definition at line 647 of file handler.cpp.
References dispatchers_, and keyboard_focus_.
Referenced by hotkey_pressed(), key_down(), and keyboard().
Fires a generic mouse event.
event | The event to fire. |
position | The position of the mouse. |
Definition at line 552 of file handler.cpp.
References gui2::event::tdispatcher::all, DBG_GUI_E, dispatchers_, gui2::event::tdispatcher::fire(), mouse_focus, and gui2::event::tdispatcher::none.
Referenced by handle_event(), mouse_button_down(), mouse_button_up(), and mouse_wheel().
|
private |
Fires a mouse button down event.
position | The position of the mouse. |
button | The SDL id of the button that caused the event. |
Definition at line 604 of file handler.cpp.
References mouse(), SDL_BUTTON_WHEELDOWN, SDL_BUTTON_WHEELLEFT, SDL_BUTTON_WHEELRIGHT, SDL_BUTTON_WHEELUP, gui2::event::SDL_LEFT_BUTTON_DOWN, gui2::event::SDL_MIDDLE_BUTTON_DOWN, gui2::event::SDL_RIGHT_BUTTON_DOWN, and WRN_GUI_E.
Referenced by handle_event().
Fires a mouse button up event.
position | The position of the mouse. |
button | The SDL id of the button that caused the event. |
Definition at line 583 of file handler.cpp.
References mouse(), gui2::event::SDL_LEFT_BUTTON_UP, gui2::event::SDL_MIDDLE_BUTTON_UP, gui2::event::SDL_RIGHT_BUTTON_UP, and WRN_GUI_E.
Referenced by handle_event().
|
private |
Fires a mouse wheel event.
position | The position of the mouse. |
scrollx | The amount of horizontal scrolling. |
scrolly | The amount of vertical scrolling. |
Definition at line 632 of file handler.cpp.
References mouse(), gui2::event::SDL_WHEEL_DOWN, gui2::event::SDL_WHEEL_LEFT, gui2::event::SDL_WHEEL_RIGHT, and gui2::event::SDL_WHEEL_UP.
Referenced by handle_event().
|
private |
Fires a text input event.
unicode | The unicode value for the text entered. |
Definition at line 706 of file handler.cpp.
References key_down().
Referenced by handle_event().
Fires a video resize event.
new_size | The new size of the window. |
Definition at line 540 of file handler.cpp.
References DBG_GUI_E, dispatchers_, and gui2::event::SDL_VIDEO_RESIZE.
Referenced by handle_event().
|
friend |
Captures the keyboard.
A dispatcher can capture the keyboard, when for example it's pressed on a button, this means all keyboard events after that are send to that widget.
dispatcher | The dispatcher which should get the keyboard focus. |
Definition at line 817 of file handler.cpp.
|
friend |
|
private |
The dispatchers.
The order of the items in the list is also the z-order the front item being the one completely in the background and the back item the one completely in the foreground.
Definition at line 286 of file handler.cpp.
Referenced by activate(), connect(), disconnect(), draw(), handle_event(), gui2::is_in_dialog(), keyboard_dispatcher(), mouse(), and video_resize().
|
private |
Needed to determine which dispatcher gets the keyboard events.
NOTE the keyboard events aren't really wired in yet so doesn't do much.
Definition at line 293 of file handler.cpp.
Referenced by gui2::event::capture_keyboard(), disconnect(), and keyboard_dispatcher().
tdispatcher* gui2::event::thandler::mouse_focus |
The dispatcher that captured the mouse focus.
Definition at line 153 of file handler.cpp.
Referenced by gui2::event::capture_mouse(), disconnect(), mouse(), and gui2::event::release_mouse().