fixed dialogs preloading on scroll

This commit is contained in:
John Preston 2014-10-08 11:42:36 +04:00
parent d874609816
commit e0910bfb3e
3 changed files with 8 additions and 6 deletions

View File

@ -82,6 +82,8 @@ enum {
MediaViewImageSizeLimit = 10 * 1024 * 1024, // show up to 10mb jpg/png docs in mediaview
MaxZoomLevel = 7, // x8
PreloadHeightsCount = 3, // when 3 screens to scroll left make a preload request
};
#ifdef Q_OS_WIN

View File

@ -1283,10 +1283,10 @@ void DialogsWidget::onListScroll() {
list.loadPeerPhotos(scroll.scrollTop());
if (list.state() == DialogsListWidget::SearchedState) {
DialogsListWidget::SearchResults &res(list.searchList());
if (scroll.scrollTop() > res.size() * st::dlgHeight - 2 * scroll.height()) {
if (scroll.scrollTop() > res.size() * st::dlgHeight - PreloadHeightsCount * scroll.height()) {
onSearchMore(list.lastSearchId());
}
} else if (scroll.scrollTop() > list.dialogsList().list.count * st::dlgHeight - scroll.height()) {
} else if (scroll.scrollTop() > list.dialogsList().list.count * st::dlgHeight - PreloadHeightsCount * scroll.height()) {
loadDialogs();
}
}

View File

@ -2094,7 +2094,7 @@ void HistoryWidget::loadMessages() {
return;
}
}
if (!histPreloading && (!hist->readyForWork() || _scroll.scrollTop() < 3 * _scroll.height())) {
if (!histPreloading && (!hist->readyForWork() || _scroll.scrollTop() < PreloadHeightsCount * _scroll.height())) {
MsgId min = hist->minMsgId();
int32 offset = 0, loadCount = min ? MessagesPerPage : MessagesFirstLoad;
if (!min && hist->activeMsgId) {
@ -2125,7 +2125,7 @@ void HistoryWidget::loadMessagesDown() {
return;
}
}
if (!histPreloadingDown && hist->readyForWork() && (_scroll.scrollTop() + 3 * _scroll.height() > _scroll.scrollTopMax())) {
if (!histPreloadingDown && hist->readyForWork() && (_scroll.scrollTop() + PreloadHeightsCount * _scroll.height() > _scroll.scrollTopMax())) {
MsgId max = hist->maxMsgId();
if (max) {
int32 loadCount = MessagesPerPage, offset = -loadCount;
@ -2156,11 +2156,11 @@ void HistoryWidget::onListScroll() {
return;
}
if (hist->readyForWork() && (_scroll.scrollTop() + 3 * _scroll.height() > _scroll.scrollTopMax())) {
if (hist->readyForWork() && (_scroll.scrollTop() + PreloadHeightsCount * _scroll.height() > _scroll.scrollTopMax())) {
loadMessagesDown();
}
if (!hist->readyForWork() || _scroll.scrollTop() < 3 * _scroll.height()) {
if (!hist->readyForWork() || _scroll.scrollTop() < PreloadHeightsCount * _scroll.height()) {
loadMessages();
} else {
checkUnreadLoaded(true);