600 lines
30 KiB
Diff
600 lines
30 KiB
Diff
From ecc4b3d0f021012a5f46bb7852bb85cc314468b9 Mon Sep 17 00:00:00 2001
|
|
From: Felipe Borges <felipeborges@gnome.org>
|
|
Date: Wed, 3 Aug 2022 10:49:05 +0200
|
|
Subject: [PATCH] network: Split airplane-mode widget off main Wi-Fi panel
|
|
stack
|
|
|
|
The airplane-mode widget (rfkill_widget) on the wifi panel was part
|
|
of the "wifi-connections" stack page, and it would get hidden
|
|
whenever the panel switched to another page ("nm-not-running" or
|
|
"no-wifi-devices").
|
|
|
|
This way, whenever a user would turn airplane-mode ON, the panel
|
|
would disable wifi and set the main stack page to "no-wifi-devices",
|
|
making the airplane-mode widget inaccessible, preventing users from
|
|
turning airplane-mode OFF in gnome-control-center.
|
|
|
|
These changes reorganize the widget hierarchy as such that the
|
|
airplane-mode widget is now above the main stack and will persist
|
|
visible as the main stack changes.
|
|
---
|
|
panels/network/cc-wifi-panel.c | 17 ++
|
|
panels/network/wifi.ui | 464 +++++++++++++++++----------------
|
|
2 files changed, 255 insertions(+), 226 deletions(-)
|
|
|
|
diff --git a/panels/network/cc-wifi-panel.c b/panels/network/cc-wifi-panel.c
|
|
index 2c1cd17b7..989506c6a 100644
|
|
--- a/panels/network/cc-wifi-panel.c
|
|
+++ b/panels/network/cc-wifi-panel.c
|
|
@@ -411,6 +411,17 @@ wireless_enabled_cb (NMClient *client,
|
|
check_main_stack_page (self);
|
|
}
|
|
|
|
+static void
|
|
+on_rfkill_proxy_properties_changed_cb (GDBusProxy *proxy,
|
|
+ GVariant *changed_properties,
|
|
+ GStrv invalidated_properties,
|
|
+ CcWifiPanel *self)
|
|
+{
|
|
+ g_debug ("Rfkill properties changed");
|
|
+
|
|
+ sync_airplane_mode_switch (self);
|
|
+}
|
|
+
|
|
static void
|
|
rfkill_proxy_acquired_cb (GObject *source_object,
|
|
GAsyncResult *res,
|
|
@@ -436,6 +447,12 @@ rfkill_proxy_acquired_cb (GObject *source_object,
|
|
|
|
self->rfkill_proxy = proxy;
|
|
|
|
+ g_signal_connect_object (proxy,
|
|
+ "g-properties-changed",
|
|
+ G_CALLBACK (on_rfkill_proxy_properties_changed_cb),
|
|
+ self,
|
|
+ 0);
|
|
+
|
|
sync_airplane_mode_switch (self);
|
|
}
|
|
|
|
diff --git a/panels/network/wifi.ui b/panels/network/wifi.ui
|
|
index a3eab3889..c0f8a06b1 100644
|
|
--- a/panels/network/wifi.ui
|
|
+++ b/panels/network/wifi.ui
|
|
@@ -4,294 +4,306 @@
|
|
<template class="CcWifiPanel" parent="CcPanel">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
+
|
|
<child>
|
|
- <object class="GtkStack" id="main_stack">
|
|
+ <object class="GtkScrolledWindow">
|
|
<property name="visible">True</property>
|
|
<property name="can-focus">False</property>
|
|
- <property name="homogeneous">False</property>
|
|
- <property name="transition_type">crossfade</property>
|
|
-
|
|
- <!-- "No Wi-Fi Adapter" page -->
|
|
+ <property name="hscrollbar-policy">never</property>
|
|
<child>
|
|
- <object class="GtkBox">
|
|
+ <object class="GtkViewport">
|
|
<property name="visible">True</property>
|
|
- <property name="can_focus">False</property>
|
|
- <property name="expand">True</property>
|
|
- <property name="halign">center</property>
|
|
- <property name="valign">center</property>
|
|
- <property name="orientation">vertical</property>
|
|
- <child>
|
|
- <object class="GtkImage">
|
|
- <property name="visible">True</property>
|
|
- <property name="can_focus">False</property>
|
|
- <property name="icon_name">network-wireless-no-route-symbolic</property>
|
|
- <property name="pixel_size">256</property>
|
|
- <property name="margin-bottom">18</property>
|
|
- <style>
|
|
- <class name="dim-label" />
|
|
- </style>
|
|
- </object>
|
|
- </child>
|
|
- <child>
|
|
- <object class="GtkLabel">
|
|
- <property name="visible">True</property>
|
|
- <property name="can_focus">False</property>
|
|
- <property name="wrap">True</property>
|
|
- <property name="label" translatable="yes">No Wi-Fi Adapter Found</property>
|
|
- <attributes>
|
|
- <attribute name="weight" value="bold" />
|
|
- <attribute name="scale" value="1.2" />
|
|
- </attributes>
|
|
- </object>
|
|
- </child>
|
|
- <child>
|
|
- <object class="GtkLabel">
|
|
- <property name="visible">True</property>
|
|
- <property name="can_focus">False</property>
|
|
- <property name="wrap">True</property>
|
|
- <property name="label" translatable="yes">Make sure you have a Wi-Fi adapter plugged and turned on</property>
|
|
- </object>
|
|
- </child>
|
|
- </object>
|
|
- <packing>
|
|
- <property name="name">no-wifi-devices</property>
|
|
- </packing>
|
|
- </child>
|
|
+ <property name="shadow-type">none</property>
|
|
|
|
- <!-- Wi-Fi connections and devices -->
|
|
- <child>
|
|
- <object class="GtkScrolledWindow">
|
|
- <property name="visible">True</property>
|
|
- <property name="can-focus">False</property>
|
|
- <property name="hscrollbar-policy">never</property>
|
|
<child>
|
|
- <object class="GtkViewport">
|
|
+ <object class="GtkGrid">
|
|
<property name="visible">True</property>
|
|
- <property name="shadow-type">none</property>
|
|
+ <property name="border-width">32</property>
|
|
+
|
|
+ <!-- Empty boxes to enforce 1/3 width for the main widgets -->
|
|
<child>
|
|
- <object class="GtkGrid">
|
|
+ <object class="GtkBox">
|
|
<property name="visible">True</property>
|
|
- <property name="border-width">32</property>
|
|
-
|
|
- <!-- Empty boxes to enforce 1/3 width for the main widgets -->
|
|
- <child>
|
|
- <object class="GtkBox">
|
|
- <property name="visible">True</property>
|
|
- <property name="hexpand">True</property>
|
|
- </object>
|
|
- <packing>
|
|
- <property name="left-attach">0</property>
|
|
- <property name="top-attach">0</property>
|
|
- <property name="height">3</property>
|
|
- </packing>
|
|
- </child>
|
|
- <child>
|
|
- <object class="GtkBox">
|
|
- <property name="visible">True</property>
|
|
- <property name="hexpand">True</property>
|
|
- </object>
|
|
- <packing>
|
|
- <property name="left-attach">2</property>
|
|
- <property name="top-attach">0</property>
|
|
- <property name="height">3</property>
|
|
- </packing>
|
|
- </child>
|
|
+ <property name="hexpand">True</property>
|
|
+ </object>
|
|
+ <packing>
|
|
+ <property name="left-attach">0</property>
|
|
+ <property name="top-attach">0</property>
|
|
+ <property name="height">3</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ <child>
|
|
+ <object class="GtkBox">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="hexpand">True</property>
|
|
+ </object>
|
|
+ <packing>
|
|
+ <property name="left-attach">2</property>
|
|
+ <property name="top-attach">0</property>
|
|
+ <property name="height">3</property>
|
|
+ </packing>
|
|
+ </child>
|
|
|
|
- <!-- Airplane Mode -->
|
|
+ <child>
|
|
+ <!-- Airplane Mode -->
|
|
+ <object class="GtkFrame" id="rfkill_widget">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="vexpand">False</property>
|
|
+ <property name="margin_bottom">32</property>
|
|
<child>
|
|
- <object class="GtkFrame" id="rfkill_widget">
|
|
+ <object class="GtkListBox">
|
|
<property name="visible">True</property>
|
|
- <property name="vexpand">False</property>
|
|
- <property name="margin_bottom">32</property>
|
|
+ <property name="selection-mode">none</property>
|
|
<child>
|
|
- <object class="GtkListBox">
|
|
+ <object class="GtkListBoxRow">
|
|
<property name="visible">True</property>
|
|
- <property name="selection-mode">none</property>
|
|
+ <property name="can-focus">False</property>
|
|
+ <property name="activatable">False</property>
|
|
<child>
|
|
- <object class="GtkListBoxRow">
|
|
+ <object class="GtkGrid">
|
|
<property name="visible">True</property>
|
|
- <property name="can-focus">False</property>
|
|
- <property name="activatable">False</property>
|
|
+ <property name="border-width">12</property>
|
|
+ <property name="margin_left">6</property>
|
|
+ <property name="margin_right">6</property>
|
|
+ <property name="column-spacing">12</property>
|
|
+ <property name="row-spacing">2</property>
|
|
+ <child>
|
|
+ <object class="GtkLabel">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="hexpand">True</property>
|
|
+ <property name="label" translatable="yes">Airplane Mode</property>
|
|
+ <property name="xalign">0.0</property>
|
|
+ <attributes>
|
|
+ <attribute name="weight" value="bold"/>
|
|
+ </attributes>
|
|
+ </object>
|
|
+ <packing>
|
|
+ <property name="left-attach">0</property>
|
|
+ <property name="top-attach">0</property>
|
|
+ </packing>
|
|
+ </child>
|
|
<child>
|
|
- <object class="GtkGrid">
|
|
+ <object class="GtkLabel">
|
|
<property name="visible">True</property>
|
|
- <property name="border-width">12</property>
|
|
- <property name="margin_left">6</property>
|
|
- <property name="margin_right">6</property>
|
|
- <property name="column-spacing">12</property>
|
|
- <property name="row-spacing">2</property>
|
|
- <child>
|
|
- <object class="GtkLabel">
|
|
- <property name="visible">True</property>
|
|
- <property name="hexpand">True</property>
|
|
- <property name="label" translatable="yes">Airplane Mode</property>
|
|
- <property name="xalign">0.0</property>
|
|
- <attributes>
|
|
- <attribute name="weight" value="bold"/>
|
|
- </attributes>
|
|
- </object>
|
|
- <packing>
|
|
- <property name="left-attach">0</property>
|
|
- <property name="top-attach">0</property>
|
|
- </packing>
|
|
- </child>
|
|
- <child>
|
|
- <object class="GtkLabel">
|
|
- <property name="visible">True</property>
|
|
- <property name="hexpand">True</property>
|
|
- <property name="label" translatable="yes">Disables Wi-Fi, Bluetooth and mobile broadband</property>
|
|
- <property name="xalign">0.0</property>
|
|
- <attributes>
|
|
- <attribute name="scale" value="0.88"/>
|
|
- </attributes>
|
|
- <style>
|
|
- <class name="dim-label"/>
|
|
- </style>
|
|
- </object>
|
|
- <packing>
|
|
- <property name="left-attach">0</property>
|
|
- <property name="top-attach">1</property>
|
|
- </packing>
|
|
- </child>
|
|
- <child>
|
|
- <object class="GtkSwitch" id="rfkill_switch">
|
|
- <property name="visible">True</property>
|
|
- <property name="can-focus">True</property>
|
|
- <property name="valign">center</property>
|
|
- <signal name="notify::active" handler="rfkill_switch_notify_activate_cb" object="CcWifiPanel" swapped="no" />
|
|
- </object>
|
|
- <packing>
|
|
- <property name="left-attach">1</property>
|
|
- <property name="top-attach">0</property>
|
|
- <property name="height">2</property>
|
|
- </packing>
|
|
- </child>
|
|
+ <property name="hexpand">True</property>
|
|
+ <property name="label" translatable="yes">Disables Wi-Fi, Bluetooth and mobile broadband</property>
|
|
+ <property name="xalign">0.0</property>
|
|
+ <attributes>
|
|
+ <attribute name="scale" value="0.88"/>
|
|
+ </attributes>
|
|
+ <style>
|
|
+ <class name="dim-label"/>
|
|
+ </style>
|
|
</object>
|
|
+ <packing>
|
|
+ <property name="left-attach">0</property>
|
|
+ <property name="top-attach">1</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ <child>
|
|
+ <object class="GtkSwitch" id="rfkill_switch">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can-focus">True</property>
|
|
+ <property name="valign">center</property>
|
|
+ <signal name="notify::active" handler="rfkill_switch_notify_activate_cb" object="CcWifiPanel" swapped="no" />
|
|
+ </object>
|
|
+ <packing>
|
|
+ <property name="left-attach">1</property>
|
|
+ <property name="top-attach">0</property>
|
|
+ <property name="height">2</property>
|
|
+ </packing>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
- <packing>
|
|
- <property name="left-attach">1</property>
|
|
- <property name="top-attach">0</property>
|
|
- </packing>
|
|
</child>
|
|
+ </object>
|
|
+ <packing>
|
|
+ <property name="left-attach">1</property>
|
|
+ <property name="top-attach">0</property>
|
|
+ </packing>
|
|
+ </child>
|
|
|
|
- <!-- Visible Networks label & spinner -->
|
|
+ <child>
|
|
+ <object class="GtkStack" id="main_stack">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can-focus">False</property>
|
|
+ <property name="homogeneous">False</property>
|
|
+ <property name="transition_type">crossfade</property>
|
|
+
|
|
+ <!-- "No Wi-Fi Adapter" page -->
|
|
<child>
|
|
<object class="GtkBox">
|
|
<property name="visible">True</property>
|
|
- <property name="hexpand">True</property>
|
|
- <property name="halign">start</property>
|
|
- <property name="spacing">6</property>
|
|
+ <property name="can_focus">False</property>
|
|
+ <property name="expand">True</property>
|
|
+ <property name="halign">center</property>
|
|
+ <property name="valign">start</property>
|
|
+ <property name="orientation">vertical</property>
|
|
+ <child>
|
|
+ <object class="GtkImage">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">False</property>
|
|
+ <property name="icon_name">network-wireless-no-route-symbolic</property>
|
|
+ <property name="pixel_size">256</property>
|
|
+ <property name="margin-bottom">18</property>
|
|
+ <style>
|
|
+ <class name="dim-label" />
|
|
+ </style>
|
|
+ </object>
|
|
+ </child>
|
|
<child>
|
|
<object class="GtkLabel">
|
|
<property name="visible">True</property>
|
|
- <property name="label" translatable="yes">Visible Networks</property>
|
|
- <property name="xalign">0.0</property>
|
|
- <property name="margin_bottom">12</property>
|
|
+ <property name="can_focus">False</property>
|
|
+ <property name="wrap">True</property>
|
|
+ <property name="label" translatable="yes">No Wi-Fi Adapter Found</property>
|
|
<attributes>
|
|
- <attribute name="weight" value="bold"/>
|
|
+ <attribute name="weight" value="bold" />
|
|
+ <attribute name="scale" value="1.2" />
|
|
</attributes>
|
|
</object>
|
|
</child>
|
|
<child>
|
|
- <object class="GtkSpinner" id="spinner">
|
|
- <property name="hexpand">True</property>
|
|
+ <object class="GtkLabel">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">False</property>
|
|
+ <property name="wrap">True</property>
|
|
+ <property name="label" translatable="yes">Make sure you have a Wi-Fi adapter plugged and turned on</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
- <property name="left-attach">1</property>
|
|
- <property name="top-attach">1</property>
|
|
+ <property name="name">no-wifi-devices</property>
|
|
</packing>
|
|
</child>
|
|
|
|
- <!-- Stack with a listbox for each Wi-Fi device -->
|
|
+ <!-- Wi-Fi connections and devices -->
|
|
<child>
|
|
- <object class="GtkFrame">
|
|
+ <object class="GtkGrid">
|
|
<property name="visible">True</property>
|
|
- <property name="valign">start</property>
|
|
- <style>
|
|
- <class name="view" />
|
|
- </style>
|
|
+
|
|
+ <!-- Visible Networks label & spinner -->
|
|
<child>
|
|
- <object class="GtkStack" id="stack">
|
|
+ <object class="GtkBox">
|
|
<property name="visible">True</property>
|
|
<property name="hexpand">True</property>
|
|
- <property name="vexpand">True</property>
|
|
- <property name="transition_type">crossfade</property>
|
|
+ <property name="halign">start</property>
|
|
+ <property name="spacing">6</property>
|
|
+ <child>
|
|
+ <object class="GtkLabel">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="label" translatable="yes">Visible Networks</property>
|
|
+ <property name="xalign">0.0</property>
|
|
+ <property name="margin_bottom">12</property>
|
|
+ <attributes>
|
|
+ <attribute name="weight" value="bold"/>
|
|
+ </attributes>
|
|
+ </object>
|
|
+ </child>
|
|
+ <child>
|
|
+ <object class="GtkSpinner" id="spinner">
|
|
+ <property name="hexpand">True</property>
|
|
+ </object>
|
|
+ </child>
|
|
</object>
|
|
+ <packing>
|
|
+ <property name="left-attach">1</property>
|
|
+ <property name="top-attach">1</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <!-- Stack with a listbox for each Wi-Fi device -->
|
|
+ <child>
|
|
+ <object class="GtkFrame">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="valign">start</property>
|
|
+ <style>
|
|
+ <class name="view" />
|
|
+ </style>
|
|
+ <child>
|
|
+ <object class="GtkStack" id="stack">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="hexpand">True</property>
|
|
+ <property name="vexpand">True</property>
|
|
+ <property name="transition_type">crossfade</property>
|
|
+ </object>
|
|
+ </child>
|
|
+ </object>
|
|
+ <packing>
|
|
+ <property name="left-attach">1</property>
|
|
+ <property name="top-attach">2</property>
|
|
+ </packing>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
- <property name="left-attach">1</property>
|
|
- <property name="top-attach">2</property>
|
|
+ <property name="name">wifi-connections</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+
|
|
+ <!-- "NetworkManager Not Running" page -->
|
|
+ <child>
|
|
+ <object class="GtkBox">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">False</property>
|
|
+ <property name="halign">center</property>
|
|
+ <property name="valign">center</property>
|
|
+ <property name="orientation">vertical</property>
|
|
+ <property name="margin">18</property>
|
|
+ <property name="spacing">18</property>
|
|
+ <child type="center">
|
|
+ <object class="GtkImage">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">False</property>
|
|
+ <property name="icon_name">face-sad-symbolic</property>
|
|
+ <property name="pixel_size">128</property>
|
|
+ <style>
|
|
+ <class name="dim-label" />
|
|
+ </style>
|
|
+ </object>
|
|
+ </child>
|
|
+ <child>
|
|
+ <object class="GtkLabel">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">False</property>
|
|
+ <property name="wrap">True</property>
|
|
+ <property name="label" translatable="yes">NetworkManager needs to be running</property>
|
|
+ </object>
|
|
+ <packing>
|
|
+ <property name="pack-type">end</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ <child>
|
|
+ <object class="GtkLabel">
|
|
+ <property name="visible">True</property>
|
|
+ <property name="can_focus">False</property>
|
|
+ <property name="wrap">True</property>
|
|
+ <property name="label" translatable="yes">Oops, something has gone wrong. Please contact your software vendor.</property>
|
|
+ <attributes>
|
|
+ <attribute name="scale" value="1.42" />
|
|
+ </attributes>
|
|
+ </object>
|
|
+ <packing>
|
|
+ <property name="pack-type">end</property>
|
|
+ </packing>
|
|
+ </child>
|
|
+ </object>
|
|
+ <packing>
|
|
+ <property name="name">nm-not-running</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
+ <packing>
|
|
+ <property name="left-attach">1</property>
|
|
+ <property name="top-attach">1</property>
|
|
+ <property name="height">3</property>
|
|
+ </packing>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
- <packing>
|
|
- <property name="name">wifi-connections</property>
|
|
- </packing>
|
|
- </child>
|
|
-
|
|
- <!-- "NetworkManager Not Running" page -->
|
|
- <child>
|
|
- <object class="GtkBox">
|
|
- <property name="visible">True</property>
|
|
- <property name="can_focus">False</property>
|
|
- <property name="expand">True</property>
|
|
- <property name="halign">center</property>
|
|
- <property name="valign">center</property>
|
|
- <property name="orientation">vertical</property>
|
|
- <property name="margin">18</property>
|
|
- <property name="spacing">18</property>
|
|
- <child type="center">
|
|
- <object class="GtkImage">
|
|
- <property name="visible">True</property>
|
|
- <property name="can_focus">False</property>
|
|
- <property name="icon_name">face-sad-symbolic</property>
|
|
- <property name="pixel_size">128</property>
|
|
- <style>
|
|
- <class name="dim-label" />
|
|
- </style>
|
|
- </object>
|
|
- </child>
|
|
- <child>
|
|
- <object class="GtkLabel">
|
|
- <property name="visible">True</property>
|
|
- <property name="can_focus">False</property>
|
|
- <property name="wrap">True</property>
|
|
- <property name="label" translatable="yes">NetworkManager needs to be running</property>
|
|
- </object>
|
|
- <packing>
|
|
- <property name="pack-type">end</property>
|
|
- </packing>
|
|
- </child>
|
|
- <child>
|
|
- <object class="GtkLabel">
|
|
- <property name="visible">True</property>
|
|
- <property name="can_focus">False</property>
|
|
- <property name="wrap">True</property>
|
|
- <property name="label" translatable="yes">Oops, something has gone wrong. Please contact your software vendor.</property>
|
|
- <attributes>
|
|
- <attribute name="scale" value="1.42" />
|
|
- </attributes>
|
|
- </object>
|
|
- <packing>
|
|
- <property name="pack-type">end</property>
|
|
- </packing>
|
|
- </child>
|
|
- </object>
|
|
- <packing>
|
|
- <property name="name">nm-not-running</property>
|
|
- </packing>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
--
|
|
2.34.1
|
|
|