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.
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.
According to the latest mockups for the connection editor dialog [1],
the IPv4 and IPv6 pages are supposed to use a table-like editor to
manage the addresses, in a similar fashion of what was done to the
routes editor. This way of editing is not only easier to comprehend,
but also improves the size of the dialog, requiring much less vertical
space to present the routes.
The current implementation, however, uses a vertical layout and a toolbar,
which is inefficient in its usage of space.
Fix that by implementing the table-like editor widget, both in IPv4
and IPv6 pages.
[1] https://raw.githubusercontent.com/gnome-design-team/gnome-mockups/master/system-settings/network/aday2/network-wires.pnghttps://bugzilla.gnome.org/show_bug.cgi?id=779841
According to the latest mockups for the connection editor dialog [1],
the IPv4 and IPv6 pages are supposed to use a table-like editor to
manage the routes. This editor is not only easier to comprehend, but
also improves the size of the dialog, requiring much less vertical
space to present the routes.
The current implementation, however, uses a vertical layout and a toolbar,
which is inefficient in its usage of space.
Fix that by implementing the table-like editor widget, both in IPv4
and IPv6 pages.
[1] https://raw.githubusercontent.com/gnome-design-team/gnome-mockups/master/system-settings/network/aday2/network-wires.pnghttps://bugzilla.gnome.org/show_bug.cgi?id=779841
Following the design decision on other panels, make the central
column of the Network panel cover at most a third of the window,
or more depending on the width of the window.
https://bugzilla.gnome.org/show_bug.cgi?id=785581
The last remaining network device to be updated is
the VPN device, and this patch is the result of this
effort.
The changes were mostly towards cleaning up and
removing unecessary code. By removing the info labels,
many getters were removed as well.
In order to achieve a listbox-like UI, a couple of
UI refactorings.
https://bugzilla.gnome.org/show_bug.cgi?id=785581
Since each VPN will be a row in a listbox, we
can't rely on NetVPN:add_to_stack() to handle
the header.
This header must, then, be handled by the panel
itself. For now, we just open the already available
dialog to add connections, when the ideal approach
(to be implemented yet) is to move the contents
of this dialog in a built-in popover.
https://bugzilla.gnome.org/show_bug.cgi?id=785581
According to the lastest mockups [1], the Proxy section is now
composed of a row with the state of the proxy, and a settings
button that leads to a dialog where one can configure the different
proxy settings.
This commit ports the current code to do that, and various changes
took place to made this happen. Namely:
* A new ProxyMode enum was added to improve readability and
improve the semantic of the code. No more random numbers
are present.
* The current widgets for editing proxy settings were repacked
into a GtkStack (so that we keep an homogeneous sizing), and
the GtkStack itself was moved into a new dialog. With that,
we can just set the stack page, rather than controlling the
visibility of all individual widgets.
* Many unused widgets were removed.
* The combo box was replaced by 3 radio buttons. Now, there's
no need to deal with GtkTreeIters anymore. Another refactoring
of the code that led to more readable and smaller code.
Overall, these changes made the code be more readable, smaller
codebase with a smaller surface for mistakes.
https://bugzilla.gnome.org/show_bug.cgi?id=785581
When calling for the wireless security widgets, the code
simply assumes that the corresponding GType is initialized.
This may not always be true, which leads to a nasty crash
every time e.g. we open the network connection editor dialog.
This commit fixes that by introducing a new standard macro
wrapping wireless_security_get_type(), and ensuring the type
is initializing when calling wireless_security_init(), thus
protecting every code path from this crash.
This commit also makes CePageSecurity use the new macro for
better legibility.
https://bugzilla.gnome.org/show_bug.cgi?id=785581
The current "Wired" section UI is still optimized for
the old, multi-page panel layout. Recent work [1],
however, suggest that this should change and the standard
widgets be rearranged.
This commit, then, implements this new UI for the wired
devices UI by using a listbox row when there's only one
profile (ditching out the old info labels), and moving
and deleting the bottom action buttons.
https://bugzilla.gnome.org/show_bug.cgi?id=785581
After introducing the new single-column layout,
we can easily hit the case where there are too
many connections and/or devices and the panel
gets way too tall.
To fix that, wrap all the widgets inside a
scrolled window that only scrolls vertically.
https://bugzilla.gnome.org/show_bug.cgi?id=785581
The current Network panel is composed of a single stack and
a treeview to select the currently visible stack page. Each
stack page represents a connection or device.
The new Network panel, however, has none of the concept of
selectable pages. In the new layout, all connections and
devices appear all at once in a more compact and simpler
fashion.
This commit, then, starts moving towards a unified, pageless
panel by adding all the connections and devices to different
stacks. These different stacks are transient to the network
object, and are added at appropriate boxes, giving the panel
a unified layout.
This has some serious implications in the design of the
current code. Most of the code removals were related to the
treeview and different pages handling. No more tree model
madness is present, and the devices are now stored in a
plain simple GPtrArray.
After this patch, NetObject:add_to_stack isn't a good code
design choice anymore. This will be addressed in a future
patch.
https://bugzilla.gnome.org/show_bug.cgi?id=785581
This implements most of the new Display panel re-design by Allan
Day.
Left out for now is brightness setting which still is in the
Power panel because the plumbing layers don't yet associate backlights
with outputs.
Also left out is the presentation mode and trimming of options due to
hardware constraints since we don't have a mutter implementation for
those yet.
https://bugzilla.gnome.org/show_bug.cgi?id=785949
Multiple translations erroneously listed Toronto as "Tortola". There is
a city named Tortola, and appears as the next city in these records.
But in none of these languages is Tortola a translation of Toronto.
https://bugzilla.gnome.org/show_bug.cgi?id=785922
The current Network panel class relies on GtkBuilder
when it could use a more modern feature that is the
template class.
By making it a template class, not only the Network
panel is slightly more performant, but it's also
simpler and easier to read.
This commit, then, turns the Network panel into a
template class, and cleans up the code to make it
work.
https://bugzilla.gnome.org/show_bug.cgi?id=785581
The Network panel UI file uses deprecated widgets and
has many lines of needless code. This commit just cleans
it up, as a preparation for turning the Network panel
into a template class.
https://bugzilla.gnome.org/show_bug.cgi?id=785581
The Network panel is not really a deriverable type, and
since after 61d7abe795 we can use the
utility macros.
Thus, this commit removes all the boilerplate code and
turns CcNetworkPanel into a final class.
https://bugzilla.gnome.org/show_bug.cgi?id=785581
The Network panel does not deal with Wi-Fi devices anymore,
and does not make sense to have the Airplane Mode switch in
there, since it is now available at the Wi-Fi panel.
This commit then removes the Airplane Mode switch from the
Network panel.
https://bugzilla.gnome.org/show_bug.cgi?id=785581
All the new panels have a standard 24px margin now, so
since we're already splitting the info pages into separate
panels, also fix this minor annoyance.
https://bugzilla.gnome.org/show_bug.cgi?id=779216
For shortcuts that support multiple bindings, the disabled state is
expressed as an empty list rather than a list with a single empty
element. While the latter certainly works as expected as far as the
actual keybinding is concerned, the shortcut will show up as modified
even if it is disabled by default. Explicitly setting bindings to the
empty list when a shortcut is disabled fixes this.
https://bugzilla.gnome.org/show_bug.cgi?id=784620
We just present the printer "Model" when printer_make_and_model
is different than NULL OR not an empty string.
We were using the wrong logic operator in the conditional that
toggles the visibility of this info.
The glory moment has come. The new Wi-Fi panel is finally
introduced using a different code style from the rest of
the Network panel, since Control Center itself is written
using the GTK+ C code style.
The Wi-Fi panel uses modern GTK+ features like template
classes and new widgets. The files are stored together
with the Network panel so that we can reuse the abstraction
layer that the Network panel has to manage devices.
https://bugzilla.gnome.org/show_bug.cgi?id=784818