diff --git a/resources/text/CHANGELOG b/resources/text/CHANGELOG
index 1ad0bd8f0..b602cd783 100644
--- a/resources/text/CHANGELOG
+++ b/resources/text/CHANGELOG
@@ -24,6 +24,7 @@
Fixed:
+ - Solved problem when user selects HUGE number of individual messages and marks them read/unread. Reselecting them after change may cause RSS Guard to hang.
- Better info in popup notification when many feeds are updated.
- Fixed obtaining of contents in RSS 2.0 feed entries. (bug #130)
- Improved popup informing about changes in newly installed version.
diff --git a/src/definitions/definitions.h.in b/src/definitions/definitions.h.in
index 33261bb8f..6cf56098b 100755
--- a/src/definitions/definitions.h.in
+++ b/src/definitions/definitions.h.in
@@ -53,6 +53,7 @@
#define URL_REGEXP "^(http|https|feed|ftp):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?$"
#define USER_AGENT_HTTP_HEADER "User-Agent"
#define TEXT_TITLE_LIMIT 30
+#define RESELECT_MESSAGE_THRESSHOLD 500
#define MAX_ZOOM_FACTOR 10.0
#define ICON_SIZE_SETTINGS 16
#define NO_PARENT_CATEGORY -1
diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp
index ee523bc9a..e6522062c 100755
--- a/src/gui/messagesview.cpp
+++ b/src/gui/messagesview.cpp
@@ -437,14 +437,15 @@ void MessagesView::switchSelectedMessagesImportance() {
}
void MessagesView::reselectIndexes(const QModelIndexList &indexes) {
- QItemSelection selection;
+ if (indexes.size() < RESELECT_MESSAGE_THRESSHOLD) {
+ QItemSelection selection;
- foreach (const QModelIndex &index, indexes) {
- selection.merge(QItemSelection(index, index), QItemSelectionModel::Select);
+ foreach (const QModelIndex &index, indexes) {
+ selection.merge(QItemSelection(index, index), QItemSelectionModel::Select);
+ }
+
+ selectionModel()->select(selection, QItemSelectionModel::Select | QItemSelectionModel::Rows);
}
-
- // FIXME: THIS IS very slow. Try to select 4000 messages and hit "mark as read" button.
- //selectionModel()->select(selection, QItemSelectionModel::Select | QItemSelectionModel::Rows);
}
void MessagesView::selectNextItem() {
diff --git a/src/services/tt-rss/network/ttrssnetworkfactory.cpp b/src/services/tt-rss/network/ttrssnetworkfactory.cpp
index a7bd5aafb..bfc02ab33 100755
--- a/src/services/tt-rss/network/ttrssnetworkfactory.cpp
+++ b/src/services/tt-rss/network/ttrssnetworkfactory.cpp
@@ -121,7 +121,7 @@ TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories(QNetwork
QtJson::JsonObject json;
json["op"] = "getFeedTree";
json["sid"] = m_sessionId;
- json["include_empty"] = true;
+ json["include_empty"] = false;
QByteArray result_raw;
NetworkResult network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, result_raw);
diff --git a/src/services/tt-rss/ttrssrecyclebin.cpp b/src/services/tt-rss/ttrssrecyclebin.cpp
old mode 100644
new mode 100755
index eca3ffb62..80b477a7d
--- a/src/services/tt-rss/ttrssrecyclebin.cpp
+++ b/src/services/tt-rss/ttrssrecyclebin.cpp
@@ -24,12 +24,3 @@ TtRssRecycleBin::TtRssRecycleBin(RootItem *parent) : RecycleBin(parent) {
TtRssRecycleBin::~TtRssRecycleBin() {
}
-
-bool TtRssRecycleBin::empty() {
- return false;
-}
-
-bool TtRssRecycleBin::restore() {
- return false;
-}
-
diff --git a/src/services/tt-rss/ttrssrecyclebin.h b/src/services/tt-rss/ttrssrecyclebin.h
old mode 100644
new mode 100755
index 2bacc2954..b235863aa
--- a/src/services/tt-rss/ttrssrecyclebin.h
+++ b/src/services/tt-rss/ttrssrecyclebin.h
@@ -27,9 +27,6 @@ class TtRssRecycleBin : public RecycleBin {
public:
explicit TtRssRecycleBin(RootItem *parent = 0);
virtual ~TtRssRecycleBin();
-
- bool empty();
- bool restore();
};
#endif // TTRSSRECYCLEBIN_H