summary refs log tree commit diff
path: root/include
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-05-03 17:29:02 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-05-03 17:29:02 +0300
commit7dab863738eddc29081dd9ebe63f05a8636046b3 (patch)
treed249d86f994bb2e5bc7ec5f803f693b5db2c214e /include
parentDefault to the first item in room selection menu (diff)
downloadnheko-7dab863738eddc29081dd9ebe63f05a8636046b3.tar.xz
Remove flickering by updating auto-complete menu items in-place
Instead of deleting the current items and creating new ones.
Diffstat (limited to 'include')
-rw-r--r--include/SuggestionsPopup.hpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/include/SuggestionsPopup.hpp b/include/SuggestionsPopup.hpp

index ba3aebe5..4a8dd00c 100644 --- a/include/SuggestionsPopup.hpp +++ b/include/SuggestionsPopup.hpp
@@ -53,11 +53,14 @@ class UserItem : public PopupItem public: UserItem(QWidget *parent, const QString &user_id); QString selectedText() const { return userId_; } + void updateItem(const QString &user_id); protected: void mousePressEvent(QMouseEvent *event) override; private: + void resolveAvatar(const QString &user_id); + QLabel *userName_; QString userId_; }; @@ -69,6 +72,7 @@ class RoomItem : public PopupItem public: RoomItem(QWidget *parent, const RoomSearchResult &res); QString selectedText() const { return roomId_; } + void updateItem(const RoomSearchResult &res); protected: void mousePressEvent(QMouseEvent *event) override; @@ -124,12 +128,16 @@ private: void resetSelection() { selectedItem_ = -1; } void selectFirstItem() { selectedItem_ = 0; } void selectLastItem() { selectedItem_ = layout_->count() - 1; } - void removeItems() + void removeLayoutItemsAfter(size_t startingPos) { + size_t posToRemove = layout_->count() - 1; + QLayoutItem *item; - while ((item = layout_->takeAt(0)) != 0) { + while (startingPos <= posToRemove && (item = layout_->takeAt(posToRemove)) != 0) { delete item->widget(); delete item; + + posToRemove = layout_->count() - 1; } }