pins: separate msgs, sort and store

This commit is contained in:
ouwou
2021-06-15 01:01:29 -04:00
parent e166c83d33
commit d527669d39
4 changed files with 12 additions and 1 deletions

View File

@@ -61,7 +61,7 @@ void ChatList::ProcessNewMessage(const Message &data, bool prepend) {
ChatMessageHeader *last_row = nullptr;
bool should_attach = false;
if (m_num_rows > 0) {
if (!m_separate_all && m_num_rows > 0) {
if (prepend)
last_row = dynamic_cast<ChatMessageHeader *>(m_list.get_row_at_index(0));
else
@@ -210,6 +210,10 @@ std::vector<Snowflake> ChatList::GetRecentAuthors() {
return ret;
}
void ChatList::SetSeparateAll(bool separate) {
m_separate_all = true;
}
void ChatList::OnScrollEdgeOvershot(Gtk::PositionType pos) {
if (pos == Gtk::POS_TOP)
m_signal_action_chat_load_history.emit(m_active_channel);

View File

@@ -20,6 +20,7 @@ public:
void UpdateMessageReactions(Snowflake id);
void SetFailedByNonce(const std::string &nonce);
std::vector<Snowflake> GetRecentAuthors();
void SetSeparateAll(bool separate);
private:
void OnScrollEdgeOvershot(Gtk::PositionType pos);
@@ -35,6 +36,8 @@ private:
bool m_should_scroll_to_bottom = true;
Gtk::ListBox m_list;
bool m_separate_all = false;
public:
// these are all forwarded by the parent
using type_signal_action_message_delete = sigc::signal<void, Snowflake, Snowflake>;