Expression: invalid comparator
Thrown when opening the Settings window.
This started happening when I had multiple shortcuts defined and running in debug mode.
std::sort requires strict weak ordering. This fixes the compare to provide it.
to the Input structs
Step 1 to fix Windows clients loading / saving shortcuts since 3dc7b00d09
Adds the stream operators to the Input structs and a call to register them in Settings.cpp
The metatypes have to be registered in Settings.cpp because it runs before GlobalShortcuts are initialized. Without being registered it will not load the Input buttons.
Having to maintain the old legacy theme of Mumble was becoming a burden
as new icons would have to be created two times in order to fit both
theme variants. That never happened and thus the new icons looked very
out-of-place in the Classic theme. Besides the classic theme was also
missing several icons altogether already.
Thus it has been concluded to remove the Classic theme.
Furthermore this PR adds some aliases that were missing in both themes which fixes#4937
Having to maintain the old legacy theme of Mumble was becoming a burden
as new icons would have to be created two times in order to fit both
theme variants. That never happened and thus the new icons looked very
out-of-place in the Classic theme. Besides the classic theme was also
missing several icons altogether already.
Thus it has been concluded to remove the Classic theme.
The minimum volume setting determines how much a user's audio will fade
out with increasing in-game distance when positional audio is enabled.
Having this at 80% yields a basically non-noticeable effect leading to a
couple of reports of volume fading not working at all.
Thus this commit changes the default to 25% which should be an audible
difference. It is not set to 0% in order to not run into situations in
which users don't hear each other at all and then thinking that
positional audio is completely broken.
For anyone who wants a realistic audio experience though, this should be
set to 0%.
Furthermore the tooltip for this setting was changed as well.
The minimum volume setting determines how much a user's audio will fade
out with increasing in-game distance when positional audio is enabled.
Having this at 80% yields a basically non-noticeable effect leading to a
couple of reports of volume fading not working at all.
Thus this commit changes the default to 25% which should be an audible
difference. It is not set to 0% in order to not run into situations in
which users don't hear each other at all and then thinking that
positional audio is completely broken.
For anyone who wants a realistic audio experience though, this should be
set to 0%.
Fixes#4039.
Several users complained about the global shortcuts engine on Windows, mainly because it affects the keyboard and mouse behavior for all applications:
1. It reportedly causes the polling rate to drop significantly.
2. Causes accessibility programs such as NVDA to read Mumble's UI slow. Workaround implemented in a310c7f.
3. Using the debugger's "pause" function is nearly impossible: the OS has to wait for the callback to timeout before registering the input, causing a consistent and heavy slowdown.
Disabling hooks fixes all issues described above, however it only leaves DirectInput for standard devices (i.e. not relying on XInput and G-keys).
This commit completely rewrites GlobalShortcutWin, implementing raw input and getting rid of hooks and DirectInput.
Controllers are supported, but only basic buttons are handled for now. Support for analog input (including d-pad) will be added in the future.
XInput can still be enabled, in order for input from triggers and d-pad on Xbox controllers to be registered.
As a bonus, the main thread doesn't wait for the input processing function(s) to return anymore.
The reason why this wasn't the case before is because we needed to know whether to block the message (returning true) from reaching other applications ("suppress" feature).
That cannot work with raw input due to its nature. Returning true simply tells Windows that we didn't process the message.
At startup, the settings for a Mumble instance are loaded (either
using the default location or the "--config" file that was supplied).
Then Mumble checks to see if a valid certificate was loaded. If it
wasn't, it looks for a certificate in a hardcoded path
(QStandardPaths::DocumentsLocation). If there is a certificate there,
it uses it. If not, it creates a new cert and saves it to that
hardcoded path.
This all means that when you run a second instance for the first time,
there will be no certificate in the supplied "--config", so it will use
the certificate in the hardcoded path, which is almost certainly the
certificate that the other mumble instance is using. Connecting to a
server with this certificate will authenticate you as the user who has
that certificate registered. This is probably not what you want.
This commit fixes this issue by adding a CLI option that allows the user
to specify the default certificate directory.
Currently translated at 96.6% (1948 of 2016 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Robert Adam <dev@robert-adam.de>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/de/
Translation: Mumble/Mumble Client
Previously handling the change of transmission mode was done in many
different places causing code duplication.
This commit factors the common functionality out into its own function
and creates a new event for when the transmission mode is changed.
"--config" is parsed before the main argument parsing loop. Then these
arguments are captured a second time in the else clause and shoved
into the "url" variable.
Having a valid url (the path to a config is a valid file URL) causes the
app to post an OpenURLEvent. This is pretty harmless, it just causes the
settings to load again. But the bigger problem is that
Global::get().mw->on_qaServerConnect_triggered(true) is not called. So,
even if you have autoconnect enabled, launching mumble with "--multiple
--config PATH" won't actually autoconnect.
This commit fixes this by skipping over the "--config" arguments in the
main parsing loop.
Previously handling the change of transmission mode was done in many
different places causing code duplication.
This commit factors the common functionality out into its own function
and creates a new event for when the transmission mode is changed.
Currently translated at 98.9% (1953 of 1973 strings)
TRANSLATION: Update Russian translation
Currently translated at 98.9% (1953 of 1973 strings)
Co-authored-by: Nikita Epifanov <nikgreens@protonmail.com>
Co-authored-by: Timofey X <vuki03@mail.ru>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/ru/
Translation: Mumble/Mumble Client
The mute cue is played when speech is detected while the local client is
muted. This reminds the user that they are still muted, which is
especially useful when the overlay/client indication is not available
(e.g. in full-screen games).
This currently reuses the existing "audio on" cue.
Implements #4866
This commit introduces a new plugin framework into the codebase of the
Mumble client. Note that "plugin" here really refers to a (more or less)
general purpose plugin and is therefore not to be confused with the
previously available positional data plugins (only responsible for
fetching positional data from a running game and passing that to
Mumble).
The plugin interface is written in C, removing the compiler-dependence
the old "plugins" had. Instead plugins can now be written in an
arbitrary language as long as that language is capable of being compiled
into a shared library and also being capable of being C-compatible.
As already indicated a plugin is essentially a shared library that
provides certain functions that allow Mumble to interface with it.
Inside Mumble the so-called PluginManager is responsible for managing
the plugins and relaying events to the respective callbacks. Plugins
themselves can also interact with Mumble on their own initiative by
using the provided API functions.
Fixes#2455Fixes#2148Fixes#1594Fixes#2051Fixes#3742Fixes#4575Fixes#4751