Use single Control approach for chats
In order to improve performance, Gajim should use a single Control object, which can be re-used when switching between chats. At the moment, Gajim uses one Control object per chat, which does not scale performance wise.
Currently, these Control types exist:
- BaseControl
- ChatControl(BaseControl)
- PrivateChatControl(ChatControl)
- GroupchatControl(BaseControl)
Linked issues: #10743 (closed) #10871 (closed) #11007 (closed)
This issue tracks changes which need to be done to implement this approach:
General
-
Refactor GUI to separate elements -
AV widget -
Nickname suggestion generator -
Message input / action bar -
Control banner
-
-
Move group chat pages to ChatFunctionPage -
Fix bug that groupchat roster is open altough not revealed -
Fix read state sync -
Revisit css for Groupchat Roster (Borders, Padding) -
Rework chat command system; keep: status, invite, ban, affiliate, kick, role -
Move spell checking code into MessageInput and simplify -
Type app.window.get_control() -
Fix all TODO comments -
Manage voice requests
Keeping state
-
Info messages, see #10693 (closed) (should be stored at runtime) -
Subject messages, see #10693 (closed) (maybe we can integrate the subject differently, e.g. via chat banner) -
Running file uploads -
Draft support for message input, see #10725 (closed) -
Nickname auto-complete state, see #11155 (closed)
Adapt plugins
-
Acronyms Expander (chat control / message action box) -
Length Notifier (chat control / message action box) -
Message Box Size (chat control / message action box) -
Now Listen (chat control / message action box) -
OMEMO (chat control) -
OpenPGP ( set-encryption
action) -
Quick Replies (chat control / message action box) -
Regex Filter (uses old chat commands interface)see gajim-plugins#606 (closed) -
Triggers (active control/focus)