From 5b7d36bb7438f32b56d6ebdf043ee291332060f1 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Fri, 28 Aug 2020 18:21:08 -0400 Subject: scroll up to load more messages --- components/chatwindow.hpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'components/chatwindow.hpp') diff --git a/components/chatwindow.hpp b/components/chatwindow.hpp index a758de9..83f5676 100644 --- a/components/chatwindow.hpp +++ b/components/chatwindow.hpp @@ -16,24 +16,31 @@ public: Snowflake GetActiveChannel() const; void SetMessages(std::unordered_set msgs); void AddNewMessage(Snowflake id); + void AddNewHistory(const std::vector &msgs); void ClearMessages(); protected: void ScrollToBottom(); void SetMessagesInternal(); void AddNewMessageInternal(); + void AddNewHistoryInternal(); ChatDisplayType GetMessageDisplayType(const MessageData *data); ChatMessageItem *CreateChatEntryComponentText(const MessageData *data); ChatMessageItem *CreateChatEntryComponent(const MessageData *data); - void ProcessMessage(const MessageData *data); + void ProcessMessage(const MessageData *data, bool prepend = false); int m_num_rows = 0; // youd think thered be a Gtk::ListBox::get_row_count or something but nope + bool m_scroll_to_bottom = true; + bool on_key_press_event(GdkEventKey *e); + void on_scroll_edge_overshot(Gtk::PositionType pos); Glib::Dispatcher m_message_set_dispatch; std::queue> m_message_set_queue; Glib::Dispatcher m_new_message_dispatch; std::queue m_new_message_queue; + Glib::Dispatcher m_new_history_dispatch; + std::queue> m_new_history_queue; std::mutex m_update_mutex; Snowflake m_active_channel; -- cgit v1.2.3