Returning a Future doesn't work on Windows for some reason
(https://github.com/thp/pyotherside/issues/116).
Instead of using these objects from QML to cancel running coroutines,
call a Python QMLBridge function that takes a coroutine UUID and will
take care of the cancelling.
thumbnail() and download() were remaining.
Use a direct and carefully chosen MatrixClient's methods instead to
avoid problems mentioned in the previous commit 7502c1.
Making the window narrow enough to switch to "mobile mode", then big
again would trigger a signal in SettingsView that switched focus to it,
even when it wasn't visible.
- Rename ButtonLayout module to just Buttons
- Rename ButtonLayout into AutoDirectionLayout and move it to Base,
it's useful not just for buttons
- Rename OtherButton into GroupButton, which is now the base of all
other Buttons buttons
- Add generic (Positive|Middle|Negative)Button components, which are now
the base for (Apply|Cancel)Button
- Refactor everything about HBox, and adapt all the pages and popups
that used it
- Replace HTabContainer by HTabbedBox
- Make boxes swippable
- Make esc presses in boxes click the cancel button
- Make all boxes and popups scrollable when needed
- Replace generic apply button icons in popups
- Fix tab focus for error and invite popups
- Rework (still WIP) the account settings page:
- Use the standard tabbed design of other pages
- Ditch the horizontal profile layout, hacky and impossible to extend
- Add real-time coloring for the display name field
- Implement a device list in account settings (Sessions, still WIP)