Previously the user only had the choice of setting the settings on the
current settings page to their default value. Therefore, if you wanted
to reset all settings, you had to visit every page and reset it
individually.
With this commit, there is now a reset-all button that can be used
instead.
Previously the user only had the choice of setting the settings on the
current settings page to their default value. Therefore, if you wanted
to reset all settings, you had to visit every page and reset it
individually.
With this commit, there is now a reset-all button that can be used
instead.
Co-authored-by: Davide Beatrici <github@davidebeatrici.dev>
Installation paths can now be fine-tuned by setting the respective
MUMBLE_INSTALLATION_* variables when invoking cmake.
Additionally some components that only had install rules for a certain
OS are now installed on all OSes as these components should be needed
there as well.
We are using a custom FindGRPC.cmake script in order to locate the gRPC
targets as not all distribution variants of gRPC include the respective
cmake support. Those that do however will use "gRPC" (note the lowercase
"g") as the target's name and therefore our current way of searching for
it via find_pkg won't find them.
The solution is to first look for "gRPC" and only if that fails, check
for "GRPC". This way the official target "gRPC" should be found and
preferred if present.
Fixes#4508
Installation paths can now be fine-tuned by setting the respective
MUMBLE_INSTALLATION_* variables when invoking cmake.
Additionally some components that only had install rules for a certain
OS are now installed on all OSes as these components should be needed
there as well.
We are using a custom FindGRPC.cmake script in order to locate the gRPC
targets as not all distribution variants of gRPC include the respective
cmake support. Those that do however will use "gRPC" (note the lowercase
"g") as the target's name and therefore our current way of searching for
it via find_pkg won't find them.
The solution is to first look for "gRPC" and only if that fails, check
for "GRPC". This way the official target "gRPC" should be found and
preferred if present.
Fixes#4508
Co-Authored-By: Thomas Lange <thomas-lange2@gmx.de>
The new tool provided at https://github.com/probonopd/go-appimage/blob/master/src/appimagetool doesn't have the restriction of having to be run on the latest still supported Ubuntu version. Thus this allows us to upgrade our Linux CI on Azure to Bionic.
Note however that the AppImage produced this way doesn't seem to be working.
The old AppImage tool required to be run on the oldest still supported
Ubuntu LTS. On anything else it would quit with an error.
There is a new tool from the same author though that does not have this
limitation due to bundling more of its dependencies into the AppImage.
The tool is taken from https://github.com/probonopd/go-appimage.
The "Channel Listeners" (#4011) feature allows users to hear the audio
from a channel without joining it. This commit also delivers text
messages to all users who are just "listening to" a channel this way.
Implements #4539
Closing ConnectDialog causes the ZeroConf object to be destroyed. The destructor cancels any running operations, as expected.
However, a warning is printed in Zeroconf::callbackBrowseComplete() because ERROR_CANCELLED is not handled:
"Zeroconf: DnsServiceBrowse() reports status code 1223, ignoring results"
This commit fixes the issue.
419b06065f applied the exact same change to callbackResolveComplete().
The error message in that commit's description is wrong, but everything else is correct.
Updated the mumble.desktop and mumble.appdata.xml files to meet the most
recent information and also meet the more modern standards that have
been established.
They now pass validation by appstreamcli.
As requested in Issue #4257 this commit implements the ability to paste and send messages whit a single keyboard shortcut.
The keyboard shortcut is Ctrl + Shift + V, as requested.
I tried to add the shortcut into the "paste and send" drop down menu item but the shortcut is not visible to me, maybe it's because my screen resolution.
Implements #4257
Closing ConnectDialog causes the ZeroConf object to be destroyed. The destructor cancels any running operations, as expected.
However, a warning is printed in Zeroconf::callbackResolveComplete() because ERROR_CANCELLED is not handled:
"Zeroconf: DnsServiceBrowse() reports status code 1223, ignoring results"
This commit fixes the issue.
The format String was created for an unsigned int but was fed with a
long unsigned int (aka DWORD).
This would cause a compiler warning and could have theoretically caused
loss of information/data.
The source files that the protobuf compiler generates can produce (a lot
of) warnings (typically about unused variables). As this would prevent
the use of the warnings-as-errors option, this commit suppresses all
warnings for those generated files.
The setting for keeping the local user always visible in the TalkingUI
was not put into effect immediately if the local user didn't happen to
be displayed in the TalkingUI at the time of applying the settings.
Instead the effect was only visible after a re-connect or after having
changed the local user's TalkingState so that it was added to the UI via
that route.
The fix was simply to add the user if it is currently not present but is
asked to be shown permanently.
The way TalkingUIContainer::updatePriority() worked prevented a
container's priority to decrease (even thought the entry because of which
the priority initially increased is no longer contained).
To fix this, the referenced function will now simply reset the cached
priority to the lowest possible value before performing the actual
checking.
The setting for keeping the local user always visible in the TalkingUI
was not put into effect immediately if the local user didn't happen to
be displayed in the TalkingUI at the time of applying the settings.
Instead the effect was only visible after a re-connect or after having
changed the local user's TalkingState so that it was added to the UI via
that route.
The fix was simply to add the user if it is currently not present but is
asked to be shown permanently.
On Linux (KDE Plasma) Qt (or rather the window manager) won't move a
widget off-screen so there was no need to check whether the position
saved for the TalkingUI was actually on-screen or not.
The situation seems to be a different one on Windows though. There it
can happen that the UI is moved off-screen. Once that happens the user
is more or less incapable of bringing it back again (as the saved
position won't get cleared).
In order to mitigate this issue, it is now (thoroughly) checked whether
or not the TalkingUI will end up on-screen or not.
The way TalkingUIContainer::updatePriority() worked prevented a
container's priority to decrease (even thought the entry because of which
the priority initially increased is no longer contained).
To fix this, the referenced function will now simply reset the cached
priority to the lowest possible value before performing the actual
checking.
This allows:
- The client to find servers advertized via zeroconf without the need for Bonjour to be installed.
- The server to advertize itself via zeroconf without the need for Bonjour to be installed.
The Win32 API was introduced in the version 10.0.18362.0 (1903/19H1) of Windows SDK. Before that, only the UWP interface was available (introduced in Windows 10 1507).
This commit was successfully tested on Windows 10 1809, which probably means that the API can be used on previous versions as well.
Even if that isn't the case, it's not a problem: if the code fails to load the required symbols, it falls back to Bonjour.
"Q_OS_WIN64" is used instead of "Q_OS_WIN" because of an issue that appears when certain DNS functions are used in an x86 (32 bit) build: https://developercommunity.visualstudio.com/content/problem/1191345/some-dns-api-functions-cause-lnk2019-errors-in-32.html
This means that until the issue is fixed we can safely use the native mDNS-DNS-SD API only on x86_64 (64 bit).
This should make it more clear that we don't include Bonjour-related stuff in our project. We use external libraries depending on the OS.
For compatibility, the server option is still called "bonjour". We should probably add a new option called "zeroconf" and then handle the old one if present in the configuration file.
If a sound-file failed to load, there is no hint about this in the logs
or anywhere else as it never actually gets ensured that the loading was
successful.
Now and explicit check is performed and if the loading failed, a warning
is printed to the console.
Closes#4492
PR #4487 introduced a regression in form of a failing assertion in case
a user has stored volume adjustments for a ChannelListener in its DB. In
that case the client would crash as soon as the server-connection has
synchronized.
The issue was caused by a change-event being emitted before the
ChannelListener officially existed. The fix is to simply not send these
events in the first place.
PR #4487 introduced a regression in form of a failing assertion in case
a user has stored volume adjustments for a ChannelListener in its DB. In
that case the client would crash as soon as the server-connection has
synchronized.
The issue was caused by a change-event being emitted before the
ChannelListener officially existed. The fix is to simply not send these
events in the first place.
If the local volume adjustment of a client or a ChannelListener was
changed, the MainWindow would not reflect this change until some event
triggered it to refresh (e.g. MouseOver).
With this fix, the MainWindow gets updated immediately when the volume
adjustment is changed (of a client or a ChannelListener).
The local volume adjustment a user has set for their own
ChannelListeners would be displayed for all listeners in that channel
(even for the listeners of other clients).
This has been fixed by making sure these adjustments are only displayed
for local listeners.
This could also cause a crash, in case gswForward() was called before GlobalShortcutsWin's initialization.
For reference, the bug was introduced in 01db6e219d.
Compiling with Boost a somewhat recent version of Boost would produce
warnings about deprecated usage of boost::bind.
These have been fixed now.
The warning was
The practice of declaring the Bind placeholders (_1, _2, ...) in the
global namespace is deprecated. Please use
<boost/bind/bind.hpp> + using namespace boost::placeholders, or
define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.
Fixes#4295
We used the BUILD_TESTING variable in order to indicate whether or not
tests shall be built. However this variable is used by e.g. CTest
already and there it had a different default value. Therefore we now
deprecate BUILD_TESTING and use the tests option instead.