The new features "Omit Message Scope" and "Omit Message Author" were
somewhat broken.
The problems are adressed by transforming the message from HTML to
plaintext and creating a new TTS string that either contains no prefix
or just the scope or the author.
Fixes#4309
The new features "Omit Message Scope" and "Omit Message Author" where
somewhat broken.
The problems are adressed by transforming the message from HTML to
plaintext and creating a new TTS string that either contains no prefix
or just the scope or the author.
Fixes#4309
1a4d134 (part of #4287) introduced the ability to
disable TTS for specific users. The change however didn't account for
messages that are sent from the server. In these cases pSrc is nullptr
but that commit introduced code that access it without checking for
null. This lead to a SegFault as soon as a text message from the server
is received.
This commit fixes this by simply adding a null-check before accessing
the variable.
1a4d134a35 introduced the ability to
disable TTS for specific users. The change however didn't account for
messages that are sent from the server. In these cases pSrc is nullptr
but that commit introduced code that access it without checking for
null. This lead to a SegFault as soon as a text message from the server
is received.
This commit fixes this by simply adding a null-check before accessing
the variable.
Before this PR, if the MainWindow was set to be always on top of
other windows, it could happen that the UserLocalVolumeDialog got hidden
behind the MainWindow (it wanted to open on top of it but since the
MainWindow is set to be on top of all other windows, it couldn't). This
could be especially annoying on Windows where you can't move the
MainWindow away as long as the UserLocalVolumeDialog is open (luckily
you can close it via Esc though).
In order to avoid this kind of situation, this commit make the
UserLocalVolumeDialog "inherit" the AlwaysOnTop flag from the
MainWindow. This way it can open on top of it again and won't be hidden.
These changes make it possible to disable Text-To-Speech for specific
users while still receiving the messages as normal text.
A use case for this would be muting text to speech for a music bot.
These changes make it possible to turn of TTS for a specific user while
still receiving their messages.
This setting can be managed from the context menu of a user that is
connected to the server and is only visible when TTS is enabled
globally.
A new DB table called 'ignored_tts' had to be created to persist this
setting.
This fixes a regression introduced in
b691108. In there it was thought that
there is no need to explicitly add the system CaCertificates to the SSL
configuration. This turned out to be wrong.
It was brought up that by removing this line, properly signed
certificates would also be shown as self-signed.
Fixes#4289
This fixes a regression introduced in
b691108d38. In there it was thought that
there is no need to explicitly add the system CaCertificates to the SSL
configuration. This turned out to be wrong.
It was brought up that by removing this line, properly signed
certificates would also be shown as self-signed.
Fixes#4289
Implements functionality to send an image by copy and paste into the chat bar of mumble.
This is a commonly expected behavior of any chat app. Can't see why mumble should not have one.
Furthermore it also implements Drag&Drop for images to the chatbar.
The initialization code is now moved into its own function (instead of
also living inside the setActive function body). This is done in order
to better separate initialization and activation.
In the old implementation the overlay was initialized as soon as
Overlay::setActive got called regardless of whether it was asked to
actually activate.
This commit makes sure to only initialize the Overlay if it is actually
asked to be activated via Overlay::setActive(true).
In aac3214d4b Overlay::createPipe() has
been introduced in order to only create the pipe when needed (instead of
in the constructor of the Overlay class). This new function was never
called though which caused the Overlay to stop working.
This commit makes sure the respective function is called when activating
the overlay.
Fixes#4281
Previously the certificates were added to the QSslSocket object directly
but Qt 5.15 added this functionality to the QSslConfiguration object and
deprecated the ones in QSslSocket.
Previously AppImages built on the CI got their updates from https://dl.mumble.info/snapshots/
but now we have a separate directors `nightly` that'll contain CI build artifacts and this should be used instead.
qrand() has been deprecated in Qt 5.15. Therefore this commit replaces
it with QRandomNumberGenerator as recommended by Qt.
As the RNG returned by QRandomNumberGenerator::global() (which was used
throughout this refactoring) is already seeded (according to the docs),
there is no need to explicitly seed the RNG in the main function as has
been done before by calling qsrand().
Qt 5.14 has introduced Qt::SplitBehavior which now holds the flag that
were previously contained in the QString class. The fields still exist
in QString but they are deprecated since Qt 5.15.
The function in question has been deprecated in Qt 5.15. Instead it is
recommended to set the CA certificates on the QSslConfiguration object.
According to the docs of QSslConfiguration however the system's CA
certificates is what is used by default anyways.
Quote (from 5.15 docs of QSslConfiguration::systemCaCertificates):
"This function provides the CA certificate database provided by the
operating system. The CA certificate database returned by this function
is used to initialize the database returned by caCertificates() on the
default QSslConfiguration."
Some labels were stacked on top of each other in the Positional Audio
section of the settings page. This probably happened in a wrongly
resolved merge-conflict and is corrected by this commit.
The check was originally implemented to avoid initializing multiple channels when it was guaranteed only one would be available (i.e. positional audio disabled).
Now that we support stereo audio decoding (#4209), the check has to be removed in order to make the feature available when positional audio is disabled.
The check was originally implemented to avoid initializing multiple channels when it was guaranteed only one would be available (i.e. positional audio disabled).
Now that we support stereo audio decoding, the check has to be removed in order to make the feature available when positional audio is disabled.
When a client disconnected from the server that was still talking and
therefore showing up in the TalkingUI, it could happen that this user
was not removed from it even though it was no longer on the server. This
is due to a race-condition in the event chain: It could happen that the
respective user object got deleted before the on_talkingStateChanged
function in the TalkingUI got called. This then led to this function not
getting a reference to the user object which causes it to return.
This commit explicitly wires up the UserRemove event with the TalkingUI
to make sure a user gets removed from it once it is removed from the
server.
When a client disconnected from the server that was still talking and
therefore showing up in the TalkingUI, it could happen that this user
was not removed from it even though it was no longer on the server. This
is due to a race-condition in the event chain: It could happen that the
respective user object got deleted before the on_talkingStateChanged
function in the TalkingUI got called. This then led to this function not
getting a reference to the user object which causes it to return.
This commit explicitly wires up the UserRemove event with the TalkingUI
to make sure a user gets removed from it once it is removed from the
server.
This is an attempt to provide a unified interface for all crypto classes, in order to support multiple ciphers and the crypto negotiation mentioned in #3918 in the future.
That being said, I have to readdress the sad fact that I'm not a C++ expert and have no previous experience of developing a huge project like mumble, hence I'm not very sure about all my moves, whether I'm using the best practice or not. I sincerely hope you guys may provide some insights and suggestions and I would be surely grateful for that.