The set_background() function changes settings, and even though the
underlying GSettings are set to `delay-apply`, every change still fires
a "changed" callback. This results in many intermediate and
unnecessary calls to on_settings_changed().
Fix this by blocking that callback during the set_background() calls,
and manually doing a single on_settings_changed().
The checkmark indicating the active background based on GtkFlowBox
selection does not work when changing the selection with the arrow keys.
Moreover, it is not set when the panel opens.
We fix this by sending the active CcBackgroundItem to the chooser, so
that it can add an "active-item" CSS class to the true active item.
Fixes#1756#2505
Manually tracking which properties are set on a CcBackgroundItem is only
properly done in the background XML loader. Doing this manually is
error-prone and should instead be done inside the relevant property
setters. That would avoid forgetting to set some of the flags, which is
especially relevant for comparing two background items.
This adds automatic setting of background item flags to fix this.
When colored backgrounds were a thing, these where set with style
G_DESKTOP_BACKGROUND_STYLE_NONE. Presumably, changes to these
backgrounds were stored in a local XML file.
Since the colored backgrounds were removed, let's also remove the code
tracking these colored background changes.
- refresh the symbolic icons to sync some style changes and update the source sheet
- rename assets for the privacy subpanel's symbolic icons
- delete deprecated/unused symbolic icons
- add new icon for system panel
- add new icon for remote desktop so it isn't using displays icons
Using `g_clear_handle_id()` in combination with `g_source_remove()` can
save a lot of boiler plate code.
This removes about 110 lines of code for free.
The ability to choose solid colored backgrounds has been removed at
least 4 years ago, so let's remove the code for it too.
Furthermore, we slightly refactor some code to make it easier to
understand and fit better to the usual style.
Because the CcBackgroundPaintable is now reusable, it can be used inside
the preview. This allows removing lots of code, since the drawing is now
done by the paintable. Because the scale factor was previously not
handled properly, this change makes the preview much sharper on scale
factors > 1.
Fixes#704
To make the CcBackgroundPaintable fully reusable, it has to know the
desired thumbnail size and the thumbnail factory. We add a width and
height property, and modify the thumbnail retrieval of CcBackgroundItem
to use the scale factor now.
This also allows us to greatly simplify the background sources, so that
they now only do one thing: provide CcBackgroundItems from different
sources.
We keep the fixed thumbnail height and width for the chooser, which
makes more sense now that it is in the chooser code instead of the
background source code.
In order to make the CcBackgroundPaintable more reusable, the way it
draws itself either light, dark, or both needs to be adjustable. We
therefore introduce CcBackgroundPaintFlags that indicate the desired
drawing behavior.
The size of the background item is currently never used, but setting it
using `gnome_bg_get_image_size ()` is expensive, since that actually
does a thumbnail retrieval.
Instead, we can retrieve the size of the background file directly,
improving the rendering performance of the chooser significantly.
Since 7cef6dc5, the background previews are rendered at the full
resolution. However, this is expensive and causes considerable lag,
especially for resizes. Since then, the thumbnail size has doubled to
256 pixels, making the previews sharper even at larger sizes.
So, to improve performance, let's effectively revert 7cef6dc5. The
revert is not possible without disabling frame = 0 retrieval, since that
is broken for non-slideshow backgrounds and was not used before anyways
with force_size = TRUE.
Related to #674
Related to #704
Related to #2448
Meson extracts them by itself and add them as dependencies for the target.
It means one less location to keep track of files, and a lot less boilerplate
around the meson files
- Clarify that 'mm-glib' dep is for ModemManager (not Network
Manager which is below). The comment also helps people
which may confuse it with glibmm library.
- Fix following Meson warning about two deprecated functions:
WARNING: Deprecated features used:
* 0.56.0: {'dependency.get_pkgconfig_variable', 'meson.source_root'}
If a user chooses the default background in control-center, then
they still end up with a change in dconf. This change means that
on upgrades, they'll keep the old distro background configured.
That's probably unexpected and may lead them to believe the upgrade
didn't work.
This commit checks if the user goes back to the distro defaults and
clears out dconf in that case, so that when the disto defaults change
they get the new defaults.
The `X-GNOME-Bugzilla-*` entries were for use by bug-buddy, a GNOME 2
technology that's been gone for over a decade. These entries are
obsolete and can be removed from all desktop files.
The `X-GNOME-Settings-Panel` entry is also obsolete as far as I can
tell and only these panels had it in their desktop file: notifications,
sharing, sound and user-accounts. These entries can also be removed.
After removing the `X-GNOME-Bugzilla-*` entries, the desktop files have
no more variables in them. The meson `configure_file` step is therefor
pointless—there are no variables to configure. As such the
`*.desktop.in.in` files are renamed to `*.desktop.in` to reflect this
and `meson.build` files are modified to remove `configure_file` step.
Commit d2474bf0 ("background: revert false indentation") fixed a warning
which sprung from improper indentation of a function call. To comply
with project style, the parameter list's indentation must also be
adjusted. This issue was pointed out by Georges (@fearanon).
This patch changes the indentation of the parameters in compliance.
Commit 46673670 ("Fix indentation") indented lines 160-163 of
cc-background-chooser.c to make them seem as if they were part of the
associated if statement. However, they are not, which causes confusion
as to the intention of the code. It appears as if the
gtk_accessible_update_property call is executed upon button being non-
null, but it is always executed due to the lack of an if block. For
clarity, and to resolve a compiler warning, this patch should be
reverted.
This patch reverts 46673670, changing the indentation back correctly.
This was mentioned in #1902 and received no objections, including
approval from Lukas.
Turns out drawing the whole light wallpaper and then half of the dark
wallpaper on top of it is leading to a case of
https://gitlab.gnome.org/GNOME/gtk/-/issues/3840
Draw half of each instead, so they don't overlap.
GtkWidget:text-direction doesn't exist. That's why we connect to the
::direction-changed signal instead, and this property binding was
just a leftover from c5792cfb00.