As mutter now has removed the legacy monitor config system and the
associated property on org.gnome.Mutter.DisplayConfig, also remove the
support from gnome-control-center.
https://bugzilla.gnome.org/show_bug.cgi?id=777732
While it isn't possible, or even advisable, to make all the list
box rows the same height, using a number of standard heights will
make the control center feel more harmoneous.
Adust the height of the list box rows in Color, Date & Time,
Mouse & Touchpad, Network, Privacy, Region & Language, Sharing
and Universal Access. Makes standard rows that contain labels
and/or controls 58px tall. Some other rows, such as those which
contain two lines of text, are allowed to be taller.
https://bugzilla.gnome.org/show_bug.cgi?id=786384
Ensure that the vertical spacing inside each panel is similar.
This makes the transition between each panel smoother and makes
the control center feel more cohesive.
Settings panels are given 32px above and below their content
and 32px vertical space between major sections. 12px space is
placed below headings.
Bluetooth, displays and printers are not addressed.
https://bugzilla.gnome.org/show_bug.cgi?id=786384
The search and notification panels have similar list rows,
as they both list applications. This gives the list rows more
consistent layouts - application icons are made to be 32px
throughout and row heights are made to be the same.
Note that the row widths are unfortunately still different.
https://bugzilla.gnome.org/show_bug.cgi?id=786384
The Online Accounts panel supports two commands: 'add'
and 'show-account'. The 'add' command must receive an
additional parameter, the 'provider' name, and an
optional 'preseed' parameter.
In the past, Settings would just push all the parameters
to a GVariant and pass to the panels. Now, however, it
skips the first one, making the parameter parsing code
in Online Accounts panel wrong.
This patch fix that by refactoring add_account() code,
and fixing the GVariant parameter parsing.
The panel owns both the GtkDialog, and the GoaProvider that is used
with the dialog during goa_provider_add_account. When the panel is
destroyed, it drops its references to the provider but not the dialog,
which is a separate top-level widget. Therefore, if the panel is
switched while the WebKitWebView inside the dialog was still
navigating across pages, then WebKitWebView::decide-policy will be
called with an invalid provider.
To avoid this, and a memory leak, the panel should also destroy the
dialog when it is itself getting destructed.
Note that since the GtkDialog is a template child, it must be
destroyed in dispose. GtkWidget's (ie. the panel's) default default
destroy signal handler NULLifies all template children pointers, so
finalize is too late.
https://bugzilla.gnome.org/show_bug.cgi?id=782043
The panel owns both the GtkDialog, and the GoaProvider that is used
with the dialog during goa_provider_add_account. When the panel is
destroyed, it drops its references to the provider but not the dialog,
which is a separate top-level widget. Therefore, if the panel is
switched while the WebKitWebView inside the dialog was still
navigating across pages, then WebKitWebView::decide-policy will be
called with an invalid provider.
To avoid this, and a memory leak, the panel should also destroy the
dialog when it is itself getting destructed.
https://bugzilla.gnome.org/show_bug.cgi?id=782043
When the asynchronous operation is finished in the Color
panel, the user may potentially have already changed to
another panel, making the CcColorPanel reference invalid.
In the callback, the first thing that is done is casting
(and type-checking) the CcColorPanel pointer, causing
a segmentation fault.
Fix that by only casting anything after checking the result
of the asynchronous call.
https://bugzilla.gnome.org/show_bug.cgi?id=786096
The background chooser dialog behavior was modeled against
a fixed-size, unmaximizable window, and makes some assumptions
that doesn't work well on the new layout.
Fix that by always setting 3 columns, and adjusting the dialog
height according to the transient parent.
Instead of using a callback on size-allocate, and setting
a custom size request. Using a sizegroup is much cleaner
and avoid some potential issues we could have in the future.
When passing --overview, Settings' new shell window accidentally
removes the newly selected panel.
We're considering the possibility of adding an overview page but,
since that won't happen for the next release, let's just make sure
something happens for now.
Fix that by simply changing the panel list view, which selects the
Wi-Fi panel if the user was in another view.
https://bugzilla.gnome.org/show_bug.cgi?id=786117
With the new settings shell, a larger window makes it easier to
navigate the different panels and shows more content from each
panel, reducing the need to scroll.
https://bugzilla.gnome.org/show_bug.cgi?id=786328
When the user launches Settings with a panel passed
as argument, the following things happen:
1. The Wi-Fi panel starts loading.
2. The command line arguments are passed and the given
panel is activated.
3. The Wi-Fi panel cancels the loading routine, and
rfkill_proxy_acquired_cb() is called with the GError
set as G_IO_ERROR_CANCELLED.
4. Crash in rfkill_proxy_acquired_cb().
The crash is caused because, when rfkill_proxy_acquired_cb()
is called, the CcWifiPanel instance isn't valid anymore. And
yet, the code tries to cast 'gpointer user_data' to a
CcWifiPanel pointer.
Fix that by only trying to cast anything after parsing the
GError set by the callback.
The current Background panel was designed and architectured
for a fixed size, non resizable window. As such, it has a
few quirks that does not scale well with the new shell.
Fix that by rearchitecturing the Background panel hierarchy,
removing the deprecated widgets and simplifying the overall
hierarchy of widgets.