GUI2/Dispatcher: simplify signal type alias names

This commit is contained in:
Charles Dang 2022-04-12 16:43:26 -04:00
parent 9cec01b680
commit e8e1572442
10 changed files with 66 additions and 66 deletions

View File

@ -72,25 +72,25 @@ bool dispatcher::fire(const ui_event event, widget& target)
switch(event) {
case LEFT_BUTTON_DOUBLE_CLICK:
return fire_event_double_click<LEFT_BUTTON_CLICK, LEFT_BUTTON_DOUBLE_CLICK,
&event_executor::wants_mouse_left_double_click, signal_function>(this, &target);
&event_executor::wants_mouse_left_double_click, signal>(this, &target);
case MIDDLE_BUTTON_DOUBLE_CLICK:
return fire_event_double_click<MIDDLE_BUTTON_CLICK, MIDDLE_BUTTON_DOUBLE_CLICK,
&event_executor::wants_mouse_middle_double_click, signal_function>(this, &target);
&event_executor::wants_mouse_middle_double_click, signal>(this, &target);
case RIGHT_BUTTON_DOUBLE_CLICK:
return fire_event_double_click<RIGHT_BUTTON_CLICK, RIGHT_BUTTON_DOUBLE_CLICK,
&event_executor::wants_mouse_right_double_click, signal_function>(this, &target);
&event_executor::wants_mouse_right_double_click, signal>(this, &target);
default:
return fire_event<signal_function>(event, this, &target);
return fire_event<signal>(event, this, &target);
}
}
bool dispatcher::fire(const ui_event event, widget& target, const point& coordinate)
{
assert(is_in_category(event, event_category::mouse));
return fire_event<signal_mouse_function>(event, this, &target, coordinate);
return fire_event<signal_mouse>(event, this, &target, coordinate);
}
bool dispatcher::fire(const ui_event event,
@ -100,43 +100,43 @@ bool dispatcher::fire(const ui_event event,
const std::string& unicode)
{
assert(is_in_category(event, event_category::keyboard));
return fire_event<signal_keyboard_function>(event, this, &target, key, modifier, unicode);
return fire_event<signal_keyboard>(event, this, &target, key, modifier, unicode);
}
bool dispatcher::fire(const ui_event event, widget& target, const point& pos, const point& distance)
{
assert(is_in_category(event, event_category::touch_motion));
return fire_event<signal_touch_motion_function>(event, this, &target, pos, distance);
return fire_event<signal_touch_motion>(event, this, &target, pos, distance);
}
bool dispatcher::fire(const ui_event event, widget& target, const point& center, float dTheta, float dDist, uint8_t numFingers)
{
assert(is_in_category(event, event_category::touch_gesture));
return fire_event<signal_touch_gesture_function>(event, this, &target, center, dTheta, dDist, numFingers);
return fire_event<signal_touch_gesture>(event, this, &target, center, dTheta, dDist, numFingers);
}
bool dispatcher::fire(const ui_event event, widget& target, const SDL_Event& sdlevent)
{
assert(is_in_category(event, event_category::raw_event));
return fire_event<signal_raw_event_function>(event, this, &target, sdlevent);
return fire_event<signal_raw_event>(event, this, &target, sdlevent);
}
bool dispatcher::fire(const ui_event event, widget& target, const std::string& text, int32_t start, int32_t len)
{
assert(is_in_category(event, event_category::text_input));
return fire_event<signal_text_input_function>(event, this, &target, text, start, len);
return fire_event<signal_text_input>(event, this, &target, text, start, len);
}
bool dispatcher::fire(const ui_event event, widget& target, void*)
{
assert(is_in_category(event, event_category::notification));
return fire_event<signal_notification_function>(event, this, &target, nullptr);
return fire_event<signal_notification>(event, this, &target, nullptr);
}
bool dispatcher::fire(const ui_event event, widget& target, const message& msg)
{
assert(is_in_category(event, event_category::message));
return fire_event<signal_message_function>(event, this, &target, msg);
return fire_event<signal_message>(event, this, &target, msg);
}
void dispatcher::register_hotkey(const hotkey::HOTKEY_COMMAND id, const hotkey_function& function)
@ -164,32 +164,32 @@ bool dispatcher::execute_hotkey(const hotkey::HOTKEY_COMMAND id)
return true;
}
void connect_signal_pre_key_press(dispatcher& dispatcher, const signal_keyboard_function& signal)
void connect_signal_pre_key_press(dispatcher& dispatcher, const signal_keyboard& signal)
{
dispatcher.connect_signal<SDL_KEY_DOWN>(signal, dispatcher::front_child);
}
void connect_signal_mouse_left_click(dispatcher& dispatcher, const signal_function& signal)
void connect_signal_mouse_left_click(dispatcher& dispatcher, const signal& signal)
{
dispatcher.connect_signal<LEFT_BUTTON_CLICK>(signal);
}
void disconnect_signal_mouse_left_click(dispatcher& dispatcher, const signal_function& signal)
void disconnect_signal_mouse_left_click(dispatcher& dispatcher, const signal& signal)
{
dispatcher.disconnect_signal<LEFT_BUTTON_CLICK>(signal);
}
void connect_signal_mouse_left_double_click(dispatcher& dispatcher, const signal_function& signal)
void connect_signal_mouse_left_double_click(dispatcher& dispatcher, const signal& signal)
{
dispatcher.connect_signal<LEFT_BUTTON_DOUBLE_CLICK>(signal, dispatcher::back_post_child);
}
void connect_signal_notify_modified(dispatcher& dispatcher, const signal_notification_function& signal)
void connect_signal_notify_modified(dispatcher& dispatcher, const signal_notification& signal)
{
dispatcher.connect_signal<NOTIFY_MODIFIED>(signal);
}
void connect_signal_on_draw(dispatcher& dispatcher, const signal_function& signal)
void connect_signal_on_draw(dispatcher& dispatcher, const signal& signal)
{
// TODO: evaluate whether draw events need go in this queue position.
dispatcher.connect_signal<DRAW>(signal, dispatcher::front_child);

View File

@ -50,14 +50,14 @@ struct message;
* 4. Reference to the flag controlling whether to halt execution of this event.
*/
template<typename... T>
using dispatcher_callback_func = std::function<void(widget&, const ui_event, bool&, bool&, T...)>;
using dispatcher_callback = std::function<void(widget&, const ui_event, bool&, bool&, T...)>;
/**
* Callback function signature.
*
* This is used for events in event_category::general.
*/
using signal_function = dispatcher_callback_func<>;
using signal = dispatcher_callback<>;
/**
* Callback function signature.
@ -67,7 +67,7 @@ using signal_function = dispatcher_callback_func<>;
* Extra parameters:
* 5. The x,y coordinate of the mouse when this event is fired.
*/
using signal_mouse_function = dispatcher_callback_func<const point&>;
using signal_mouse = dispatcher_callback<const point&>;
/**
* Callback function signature.
@ -79,7 +79,7 @@ using signal_mouse_function = dispatcher_callback_func<const point&>;
* 6. Any applicable active modifer key.
* 7. Any applicable text associated with the key.
*/
using signal_keyboard_function = dispatcher_callback_func<const SDL_Keycode, const SDL_Keymod, const std::string&>;
using signal_keyboard = dispatcher_callback<const SDL_Keycode, const SDL_Keymod, const std::string&>;
/**
* Callback function signature.
@ -90,7 +90,7 @@ using signal_keyboard_function = dispatcher_callback_func<const SDL_Keycode, con
* 5. Origin of the touch event, in x,y format.
* 6. Number of pixels dragged, in x,y format.
*/
using signal_touch_motion_function = dispatcher_callback_func<const point&, const point&>;
using signal_touch_motion = dispatcher_callback<const point&, const point&>;
/**
* Callback function signature.
@ -103,7 +103,7 @@ using signal_touch_motion_function = dispatcher_callback_func<const point&, cons
* 7. dDist
* 8. numFingers
*/
using signal_touch_gesture_function = dispatcher_callback_func<const point&, float, float, uint8_t>;
using signal_touch_gesture = dispatcher_callback<const point&, float, float, uint8_t>;
/**
* Callback function signature.
@ -112,9 +112,9 @@ using signal_touch_gesture_function = dispatcher_callback_func<const point&, flo
*
* Extra parameters:
* 5. A dummy void* parameter which will always be nullptr, used to differentiate
* this function from signal_function.
* this function from signal.
*/
using signal_notification_function = dispatcher_callback_func<void*>;
using signal_notification = dispatcher_callback<void*>;
/**
* Callback function signature.
@ -124,7 +124,7 @@ using signal_notification_function = dispatcher_callback_func<void*>;
* Extra parameters:
* 5. The applicable data this event requires.
*/
using signal_message_function = dispatcher_callback_func<const message&>;
using signal_message = dispatcher_callback<const message&>;
/**
* Raw event callback function signature.
@ -134,7 +134,7 @@ using signal_message_function = dispatcher_callback_func<const message&>;
* Extra parameters:
* 5. The raw SDL_Event.
*/
using signal_raw_event_function = dispatcher_callback_func<const SDL_Event&>;
using signal_raw_event = dispatcher_callback<const SDL_Event&>;
/**
* Callback function signature.
@ -146,7 +146,7 @@ using signal_raw_event_function = dispatcher_callback_func<const SDL_Event&>;
* 6. The current input position.
* 7. The current text selection length.
*/
using signal_text_input_function = dispatcher_callback_func<const std::string&, int32_t, int32_t>;
using signal_text_input = dispatcher_callback<const std::string&, int32_t, int32_t>;
/** Hotkey function handler signature. */
using hotkey_function = std::function<void(widget& dispatcher, hotkey::HOTKEY_COMMAND id)>;
@ -595,31 +595,31 @@ private:
bool want_keyboard_input_;
/** Signal queue for callbacks in set_event. */
signal_queue<signal_function> signal_queue_;
signal_queue<signal> signal_queue_;
/** Signal queue for callbacks in set_event_mouse. */
signal_queue<signal_mouse_function> signal_mouse_queue_;
signal_queue<signal_mouse> signal_mouse_queue_;
/** Signal queue for callbacks in set_event_keyboard. */
signal_queue<signal_keyboard_function> signal_keyboard_queue_;
signal_queue<signal_keyboard> signal_keyboard_queue_;
/** Signal queue for callbacks in set_event_touch. */
signal_queue<signal_touch_motion_function> signal_touch_motion_queue_;
signal_queue<signal_touch_motion> signal_touch_motion_queue_;
/** Signal queue for callbacks in set_event_touch. */
signal_queue<signal_touch_gesture_function> signal_touch_gesture_queue_;
signal_queue<signal_touch_gesture> signal_touch_gesture_queue_;
/** Signal queue for callbacks in set_event_notification. */
signal_queue<signal_notification_function> signal_notification_queue_;
signal_queue<signal_notification> signal_notification_queue_;
/** Signal queue for callbacks in set_event_message. */
signal_queue<signal_message_function> signal_message_queue_;
signal_queue<signal_message> signal_message_queue_;
/** Signal queue for callbacks in set_raw_event. */
signal_queue<signal_raw_event_function> signal_raw_event_queue_;
signal_queue<signal_raw_event> signal_raw_event_queue_;
/** Signal queue for callbacks in set_event_text_input. */
signal_queue<signal_text_input_function> signal_text_input_queue_;
signal_queue<signal_text_input> signal_text_input_queue_;
/** Are we connected to the event handler. */
bool connected_;
@ -667,13 +667,13 @@ private:
* This callback is called before the widget itself allowing you to either
* snoop on the input or filter it.
*/
void connect_signal_pre_key_press(dispatcher& dispatcher, const signal_keyboard_function& signal);
void connect_signal_pre_key_press(dispatcher& dispatcher, const signal_keyboard& signal);
/** Connects a signal handler for a left mouse button click. */
void connect_signal_mouse_left_click(dispatcher& dispatcher, const signal_function& signal);
void connect_signal_mouse_left_click(dispatcher& dispatcher, const signal& signal);
/** Disconnects a signal handler for a left mouse button click. */
void disconnect_signal_mouse_left_click(dispatcher& dispatcher, const signal_function& signal);
void disconnect_signal_mouse_left_click(dispatcher& dispatcher, const signal& signal);
/**
* Connects a signal handler for a left mouse button double click.
@ -684,13 +684,13 @@ void disconnect_signal_mouse_left_click(dispatcher& dispatcher, const signal_fun
*
* - vultraz, 2017-08-23
*/
void connect_signal_mouse_left_double_click(dispatcher& dispatcher, const signal_function& signal);
void connect_signal_mouse_left_double_click(dispatcher& dispatcher, const signal& signal);
/** Connects a signal handler for getting a notification upon modification. */
void connect_signal_notify_modified(dispatcher& dispatcher, const signal_notification_function& signal);
void connect_signal_notify_modified(dispatcher& dispatcher, const signal_notification& signal);
/** Connects a signal handler for a callback when the widget is drawn. */
void connect_signal_on_draw(dispatcher& dispatcher, const signal_function& signal);
void connect_signal_on_draw(dispatcher& dispatcher, const signal& signal);
} // namespace event

View File

@ -29,14 +29,14 @@ namespace gui2::event
struct dispatcher_implementation
{
#define FUNCTION_QUEUE_CHECK(TYPE) \
else if constexpr(std::is_same_v<F, signal_##TYPE##_function>) { \
else if constexpr(std::is_same_v<F, signal_##TYPE##>) { \
return dispatcher.signal_##TYPE##_queue_.queue[event]; \
}
/**
* Returns the appropriate signal queue for an event by function signature.
*
* @tparam F For example, signal_function.
* @tparam F For example, signal.
* @param dispatcher The dispatcher whose signal queue is used.
* @param event The event to get the signal for.
*
@ -45,7 +45,7 @@ struct dispatcher_implementation
template<typename F>
static auto& event_signal(dispatcher& dispatcher, const ui_event event)
{
if constexpr(std::is_same_v<F, signal_function>) {
if constexpr(std::is_same_v<F, signal>) {
return dispatcher.signal_queue_.queue[event];
}
@ -181,7 +181,7 @@ build_event_chain(const ui_event event, widget* dispatcher, widget* w)
}
/**
* Build the event chain for signal_notification_function.
* Build the event chain for signal_notification.
*
* The notification is only send to the receiver it returns an empty chain.
* Since the pre and post queues are unused, it validates whether they are
@ -191,7 +191,7 @@ build_event_chain(const ui_event event, widget* dispatcher, widget* w)
*/
template<>
std::vector<std::pair<widget*, ui_event>>
build_event_chain<signal_notification_function>(const ui_event event, widget* dispatcher, widget* w)
build_event_chain<signal_notification>(const ui_event event, widget* dispatcher, widget* w)
{
assert(dispatcher);
assert(w);
@ -202,7 +202,7 @@ build_event_chain<signal_notification_function>(const ui_event event, widget* di
}
/**
* Build the event chain for signal_message_function.
* Build the event chain for signal_message.
*
* This function expects that the widget sending it is also the receiver. This
* assumption might change, but is valid for now. The function doesn't build an
@ -220,7 +220,7 @@ build_event_chain<signal_notification_function>(const ui_event event, widget* di
*/
template<>
std::vector<std::pair<widget*, ui_event>>
build_event_chain<signal_message_function>(const ui_event event, widget* dispatcher, widget* w)
build_event_chain<signal_message>(const ui_event event, widget* dispatcher, widget* w)
{
assert(dispatcher);
assert(w);

View File

@ -770,17 +770,17 @@ void distributor::signal_handler_keyboard_internal(event::ui_event evt, P1&& p1,
void distributor::signal_handler_sdl_key_down(const SDL_Keycode key, const SDL_Keymod modifier, const std::string& unicode)
{
signal_handler_keyboard_internal<signal_keyboard_function>(event::SDL_KEY_DOWN, key, modifier, unicode);
signal_handler_keyboard_internal<signal_keyboard>(event::SDL_KEY_DOWN, key, modifier, unicode);
}
void distributor::signal_handler_sdl_text_input(const std::string& unicode, int32_t start, int32_t end)
{
signal_handler_keyboard_internal<signal_text_input_function>(event::SDL_TEXT_INPUT, unicode, start, end);
signal_handler_keyboard_internal<signal_text_input>(event::SDL_TEXT_INPUT, unicode, start, end);
}
void distributor::signal_handler_sdl_text_editing(const std::string& unicode, int32_t start, int32_t end)
{
signal_handler_keyboard_internal<signal_text_input_function>(event::SDL_TEXT_EDITING, unicode, start, end);
signal_handler_keyboard_internal<signal_text_input>(event::SDL_TEXT_EDITING, unicode, start, end);
}
void distributor::signal_handler_notify_removal(dispatcher& w, const ui_event event)

View File

@ -16,7 +16,7 @@
* @file
* This file contains the definitions for the @ref gui2::event::message class.
*
* The class is used in the @ref gui2::event::signal_message_function
* The class is used in the @ref gui2::event::signal_message
*/
#pragma once

View File

@ -89,7 +89,7 @@ private:
styled_widget* clock_;
/** The signal patched in the drawing routine. */
event::signal_function signal_;
event::signal signal_;
/** Helper struct to keep track of the time. */
struct time

View File

@ -50,13 +50,13 @@ public:
virtual unsigned get_state() const override;
/** Inherited from clickable_item. */
virtual void connect_click_handler(const event::signal_function& signal) override
virtual void connect_click_handler(const event::signal& signal) override
{
connect_signal_mouse_left_click(*this, signal);
}
/** Inherited from clickable_item. */
virtual void disconnect_click_handler(const event::signal_function& signal) override
virtual void disconnect_click_handler(const event::signal& signal) override
{
disconnect_signal_mouse_left_click(*this, signal);
}

View File

@ -50,7 +50,7 @@ public:
*
* @param signal The signal to connect.
*/
virtual void connect_click_handler(const event::signal_function& signal)
virtual void connect_click_handler(const event::signal& signal)
= 0;
/**
@ -61,7 +61,7 @@ public:
* @param signal The signal to disconnect (should be the same
* as send to the connect call.
*/
virtual void disconnect_click_handler(const event::signal_function& signal)
virtual void disconnect_click_handler(const event::signal& signal)
= 0;
};

View File

@ -61,13 +61,13 @@ repeating_button::~repeating_button()
}
void repeating_button::connect_signal_mouse_left_down(
const event::signal_function& signal)
const event::signal& signal)
{
connect_signal<event::LEFT_BUTTON_DOWN>(signal);
}
void repeating_button::disconnect_signal_mouse_left_down(
const event::signal_function& signal)
const event::signal& signal)
{
disconnect_signal<event::LEFT_BUTTON_DOWN>(signal);
}

View File

@ -56,7 +56,7 @@ public:
*
* @param signal The signal to connect.
*/
void connect_signal_mouse_left_down(const event::signal_function& signal);
void connect_signal_mouse_left_down(const event::signal& signal);
/**
* Disconnects a signal handler for a left mouse button down.
@ -65,7 +65,7 @@ public:
* as send to the connect call.
*/
void
disconnect_signal_mouse_left_down(const event::signal_function& signal);
disconnect_signal_mouse_left_down(const event::signal& signal);
/***** ***** ***** ***** Inherited ***** ***** ***** *****/
@ -79,13 +79,13 @@ public:
virtual unsigned get_state() const override;
/** Inherited from clickable_item. */
virtual void connect_click_handler(const event::signal_function& signal) override
virtual void connect_click_handler(const event::signal& signal) override
{
connect_signal_mouse_left_down(signal);
}
/** Inherited from clickable_item. */
virtual void disconnect_click_handler(const event::signal_function& signal) override
virtual void disconnect_click_handler(const event::signal& signal) override
{
disconnect_signal_mouse_left_down(signal);
}