Commit graph

74 commits

Author SHA1 Message Date
Michael Catanzaro
88f9c7991c network: fix sensitivity of DNS and route configuration widgets
When the IP method is "disabled" or "shared" then everything else is
supposed to be insensitive. This currently fails if you toggle between
the two, because it's implemented using property bindings that are just
not smart enough to handle this task. Handle sensitivity only in
method_changed() to avoid this.

Additionally, not all of the widgets are being consistently
disabled/enabled when appropriate. E.g. when the method is "local" then
only the DNS entry, route entries, and default route checkboxes become
insensitive, leaving the other widgets, including notably the Automatic
switches, sensitive. They should all become insensitive, as when the
method is "disabled" or "shared." Fix this by organizing all the related
widgets into boxes and setting the sensitivity of the entire box. (Note
the strategy followed here does not exactly match nm-connection-editor,
which always allows editing addresses. We only allow that in Manual
mode. I'm not sure if this is advisable or not, so won't touch that.)

Finally, the Automatic DNS and Automatic Routes toggles should only be
sensitive when the method is "Automatic".
2023-10-27 12:56:27 +00:00
Michael Catanzaro
0e8d8e7407 network: warn user if both automatic and manual DNS is configured
If you manually configure a DNS server, you probably don't want to also
receive DNS from DHCP. Warn the user about this.

This is a softer replacement for the fix from:

https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/1914

which we found in #2617 broke imported Wireguard connections.
2023-10-27 12:56:27 +00:00
Michael Catanzaro
48d0aed598 network: unset DNS entry errors when entry is empty
When the entry is initially empty, there is no error. If you enter
anything and then delete it, the entry is left in the error state. Empty
should not be an error.
2023-10-27 12:56:27 +00:00
Michael Catanzaro
08bff2ee18 Revert "network: Disable DNS entry if the automatic option is enabled"
This reverts commit 8a4a80b7b2.

This is a manual revert, because the code changed considerably in
a2b9620b1b. Anyway, although this seemed
like a good idea, problem is it clobbers the original state of the
connection without any explicit user action if the connection is
configured to use both manual and auto DNS. And this happens in practice
for imported Wireguard connections, which uselessly have auto DNS
enabled due to this NetworkManager bug:

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1399

Additional discussion:

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1745#note_2112420

The simplest solution is to not try to prevent the user from configuring
both manual and auto DNS. Instead, let's just warn the user that this
configuration may not be intended in a follow-up commit.

Fixes #2617
2023-10-27 12:56:27 +00:00
velsinki
ef644deb3d network-connection-editor: Align Routes labels
Even though the routes_metric_label is in a GtkSizeGroup with the
GtkEntry for the metric, its size was set too big after adding the entry
to the size group. To fix this, add all the other labels and
corresponding entries to size groups as well. The hexpand can then be
removed as well on the labels.

Fixes #1235
2023-10-27 00:54:55 +00:00
Marco Melorio
7363ca800e network: Fix "Missing initializer for field" warning 2023-10-12 10:09:44 +02:00
Pablo Correa Gómez
a2b9620b1b network: keep track of radio buttons in connection editor with action
Hooking to all the toggled signals from all the buttons for executing
the same action is inneficient, and can potenticall end up in a segmentation
 fault due to some race in the signal emmission, where the active button
 gets deactivated before the clicked button is activated

Looking at the GTK4 code, in a radio group:

- The button which was previously active gets de-activated, emitting its
corresponding toggled signal.
- The active property for the clicked button gets set.
- The clicked button emits its toggled signal.

Therefore, if the first toggle signal gets processed before the active
property is set, there can be a race condition. We are seeing this downstream
at pmOS: https://gitlab.com/postmarketOS/pmaports/-/issues/1816

Instead of this racy behavior, follow upstream recommendation and keep track
of the state through a stateful signal.
2023-05-24 08:54:06 +00:00
Aryan Kaushik
8a4a80b7b2 network: Disable DNS entry if the automatic option is enabled
Fixes: #2243
2023-02-07 22:51:45 +00:00
Lukáš Tyrychtr
861d762ce5 Address review feedback 2022-05-10 21:26:05 +00:00
Lukáš Tyrychtr
3151598aef Make the network settings panel more screen reader friendly 2022-05-10 21:26:05 +00:00
Georges Basile Stavracas Neto
efbad6eb50 network: Port to GTK4
Boy this was hard.

To ease the pain of porting wireless-security to GTK4, add
a new WsFileChooserButton class that mimics the behavior of
a button that triggers a filechooser, as per the migration
guide suggests.

There were lots of GtkGrids, so the diff is particularly
horrendous. Sorry.

This needs serious testing before landing.
2021-12-14 22:34:21 -03:00
Carlos Garnacho
6524c9a529 network: Make IPv4/v6 pages drive the scrolledwindow adjustments
Those 2 pages in the connection editor dialog are scrollable, but don't
hook focus changes so they drive the adjustments. Make them do so.
2021-05-07 04:06:35 +00:00
Igor Raits
f966c99409 network/connection-editor: Fixup creation of the netmask widget
Fixes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1274
Signed-off-by: Igor Raits <igor.raits@gmail.com>
2021-03-09 00:43:08 +00:00
Robert Ancell
d79fa68fbc network: Make CENetmaskEntry 2020-12-11 19:06:48 +00:00
Robert Ancell
c1a13ccaba network: Make CEIPAddressEntry 2020-12-11 19:06:48 +00:00
Robert Ancell
c9ea93f195 network: Use g_autoptr with GList 2020-12-11 19:06:48 +00:00
Robert Ancell
fbaa9cb607 network: Remove logic checking visibility of always visibile widget 2020-12-11 19:06:48 +00:00
Robert Ancell
53c9d4999f network: Remove unused sort function.
Nothing was setting the "first" or "last" data used in the sort.
2020-07-19 23:27:30 +00:00
Felix Riemann
cd3fa0195b network: Fix connection editor blanking when removing manual entry
To delete a manual entry row (IP addresses or routes) the remove_row
function started walking the widget hierarchy at the connection editor
widget. This caused the entire dialog box getting removed. Begin at the
GtkButton instead to actually remove the corresponding line.

Fixes #972.
2020-07-16 21:05:23 +00:00
Robert Ancell
5b14e16e9c network: Connect signals with g_signal_connect_object in swapped form 2020-03-30 16:18:50 +13:00
Robert Ancell
e9973011b1 network: Remove unused enum 2019-11-13 15:12:46 +13:00
Carlo Caione
dfb54d0cad network: Add option for connection sharing
Introduce a new IP{4,6} config method to allow sharing the default
network (usually the Internet) through the wired interface.
This is needed because the control-panel is lacking this feature backed
by nm and currently the only way to enable the connection sharing is by
using nm-connection-editor.
2019-11-13 15:12:01 +13:00
Carlo Caione
408f2775ec network: cleanup: Rework disabled toggle button
The disable toggle button isn't special and there is no real need for it
to not be managed as all the other radio buttons.
2019-11-13 15:10:48 +13:00
Carlo Caione
5bcbe07299 network: cleanup: Avoid toggling button twice
After checking the method property of the connection settings we set the
disabled toggle button twice. One is enough.
2019-11-13 14:55:08 +13:00
Robert Ancell
eb0bac874c network: Convert CEPage widgets to GtkTemplate 2019-11-06 22:04:15 +13:00
Robert Ancell
9759121e7f network: Convert CEPage from a class to an interface 2019-11-06 22:04:15 +13:00
Robert Ancell
eb7372d83b network: Move connection reference outside of CEPage 2019-11-06 22:04:15 +13:00
Robert Ancell
d46579144e network: Move GtkBuilder code from CEPage to its subclasses 2019-11-06 16:41:34 +13:00
Robert Ancell
eb4e124b04 network: Get connection editor root widget from a virtual method 2019-11-06 16:36:55 +13:00
Robert Ancell
f5949160c3 network: Move class property inside the two subclasses that use it 2019-11-06 16:36:55 +13:00
Robert Ancell
d327e20a10 network: Replace GObject boilerplate with modern macros 2019-11-06 16:36:06 +13:00
Robert Ancell
0106a4ab90 network: Convert class property to a virtual method 2019-11-06 16:36:06 +13:00
Robert Ancell
413f23ec99 network: Rename virtual method to standard names 2019-11-06 16:33:07 +13:00
Robert Ancell
708b1fdaf7 network: Use self variable name consistently 2019-10-22 20:11:45 +00:00
Robert Ancell
8b6e3fb736 network: Store widgets inside objects
This is a step towards replacing GtkBuilder with GtkTemplate
2019-10-22 20:11:45 +00:00
Robert Ancell
b331d75df5 network: Rename widget IDs to standard names 2019-10-22 20:11:45 +00:00
Robert Ancell
54f8fce47f network: Connect signals in swapped form 2019-10-22 20:11:44 +00:00
Robert Ancell
de84f7e344 network: Use g_autofree for strings 2019-09-13 14:20:50 +12:00
Benjamin Berg
c2f601a9d4 Move common panel code from shell/ to panel/common
This creates a new static library called libwidget which the shell links
against.
2018-04-17 15:26:59 +02:00
Bastien Nocera
c50d1adb0f network: Don't warn when setting empty IPv4 gateway
Set an empty string when there's no IPv4 gateway rather than warn.
2018-02-06 11:11:56 +01:00
Georges Basile Stavracas Neto
1d0757d288 network: Use a table-like widget in address editor
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.png

https://bugzilla.gnome.org/show_bug.cgi?id=779841
2017-08-09 19:34:03 +02:00
Georges Basile Stavracas Neto
08657fac44 network: Use a table-like widget to edit routes
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.png

https://bugzilla.gnome.org/show_bug.cgi?id=779841
2017-08-09 19:34:03 +02:00
Georges Basile Stavracas Neto
2e570099f6 network: Simplify DNS management in connection editor
When editing the DNS servers of a given connection, a simple
entry is enough to display and edit the DNS servers. The user
can separate IP addresses with commas. This is exemplified
by the mockup at [1].

This, however, is not the current implementation, which uses
a combination of listbox rows, entries and buttons to manage
that with added complexity.

Fix that by using an entry to handle the DNS servers.

[1] https://raw.githubusercontent.com/gnome-design-team/gnome-mockups/master/system-settings/network/aday2/network-wires.png

https://bugzilla.gnome.org/show_bug.cgi?id=779841
2017-08-09 19:34:03 +02:00
Georges Basile Stavracas Neto
8f78b27299 network: Use radio buttons instead of a combobox in IP pages
Per the latest mockups [1], the IP pages use a set of four radio
buttons to control the method, rather than a switch + a combobox,
which is what the current implementation uses.

This patch, then, adapts the IP pages of the connection editor
dialog to use a set of radio buttons at the top of the page.

[1] https://raw.githubusercontent.com/gnome-design-team/gnome-mockups/master/system-settings/network/aday2/network-wires.png

https://bugzilla.gnome.org/show_bug.cgi?id=779841
2017-06-14 16:41:10 -03:00
Andreas Henriksson
bb4b83360b network: drop unneeded null-check for ip4 address
The pointer has already been dereferenced. Might have made more sense
to check if it's the empty string and treat that as error, but
nm_utils_ipaddr_valid also returns error on empty string so lets just
rely on the utility function doing the right thing here.

https://bugzilla.gnome.org/show_bug.cgi?id=708500
2016-11-11 17:55:04 +01:00
Andreas Henriksson
898d0aa4e9 network: allow empty ip4 default gateway
Null-checking the text_gateway makes no sense as it has already been
dereferenced earlier. Instead check if it's the empty string and
treat that as not-an-error. Also prevent the empty string from
being set in default_gateway.

https://bugzilla.gnome.org/show_bug.cgi?id=708500
2016-11-11 17:55:04 +01:00
Bastien Nocera
7dfc6a6c23 network: Fix application of the default gateway
Now that we ensured that only the first address has a gateway entry,
read it and apply it.

See https://bugzilla.gnome.org/show_bug.cgi?id=765969

https://bugzilla.gnome.org/show_bug.cgi?id=771515
2016-09-20 10:30:27 +02:00
Bastien Nocera
d28ffc9902 network: Fix gateway entry visibility
From https://bugzilla.gnome.org/show_bug.cgi?id=765969 as explained by
Dan Winship:
"
libnm-util/libnm-glib had a buggy data model, which nm-connection-editor
(and then gnome-control-center) copied, in which each manually-configured
IP address has an associated gateway address. In reality, NM always just
took the first non-empty gateway value from the address array, and
completely ignored any other gateway values.
libnm represents this more accurately, by having a single gateway
value which is separate from the address array. Ideally, the editors should
show it this way as well (eg, like nmtui does). Failing that, it would
be nice to at least make it so that only the first row in the address
table can have a non-empty gateway value.
"

We went for the second option, only showing a gateway entry for the
first address in the list.

This isn't related to route-specific gateway addresses.

https://bugzilla.gnome.org/show_bug.cgi?id=765969
2016-09-20 10:30:27 +02:00
Bastien Nocera
ab2b13cacd network: Fix compilation warnings
Those come from the fixes made in commits 981c354 and 7f601cf.

https://bugzilla.gnome.org/show_bug.cgi?id=771538
2016-09-20 10:30:27 +02:00
Bastien Nocera
da7be92093 network: Fix warning when opening IPv4 connection editor
https://bugzilla.gnome.org/show_bug.cgi?id=771515
2016-09-20 10:30:27 +02:00