allow multiple components to display shared user menu

This commit is contained in:
ouwou
2020-11-08 00:44:26 -05:00
parent 0c442a423e
commit f124626a6d
12 changed files with 143 additions and 105 deletions

View File

@@ -28,21 +28,9 @@ public:
void SetActiveChannel(Snowflake id);
private:
void on_copy_id_activate();
void on_insert_mention_activate();
void on_kick_activate();
void on_ban_activate();
void UpdateMemberListInternal();
void AttachUserMenuHandler(Gtk::ListBoxRow *row, Snowflake id);
Gtk::Menu m_menu;
Gtk::MenuItem *m_menu_copy_id;
Gtk::MenuItem *m_menu_insert_mention;
Gtk::MenuItem *m_menu_kick;
Gtk::MenuItem *m_menu_ban;
Gtk::ListBoxRow *m_row_menu_target = nullptr; // maybe hacky
std::mutex m_mutex;
Glib::Dispatcher m_update_member_list_dispatcher;
@@ -55,16 +43,10 @@ private:
std::unordered_map<Snowflake, Gtk::ListBoxRow *> m_id_to_row;
public:
typedef sigc::signal<void, Snowflake> type_signal_action_insert_mention;
typedef sigc::signal<void, Snowflake, Snowflake> type_signal_action_kick; // user_id, guild_id
typedef sigc::signal<void, Snowflake, Snowflake> type_signal_action_ban; // ^
typedef sigc::signal<void, const GdkEvent *, Snowflake, Snowflake> type_signal_action_show_user_menu;
type_signal_action_insert_mention signal_action_insert_mention();
type_signal_action_kick signal_action_kick();
type_signal_action_ban signal_action_ban();
type_signal_action_show_user_menu signal_action_show_user_menu();
private:
type_signal_action_insert_mention m_signal_action_insert_mention;
type_signal_action_kick m_signal_action_kick;
type_signal_action_ban m_signal_action_ban;
type_signal_action_show_user_menu m_signal_action_show_user_menu;
};