chatgui: track read position via debounced scroll, only fully visible msgs are read
- Debounce timer (300ms) advances lastReadMsgId only when message is fully in viewport - Unread badge no longer resets on channel select — only when actual scroll reads msgs - saveChannelState() uses tracked m_lastReadMsgId instead of viewport bottom - getChannels() reads lastReadMsgId from ui_state (was reading unused channels column)
This commit is contained in:
1 parent
216e516192
commit
0c4862c66a
4 files changed
+72
-8
No files matched your search
@@ -212,7 +212,6 @@ void MainWindow::setupConnects() {
|
||||
this, [this](const QString& channelId) {
|
||||
QSettings().setValue("last_channel_id", channelId);
|
||||
m_currentChannelId = channelId;
|
||||
m_channelList->setChannelUnreadCount(channelId, 0);
|
||||
m_messageList->loadChannel(channelId);
|
||||
m_accountList->setChannel(channelId);
|
||||
QByteArray cidBA = channelId.toUtf8();
|
||||
@@ -223,6 +222,13 @@ void MainWindow::setupConnects() {
|
||||
connect(m_channelList, &ChannelList::joinRequested, this, &MainWindow::showJoinDialog);
|
||||
connect(m_channelList, &ChannelList::createGroupRequested, this, &MainWindow::onCreateGroupRequested);
|
||||
connect(m_channelList, &ChannelList::settingsRequested, this, &MainWindow::showSettings);
|
||||
connect(m_messageList, &MessageList::readPositionChanged,
|
||||
this, [this](const QString& channelId, qint64 lastReadMsgId) {
|
||||
Q_UNUSED(lastReadMsgId);
|
||||
if (m_channelList && m_db)
|
||||
m_channelList->setChannelUnreadCount(channelId,
|
||||
m_db->getUnreadCount(channelId, lastReadMsgId));
|
||||
});
|
||||
}
|
||||
|
||||
void MainWindow::setupTray() {
|
||||
|
||||
Reference in new issue
Block a user