Commit graph

68 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
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
f1d892f46b network: Fix logic in showing IP6 route metric.
The logic was inverted and ensured the value was always <= 0.
2020-08-07 03:40:01 +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
Robert Ancell
36196e422f network: Fix broken logic
Was introduced in ed15c1a2f0
2020-07-17 13:39:30 +12:00
Michael Catanzaro
d055c4de5c Fix -Wimplicit-function-declaration in previous commit
Dumb mistake, sorry. Follow up to !791
2020-07-16 18:59:22 -05:00
Michael Catanzaro
ed15c1a2f0 Fix setting to disable IPv6
The setting to disable IPv6 did not actually work. Instead, it just
caused NetworkManager to ignore IPv6 entirely. From the libnm
documentation of NM_SETTING_IP6_CONFIG_METHOD_IGNORE: "IPv6 is not
required or is handled by some other mechanism, and NetworkManager
should not configure IPv6 for this connection." It's just the wrong enum
to use here.

I considered adding a new radio button to use the older ignore setting,
but it doesn't make a ton of sense since that setting allows IPv6 to be
configured outside NetworkManager, and what is the point of exposing
graphical configuration for that? So instead, we can have the GUI change
the value from IGNORE to DISABLED if set.

Fixes #593
2020-07-16 23:41:07 +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
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
dd8b63bdeb network: Consider empty IPv6 gateway to be valid
The string we get back from the text entries are never NULL (as long as
the UI isn't broken that is), but can be empty strings. Consider an
empty IPv6 address to be invalid, but an empty gateway to be valid.

See https://bugzilla.redhat.com/show_bug.cgi?id=1467308
2018-02-06 10:46:33 +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
Bastien Nocera
a90dc605d6 network: Fix IPv6 settings not being applicable when method changes
When changing the method from Manual to Automatic, we need to clear the
gateway setting, otherwise the settings verification will fail:
ipv6.gateway: gateway cannot be set if there are no addresses configured

Another fallout of the libnm 1.2 port

https://bugzilla.gnome.org/show_bug.cgi?id=769230
2016-08-30 17:15:33 +02:00
Bastien Nocera
94e2be8ff6 network: Fix warning if IPv6 gateway is empty
GtkEntry doesn't like NULL text.

https://bugzilla.gnome.org/show_bug.cgi?id=769230
2016-08-30 17:15:33 +02:00
Bastien Nocera
dc14602e55 network: Fix saving of IPv6 gateway
https://bugzilla.gnome.org/show_bug.cgi?id=769230
2016-08-30 17:15:33 +02:00
Bastien Nocera
9183d34947 network: Port to libnm 1.2
We also remove support for WiMAX (now unsupported by NetworkManager),
and InfiniBand (Enterprise feature), and the use of
the deprecated NM_SETTING_WIRELESS_SEC property.

With help from network-manager-applet patches by Jiří Klimeš and
Dan Winship.

https://bugzilla.gnome.org/show_bug.cgi?id=765910
2016-05-27 18:23:33 +02:00
Rui Matos
c12cb21065 network: Fix a crash on IPv6 settings dialog
Commit 219a94ed1e added a
g_object_unref() on the wrong line.
2015-03-27 15:00:46 +01:00
Bastien Nocera
219a94ed1e network: Fix GtkListStore leak in IPv{4,6} dialogues
https://bugzilla.gnome.org/show_bug.cgi?id=746411
2015-03-19 16:32:44 +01:00