Commit Graph

5493 Commits

Author SHA1 Message Date
Robert Adam
cc3c824499 FIX(client,ui): Crash by pressing Esc in nickname dialog
When having the dialog open that allows to set a custom nickname to
another client (UserLocalNicknameDialog) pressing Esc would crash
Mumble. This is due to the Esc key triggering the dialog's reject()
function in which the dialog's smart-pointer object is removed from a
global list and therefore goes out of scope.

This results in the dialog getting deleted, but since this is done in a
member function of the dialog, there is still code accessing the now
deleted object (in Qt's internals) and this is causing the segmentation
fault.

The fix is to use a custom deleter function for the dialog pointer that
instead of using delete on it, calls deleteLater() on it. Thus the
deletion of the object is left to Qt which can then do it at a point at
which it is done with it.

As this is something that could get useful in other locations as well,
the custom deleter function was outsourced into its own file.

Fixes #4666
2021-01-04 12:39:28 +01:00
Robert Adam
391ea23d0f
Merge pull request #4667: FEAT(client): Added DBus calls to toggle mute and deaf state
Just calling the toggle function is enough to cause the state to
invert.
2021-01-04 11:17:31 +01:00
Robozman
4ca965bed4 FEAT(client): Added DBus calls to toggle mute and deaf state.
Just calling the toggle function is enough to cause the state to
invert.
2021-01-03 03:02:01 -07:00
Terry Geng
08c35f7b06
FIX(client): Wrong "Image not supported" message
As of 3d2a196830 the client would always log
"This server does not allow sending images." to the chat area when pasting anything
to the chatbar (regardless of whether it actually contains an image) if the client is connected
to a server that doesn't allow HTML messages.

Fixes #4660
2021-01-03 09:39:05 +08:00
Jan Klass
c0434236f1 TRANSLATION: Remove duplicate empty Norwegian translation
no is used in Transifex, nb_NO is not.
2020-12-24 02:41:21 +01:00
Jan Klass
70091f8fea TRANSLATION: Remove duplicate empty Greek translation
el is used in Transifex, el_GR not.
2020-12-24 02:41:19 +01:00
Jan Klass
b208fe09d1 TRANSLATION: Remove duplicate empty Catalanian translation
Both ca and ca_ES were added. Only one makes sense.
2020-12-24 02:41:16 +01:00
Davide Beatrici
8e077d9a6b
Merge PR #4644: FIX(client, server): Load native mDNS/DNS-SD symbols at runtime 2020-12-23 20:40:24 +01:00
Robert Adam
38974e7664
Merge pull request #4632: FEAT(client): Easier pasting of images
Currently pasting or dragging and dropping images in the Mumble chat is
difficult because:

1. They are rejected because they exceed the allowed size. As a user I
    would not expect it to transmitted losslessly but I would hope that the
    client compresses it to a size the server allows.
2. Images are rejected because the server does not allow html. When
    inserting an image via drag and drop you aren't notified what went
    wrong.
2020-12-23 08:26:47 +01:00
Davide Beatrici
5e088269ae FIX(client, server): Load native mDNS/DNS-SD symbols at runtime
This change:
- Fixes binaries failing to start on versions of Windows where dnsapi.dll doesn't export the symbols we need.
- Allows us to use the native API in x86 builds.
See https://developercommunity.visualstudio.com/content/problem/1191345/some-dns-api-functions-cause-lnk2019-errors-in-32.html for more info.
2020-12-23 05:13:20 +01:00
Meru Alagalingam
38215622f4 TRANSLATION: Update translation files
Scanning directory './src'...
Scanning directory './src/mumble'...
Updating 'src/mumble/mumble_en.ts'...
    Found 1911 source text(s) (1 new and 1910 already existing)
2020-12-22 22:19:24 +01:00
Meru Alagalingam
3d2a196830 FEAT(client): Easier pasting of images
Currently pasting or dragging and dropping images in the Mumble chat is
difficult because:

1) They are rejected because they exceed the allowed size. As a user I
would not expect it to transmitted losslessly but I would hope that the
client compresses it to a size the server allows.
2) Images are rejected because the server does not allow html. When
inserting an image via drag and drop you aren't notified what went
wrong.
2020-12-22 22:19:20 +01:00
Robert Adam
72228f6e03
Merge pull request #4624: FEAT(client): Add ability to set local nicknames
This feature allows users to set local nicknames for other users. It is saved in the client database for persistence. This feature could be helpful for faster identifying of users with similar names or as a means to hide potentially inappropriate usernames with a setting that only shows the nicknames.

Fixes #3967
2020-12-20 17:53:37 +01:00
tandunn
43030fba5c TRANSLATION: Update translation files
Scanning directory './src'...
Scanning directory './src/mumble'...
Updating 'src/mumble/mumble_en.ts'...
    Found 1920 source text(s) (10 new and 1910 already existing)
2020-12-20 09:14:11 +01:00
tandunn
ba27c8f8bb FEAT(client): Add possibility to set nickname
As requested in #3967 this commit implements the ability to set
nicknames for other users when connected to the same server. The change
is added to the client database by the user id for persistence. In order
to set a nickname, a user can right click on that user and click Set
Nickname. This opens a window where the user can enter the new nickname.
If the text field is cleared, no nickname is displayed.

Implements #3967
2020-12-20 09:14:11 +01:00
Robert Adam
3019f3a715
Merge pull request #4550: Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 45 languages
2020-12-20 08:17:33 +01:00
Robert Adam
8c0f88c4f1
Merge pull request #4634: REFAC(client, talking-ui): Stylable widget wrapper
It turned out that it is absolutely impossible to only overwrite
specific properties via a styleSheet without also overwriting all other
properties that have been set via styleSheet on that object before.
Therefore a myWidget->setStyleSheet("background: red") will not only set
the background color to red but also erase everything that has been
written to the StyleSheet before this point.

As this is very inconvenient and always appending the most recent
property to the existing StyleSheet is not an option (the StyleSheet
will just keep growing in size and also this doesn't work well once one
starts using selectors), this commit introduces a wrapper class that can
be used for fine-tuned control of a widget's style.

This works by storing the desired properties in a separate class and
re-generate and re-apply the StyleSheet every time one of these
properties changes.

Currently the only implemented properties are font-size and
background-color.

NOTE: The wrapper only works as long as no other calls to setStyleSheet
are made to the object the wrapper acts upon.

The mentioned wrapper was then incorporated into the UI elements of the
TalkingUI.
2020-12-19 22:54:59 +01:00
MumbleTransifexBot
9e8b9afaad Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 45 languages
2020-12-19 20:45:57 +01:00
Robert Adam
675c04632c
Merge pull request #4627: FEAT(client): Disable TTS by default
Fixes #4626
2020-12-18 10:12:15 +01:00
Robert Adam
ff040fb23c REFAC(client, talking-ui): Stylable widget wrapper
It turned out that it is absolutely impossible to only overwrite
specific properties via a styleSheet without also overwriting all other
properties that have been set via styleSheet on that object before.
Therefore a myWidget->setStyleSheet("background: red") will not only set
the background color to red but also erase everything that has been
written to the StyleSheet before this point.

As this is very inconvenient and always appending the most recent
property to the existing StyleSheet is not an option (the StyleSheet
will just keep growing in size and also this doesn't work well once one
starts using selectors), this commit introduces a wrapper class that can
be used for fine-tuned control of a widget's style.

This works by storing the desired properties in a separate class and
re-generate and re-apply the StyleSheet every time one of these
properties changes.

Currently the only implemented properties are font-size and
background-color.

NOTE: The wrapper only works as long as no other calls to setStyleSheet
are made to the object the wrapper acts upon.

The mentioned wrapper was then incorporated into the UI elements of the
TalkingUI.
2020-12-18 10:02:19 +01:00
Robert Adam
d408deb246
Merge pull request #4633: FIX: Revert audio corking (PulseAudio)
This reverts commit 7d0b933.

The issue with theses changes is that they cause
AudioInput::encodeAudioframe from no longer being called if the user is
muted. The functionality packed inside the mentioned function relies on
being continually being called even if there is no audio to send.

Thus no longer calling them affects the following things (maybe more):

    local user's talking state (can get stuck in a certain state)
    Audio cues for begin/end of a transmission
    Idle actions
    Framesize stuffing when using Opus
    Resetting of certain variables (iBitrate)
    Clearing/Handling of whisper targets (for last audio frame)
    Properly updating bPreviousVoice

In order to use the changes originally made by that commit, the audio
system has to be refactored first so that these things no longer rely on
this function being called continuously.

Ref: #171
Old workaround for parts of this issue: #4018
2020-12-16 11:55:11 +01:00
Robert Adam
1c660bcd9b FIX(client, talking-ui): Icon size initialized incorrectly
If the font size for the TalkingUI was set to something different than
100%, the TalkingUI's icon sizes would be incorrect.
This is due to the icon size being initialized to the widget's
font-size. This doesn't seem to have been affected by inherited
StyleSheets right after construction and therefore they'd always report
the default font-size.

This commit fixes this by explicitly setting the icon-size after an
entry is created.

In this context the method of calculating the current line height has
been overhauled as well as this would also depend on when the respective
function was called. This is probably due to Qt not having stored the
display's DPI correctly yet and thus the conversion from point size to
pixel size is flawed.
2020-12-15 18:53:53 +01:00
Robert Adam
dbb1d92111 FIX: Revert audio corking (PulseAudio)
This reverts commit 7d0b933a7e.

The issue with theses changes is that they cause
AudioInput::encodeAudioframe from no longer being called if the user is
muted. The functionality packed inside the mentioned function relies on
being continually being called even if there is no audio to send.

Thus no longer calling them affects the following things (maybe more):
- local user's talking state (can get stuck in a certain state)
- Audio cues for begin/end of a transmission
- Idle actions
- Framesize stuffing when using Opus
- Resetting of certain variables (iBitrate)
- Clearing/Handling of whisper targets (for last audio frame)
- Properly updating bPreviousVoice

In order to use the changes originally made by that commit, the audio
system has to be refactored first so that these things no longer rely on
this function being called continuously.

Ref: #171
Old workaround for parts of this issue: #4018
2020-12-15 17:47:48 +01:00
Robert Adam
c3c34e58cc
Merge pull request #4574: REFAC(installer-msi) Simplify WiX component install
- Remove CPack and previous WiX installer projects and sources
- Add toolset for WixSharp to facilitate client and server builds
    individually or collectively.
- Add multilanguage build with packaging=ON and translations=ON, and
    standard build with packaging=ON. Builds are also aware of client and
    server option settings.
- Add correct LICENSE to installer

Fixes: #4488
WixSharp: https://github.com/oleg-shilo/wixsharp
2020-12-15 12:37:10 +01:00
peylight
f8054269cf FEAT(client): Disable TTS by default
Fixes #4626
2020-12-14 01:27:44 +03:30
Nik Reist
88e1786849 REFAC(installer-msi) Simplify WiX component install
Remove CPack and previous WiX installer projects and sources
Add toolset and for WixSharp to facilitate client and server builds
individually or collectively.
Add multilanguage build with packaging=ON and translations=ON, and
standard build with packaging=ON. Builds are also aware of client and
server option settings.
Add correct LICENSE to installer
2020-12-11 22:07:25 -05:00
Robert Adam
f8f9442fe9
Merge pull request #4611: FIX(client): Respect unlimited imagemessagelength
When you set the imagemessagelength to 0 on the server and paste an
image into the client chat no error should pop up that the image is too
large.
2020-12-09 10:36:47 +01:00
Robert Adam
dc99acc82b
Merge pull request #4616: FIX(server): Prevent listeners from hearing all shouts
Before this commit, the code on the server made sure that a
ChannelListener would always receive audio that was being shouted to a
channel. It didn't respect though if the shout was actually restricted
to be received by only a specific group.

This patch now makes sure that listeners are also checked for their
group so that a listener that doesn't belong to the target group (if one
is set) won't receive the audio either.
2020-12-08 19:45:33 +01:00
Robert Adam
85850d5a63 FIX(client): Crash due to race-condition in TalkingUI
The race condition was that the channel of a user could be modified
and before it gets updated in the TalkingUI as well, the talking state
of that user changes. Then inside the talkingStateChanged function the
code would assume that the TalkingUIUser is in the container representing
the current channel of that user but in fact in the TalkingUI this user
is still in its own channel, causing the user-search to return nullptr
which then yields a SegFault as soon as the returned pointer gets
dereferenced.
2020-12-08 09:37:29 +01:00
Robert Adam
bbdfd10430 FIX(server): Prevent listeners from hearing all shouts
Before this commit, the code on the server made sure that a
ChannelListener would always receive audio that was being shouted to a
channel. It didn't respect though if the shout was actually restricted
to be received by only a specific group.

This patch now makes sure that listeners are also checked for their
group so that a listener that doesn't belong to the target group (if one
is set) won't receive the audio either.
2020-12-08 09:33:26 +01:00
Meru Alagalingam
8f2903eeba FIX(client): Respect unlimited imagemessagelength
When you set the imagemessagelength to 0 on the server and paste an
image into the client chat no error should pop up that the image is too
large.
2020-12-04 23:06:21 +01:00
Robert
c322a8e0f2 FIX(talking-ui): Context-menu z-index issues
In cases where the TalkingUI was overlaying the MainWindow, it could
happen that a context menu triggered from the TalkingUI would actually
be created using another element (listener, channel, user) as the
context for that menu. This would happen because in these cases there is
an entry below the cursor (behind the TalkingUI) that would
automatically be recognized as the desired target.

The fix works by explicitly disabling the position-dependent target
search and using explicitly defined targets instead.
2020-11-16 07:59:59 +01:00
Davide Beatrici
97e34cebb9 FEAT(client): Show keys in tooltip in shortcuts settings, each one in a new line
This improves readability, especially when the keys combination and/or the keys' name is long.

Previously, the tooltip only showed "Shortcut button combination.".
2020-11-03 21:23:47 +01:00
Meru Alagalingam
0e34fe144a TRANSLATION: Update translation files
Scanning directory './src'...
Scanning directory './src/mumble'...
Updating 'src/mumble/mumble_en.ts'...
    Found 1910 source text(s) (1 new and 1909 already existing)
2020-11-03 17:17:37 +01:00
Meru Alagalingam
83d70abdd2 FEAT(client): Adds a new shortcut which hides/shows the main window
Implements #2328
2020-11-03 17:17:37 +01:00
Robert Adam
681779bff3 FIX(client): Also respect MUMBLE_PLUGIN_PATH in debug mode
As this variable will always be set by the cmake build system the debug
code should also respect its setting.
2020-10-31 18:57:28 +01:00
Robert Adam
7babebf0f9 BUILD(cmake): Only install shared libraries
Libraries should only be installed if they are built as shared
libraries. Static libraries should only be needed during Mumble's
compilation and are therefore no required dependencies that have to be
installed alongside Mumble.
2020-10-29 12:02:12 +01:00
Robert Adam
8fe9be82ab BUILD(cmake): Fix quoting for compile defs
It seems that the quotes added in a target_add_compile_definitions call
are taken literal and will be part of the actual macro definition.

What we actually wanted was that paths with spaces are properly covered
which can be achieved by placing the starting quote a bit differently.
2020-10-28 18:47:51 +01:00
Robert Adam
18534cf011
Merge pull request #4546: FEAT(client, ui): Add button to reset all settings
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.
2020-10-26 11:48:57 +01:00
Robert
0ed420fa2e TRANSLATION: Update translation files
Scanning directory './src'...
Scanning directory './src/mumble'...
Updating 'src/mumble/mumble_en.ts'...
    Found 1909 source text(s) (5 new and 1904 already existing)
    Removed 1 obsolete entries
2020-10-26 10:50:33 +01:00
Robert Adam
a8a9fa0600 FEAT(client, ui): Add button to reset all settings
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>
2020-10-26 10:50:16 +01:00
Robert Adam
bf9550a68e
Merge pull request #4503: BUILD(cmake): Revamp install paths
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.
2020-10-24 17:38:56 +02:00
Robert Adam
ceb4f1afe2
Merge pull request #4509: BUILD(cmake): Fix gRPC not being found
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
2020-10-24 16:01:56 +02:00
Robert
b9b41621c5 BUILD(cmake): Revamp install paths
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.
2020-10-24 15:57:01 +02:00
Robert Adam
3f92412553
Merge pull request #4402: TRANSLATION: Transifex translation update 2020-10-24 15:21:39 +02:00
Robert
767b29d69c BUILD(cmake): Fix gRPC not being found
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>
2020-10-24 14:47:06 +02:00
MumbleTransifexBot
80415791f5 TRANSLATION: Transifex translation update
Mode: default
Minimum percent translated: 0
Matched 45 languages
2020-10-24 14:37:34 +02:00
Robert Adam
0163836c4c
Merge pull request #4427: Use new AppImage bundle tool
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.
2020-10-24 14:01:35 +02:00
Davide Beatrici
11bb07e6da
Merge PR #4542: FIX(client): don't print Zeroconf warning if the operation was cancelled 2020-10-23 22:31:03 +02:00
Robert Adam
94d25d8296 CI(azure): Use new Go AppImage tool
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.
2020-10-23 19:40:52 +02:00