Commit Graph

805 Commits

Author SHA1 Message Date
miruka
8db275ab37 Fix DebugConsole up/down with word-wrapped lines
Fix these issues:

- When the cursor was on the last soft-line of a word-wrapped line,
  pressing down wouldn't go to the next history entry

- When the cursor was after the first soft-line of a word-wrapped line
  and that line was the first of the text area, pressing up would
  go to the previous history entry instead of moving the cursor to the
  first soft-line
2021-03-03 17:14:55 -04:00
miruka
8d4e67d6a4 Fix EventList stuff depending on scroll position
Add visibleStart/End properties to HListView that take into account the
ListView's originX/Y, and not just contentX/Y which can be largely
offset.

Use those new properties in EventList for message focusing (fix
ctrl+up/down sometimes incorrectly focusing the message at the middle of
the screen even when we're scrolled at the bottom), and detection of
when we can update the read marker (fix cases when we're scrolled at the
bottom but the read marker never updates).
2021-03-03 17:14:55 -04:00
miruka
509b35a633 Make flickToTop/Bottom faster and more accurate 2021-03-03 17:14:55 -04:00
miruka
42f04b013e Add PCN theme system
Coexist with the old theme system for now. QML components have to be
updated to use the new system.
2021-03-03 17:14:55 -04:00
miruka
eed2cc4818 Remove double blank lines from QML files 2021-03-03 17:14:55 -04:00
miruka
93eba7ce92 Fix incorrect account switching keybind order
The keybinds to switch to the first room in account number X did not
behave properly when the accounts weren't ordered lexically.
2021-03-03 17:13:51 -04:00
miruka
3564e7a571 Turn bookmarks/aliases/at_index into Sections 2021-03-03 17:13:51 -04:00
miruka
db12036372 Use new PCN format for settings config file 2021-03-03 17:12:09 -04:00
miruka
75fbf23b21 Refactor user_files module & add live reloading
- Cleaner design for the backend user_files classes and simplified
  interaction with QML
- Config and theme files will now automatically reload when changed on
  disk
- Removed manual reload keybind and button
2021-03-03 17:12:09 -04:00
miruka
00c468384a Delay increasing timeline cache buffer, reduce lag
When switching rooms, first load only the delegates in the user's view
and wait a second before expanding the cacheBuffer and loading more
delegates outside the view. This reduces the amount of delegates to load
all at once by 3x.
2021-03-03 17:12:09 -04:00
miruka
ce3ed86bef Fix timeline occasionally breaking on room switch
When a chat page is recycled, set the eventList model to
null, wait for any animations to finish, then explicitely reassign it.
This prevents from model from randomly mixing up old and news delegates.
2021-03-03 17:12:09 -04:00
miruka
ed74592769 Add HToolTip.instantToggle(), use for some buttons
Used for buttons that trigger a tooltip instantly: if the tooltip is
currently visible, hide it.
2021-03-03 17:12:09 -04:00
miruka
0eb57c5986 Move composer alias "?" icon to be inside field
Be more consistent with the user ID field and its copy button.
2021-03-03 17:12:09 -04:00
miruka
28b25a53ea Make account user ID an easily copiable RO field 2021-03-03 17:12:09 -04:00
miruka
6af4cca315 Add FieldCopyButton.qml, split from SignInSso.qml 2021-03-03 17:12:09 -04:00
miruka
32484c3ae5 Prevent focusing readOnly field/areas on click 2021-03-03 17:12:09 -04:00
miruka
74ffbdb0a8 Account settings: make user ID label copiable 2021-03-03 17:12:09 -04:00
miruka
3d8914cb39 HTextContextMenu: less entries for readOnly fields
If the context menu is for a readOnly field or area, hide pointless
options like undo/redo and cut/paste.
2021-03-03 17:12:09 -04:00
miruka
dba41c30c2 Put HAvatar's tooltip image inside a Loader
Make sure to not load tooltip images unless the user is
currently trying to see one by hovering on an avatar.
This also seems to reduce idle CPU usage.
2021-03-03 17:12:09 -04:00
miruka
7564b40c3e Fix copying multi-line selected rich text
For rich text (rendered HTML) fields and areas, the selectedText
property for some reason contains "\u2028" or "\u2029"
characters that look like newlines in Qt programs but are just
invisible anywhere else. Translate them to normal "\n".
2021-03-03 17:12:09 -04:00
miruka
da75568428 Fix segfault on coroutine cancelling from QML
Since 87fcb0a773f4855cdae7212fa9448a05de57be56, it was possible to call
a Python coroutine, but cancel it (due to parent component destruction)
before Python even has time to start it.
The registred QML callbacks for this coro would then be called,
potentially causing a segfault if that callback tried to access the
parent component or its properties.
2021-03-03 17:12:09 -04:00
miruka
b94570f853 Support drag and drop for files and text in chat 2021-03-03 17:12:09 -04:00
miruka
63fe083cad Fix Alt+(Shift+)U/M ignoring local unread rooms
The goTo{Previous,Next}{Unread,Mentioned}Room keybinds only took into
accounts rooms that had a server-sent unread/highlight count, and not
those that only had a client-side unread "!" badge (e.g. for rooms that
get new messages but that have push rules disabling notifications).
2021-03-03 17:12:09 -04:00
miruka
4c04c1158c Fix sign in button always showing spinner 2021-03-03 17:12:09 -04:00
koudja
52b0bb18cb Add room bookmarking: bookmarks are always on top
Introduce a bookmark system for rooms:
a room bookmarked will always appear on top of every other
(for a given account).

Bookmarking can be done through context menu on targeted room
(as well as un-bookmarking) or through settings.json
(key roomBookmarkIDs) for permanent bookmark.
roomBookmarkIds is a {account_user_id: [room_id]} dict.
2021-03-03 17:12:09 -04:00
miruka
38360b101a Fix JoinRoom cancel button not going to last page 2021-03-03 17:12:09 -04:00
miruka
f682e0e261 Fix onLoopException calling showError incorrectly 2021-03-03 17:12:09 -04:00
hashashini
fd69046528 Require double click to open homepage (#140)
Require double click to open homepage (#140)

* Update TopBar.qml

To raise Mirage's window in a stacking wm, clicking on an area
without text, especially in the topbar, is probably what most users do.
In the case of the 2nd button in the topbar this currently accidentally
opens a browser window and thus becomes a privacy issue.

So for now require a double click to open mirage's homepage.
Alternatively the size of this button should at least be closely
restricted to the text "Mirage ${version number}".

In the long term it might be preferable to put this link into
some kind of "about" section instead of the "title" section.

* Make tooltip indicate that double click is required

Co-authored-by: miruka <miruka@disroot.org>
2021-03-03 17:12:09 -04:00
miruka
3bfaee4758 Fix invisible "Copy link address" event menu entry
menu.mediaType can be an enum value, which includes 0 to represent a
web page link, or null if no link was right clicked.
Check for null explicitely when evaluating whether the menu entry
should be displayed.
2021-03-03 17:12:08 -04:00
miruka
6e2f3440d7 Close reply bar when switching/recycling chat page 2021-03-03 17:12:08 -04:00
miruka
1feda8667f Cancel reply when pressing keybind on same event 2021-03-03 17:12:08 -04:00
miruka
6a36943dae Account settings: fix incorrect "User ID:" color 2021-03-03 17:12:08 -04:00
miruka
8acc7299e9 Add workaround for delegate stuck transition bug
Sometimes and randomly, a HListView/HGridView delegate's
add/populate transition will stop before completion.

This especially happens on startup when loading a large room list,
one room might get stuck and left tiny or invisible, despite its
normal space still being taken.
2021-03-03 17:12:08 -04:00
miruka
35fa1fa16b Fix account page not being highlighted on startup
If the page loaded on app startup is account settings or add new chat,
ensure the room list properly highlights the corresponding account
delegate.
2021-03-03 17:12:08 -04:00
miruka
2664bf1e93 HTile: prevent opening multiple context menus
If a context menu is already opened for that HTile when right clicking
or using a keybind like Alt+P (openPresenceMenu), close it instead of
just creating a duplicate one.
2021-03-03 17:12:08 -04:00
miruka
e6499d8fba Fix read counter display on EventImage
- Fix extra spacing on the right of the date when there's no read
  counter to show

- Fix read counter not being colored
2021-03-03 17:12:08 -04:00
miruka
ee1091b4dc Don't pass Python Future objects to QML
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.
2021-03-03 17:12:08 -04:00
miruka
53d2ab17af Fix display of right-to-left text in timeline
Set an explicit default left alignment for label components, to prevent
other people's right-to-left names or text from messing up the UI
in a left-to-right environment.
2021-03-03 17:12:08 -04:00
miruka
dbd78587fe DebugConsole: improve field placeholder & .help 2021-03-03 17:12:08 -04:00
miruka
e3fcb39556 DebugConsole: improve text & border coloring 2021-03-03 17:12:08 -04:00
miruka
d6062a8320 DebugConsole: add border "prompt" to delegates 2021-03-03 17:12:08 -04:00
miruka
192112ab4e DebugConsole output: add text selection & copying 2021-03-03 17:12:08 -04:00
miruka
4cc4229728 DebugConsole: restore non-history text on down key
When user starts typing something in the console, then navigates the
history with up but comes back to normal input by pressing down, restore
the text that was initially typed before navigating.
2021-03-03 17:12:08 -04:00
miruka
68d1ddfa61 Fix DebugConsole cursor at position 0 invisible 2021-03-03 17:12:08 -04:00
miruka
7d27acfcc8 Allow multi-line input in DebugConsole
Use ctrl/shift/alt+return to insert a newline, tab to insert 4 spaces
2021-03-03 17:12:08 -04:00
miruka
d9118ef24e Clear HList/GridView checked on model change
Clear the checked items and prevent potential segfaults
2021-03-03 17:12:08 -04:00
miruka
58613446f0 Fix event context menu targeting wrong message
If user right clicked on the most recent event in the timeline
(index 0), a new message was posted in the room (the new index 0),
and the user right clicked on it, the EventContextMenu's `event`
property relying on the index would not detect any change and
thus would still target the previous event.

This affected options depending on this property like "Reply".

The problem was reproducible with any same index repetition, not just 0.
2021-03-03 17:12:08 -04:00
miruka
c861c29b73 Add nonKineticScrollingSpeed multiplicator setting 2021-03-03 17:12:08 -04:00
miruka
1df7cb8014 Add copyright header to source code files
Copyright notice as per
https://reuse.software/spec/#format-of-copyright-notices

Fixes #134
2021-03-03 17:12:08 -04:00
miruka
54234399f5 Fix "Mentions & keywords" notification level
Make it work in cases where multiple accounts are present in the room
and one of them is highlighted.
2021-03-03 17:12:08 -04:00