Fixes this compilation issue:
pavuapplication.cc: In function ‘int main(int, char**)’:
pavuapplication.cc:146:32: error: use of deleted function ‘PavuApplication::PavuApplication(PavuApplication&&)’
auto app = PavuApplication();
^
In file included from pavuapplication.cc:29:0:
pavuapplication.h:27:7: note: ‘PavuApplication::PavuApplication(PavuApplication&&)’ is implicitly deleted because the default definition would be ill-formed:
class PavuApplication : public Gtk::Application {
^
In file included from /usr/include/gtkmm-3.0/gtkmm/window.h:32:0,
from /usr/include/gtkmm-3.0/gtkmm/dialog.h:30,
from /usr/include/gtkmm-3.0/gtkmm/aboutdialog.h:33,
from /usr/include/gtkmm-3.0/gtkmm.h:99,
from pavucontrol.h:29,
from pavuapplication.h:24,
from pavuapplication.cc:29:
/usr/include/gtkmm-3.0/gtkmm/application.h:211:3: error: ‘Gtk::Application::Application(const Gtk::Application&)’ is private
Application(const Application&);
^
In file included from pavuapplication.cc:29:0:
pavuapplication.h:27:7: error: within this context
class PavuApplication : public Gtk::Application {
^
In file included from /usr/include/glibmm-2.4/glibmm/wrap.h:26:0,
from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:26,
from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:23,
from /usr/include/glibmm-2.4/glibmm.h:91,
from /usr/include/gtkmm-3.0/gtkmm.h:87,
from pavucontrol.h:29,
from pavuapplication.h:24,
from pavuapplication.cc:29:
/usr/include/glibmm-2.4/glibmm/objectbase.h:238:3: error: ‘Glib::ObjectBase::ObjectBase(const Glib::ObjectBase&)’ is private
ObjectBase(const ObjectBase&);
^
In file included from pavuapplication.cc:29:0:
pavuapplication.h:27:7: error: within this context
class PavuApplication : public Gtk::Application {
^
Since the .pot file can be automatically generated, it hasn't been
included in the git repository so far. However, we're planning[1] to
start using Fedora's Weblate translation service, and it requires the
.pot file to be in the repository.
[1] https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/785
In traditional packages, including 'pavucontrol' here is redundant with
Exec. However, only the first field of Exec is used as a search key,
and in the Flatpak the first field is 'flatpak'. I often search for
'pavucontrol' and fail to find the app as a result.
All the others are terms that seem relevant to finding this app. Most of
them are borrowed from gnome-control-center's sound panel's .desktop
file.
The old logic disabled the expander always when a sink didn't have any
ports. That's bad if the sink has no ports but supports configuring
formats. That hasn't caused problems so far, but I have a patch for
module-null-sink that will enable format configuration support, and the
null sink has no ports, so it's affected by this issue.
This patch also changes things so that the expander is completely hidden
when it's disabled instead just setting it non-sensitive. I think that's
better (at least it saves some space).
The updating flag is used to determine whether a change in some UI
control state is due to a user action or an update from the server. The
flag was set to false too early when processing sink and source updates
from the server. This caused at least unnecessary "set port" commands,
because each update refreshes the port list, which generates change
events in the port list combo box, causing the portChanged callbacks to
be called.
The unnecessary "set port" commands could even confuse the automatic
port selection policies in the server. If the current port wasn't
originally explicitly chosen by the user, then the "set port" command
from pavucontrol will make the server think that the user explicitly
chose that port.
If load_icon() fails, we treat the icon name as a file path and try to
load an image from the path. In case that works, we need to ensure that
the has correct size. Previously that wasn't done, which led to too
large icons.
scale_simple() doesn't do anything if the image is already the correct
size, so we can call it unconditionally.
The exception handling was a bit weird in that the exception types
didn't match the documentation of IconTheme::load_icon() and
Image::set(). I updated the exception types (Image::set() doesn't need
exception handling any more, because now it's called with a Pixbuf
rather than a file name).
Fixes: https://gitlab.freedesktop.org/pulseaudio/pavucontrol/issues/60