By profiling qTox using perf I discovered, that
NotificationIcon::updateGradient takes significant amount of CPU time
even though qTox is idle and no one is typing.
This commit fixes:
1) correctly determine visibility of NotificationIcon
2) only invalidate boundingRect in fixed intervals
3) apply the same fixes to Spinner since it has the same problem
Anthony Bilinski (20):
revert(chatlog): "fix stick to bottom behavior"
revert(chatlog): partially revert "prevent invalid history access"
revert(chatlog): "add comments for functions that load history"
revert(chatlog): "scroll bar stuck to bottom (fix#5755)"
revert(chatlog): "update workerStb"
revert(chatlog): "optimize load messages during the search"
revert(chatlog): "feat: save selected search text after scrolling up"
revert(chatlog): "feat: check chat status before start a search"
revert(chatlog): "fix: data validation during the search"
revert(chatlog): "fix a crash when there are no messages to load"
revert(chatlog): "prohibition to remove messages in group chat"
revert(chatlog): "edit load history when scrolling"
revert(chatlog): "simple edit code"
revert(chatlog): "remove part messages from chat"
revert(chatlog): "edit position chat after load history"
revert(chatlog): "add action "Go to current date""
revert(chatlog): "edit load history in search"
revert(chatlog): "edit function "Load chat history""
revert(chatlog): "load messages from the database after date"
chore(review): Copyright notice cleanup
Mick Sayson (8):
fix(history): Fix qt deprecation warning
revert(chatlog): "feat: load messages from the database before date"
revert(chatlog): Revert cleanup
refactor(chatlog): Move rendering of messages from GenericChatForm -> ChatLog
refactor(chatlog): Store ChatLine::Ptr in messages instead of ChatMessage
feat(chatlog): Re-implement sliding window ChatLog view
refactor(chatlog): Remove unused getRow functions from ChatLine
refactor(chatlog): Rename ChatLog -> ChatWidget
* Replace lines/messages with helper class to synchronize state between
IChatLog and ChatLog more easily
* selection indexes have been replaced with ChatLine::Ptrs, this is to
ensure consistency while the view slides around
* This has another benefit of removing all the code that has to
manually slide the selection boxes around
* Replaced all insertion/removal functions with single "insertAtIdx".
This helps ensure that mappings between ChatLogIdx and position within
the view are captured correctly as items in the view slide around
* workerTimeout replaced with more generic name "renderFinished" that is
used in synchronous and asynchronous paths
* Removed unused function ChatForm::insertChatMessage
* Re-implemented "Go to current date" with new ChatLog APIs
* Removed unused GenericChatForm::addSystemDateMessage. This is handled
by ChatLog now
* Resolves#6223
* Resolves#5878
* Resolves#5940
* Simplifies reasoning about who owns what functionality between
GenericChatForm and ChatLog. GenericChatForm is now just a layout
class and ChatLog handles all interactions with retrieving and
displaying messages from the model
* Reasoning for work is described in more detail in #6223