Support hiding rather than desensitizing disallowed items
This is done using a new environment variable that can be set when nm-applet is started: NM_APPLET_HIDE_POLICY_ITEMS. Gbp-Pq: Name Support-hiding-rather-than-desensitizing-disallowed-items.patch
This commit is contained in:
parent
715c7df695
commit
3b90196a14
|
@ -211,7 +211,6 @@ nma_menu_add_hidden_network_item (GtkWidget *menu, NMApplet *applet)
|
|||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item), label);
|
||||
gtk_widget_show_all (menu_item);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
|
||||
g_signal_connect_swapped (menu_item, "activate",
|
||||
G_CALLBACK (applet_wifi_connect_to_hidden_network),
|
||||
applet);
|
||||
|
@ -242,6 +241,13 @@ nma_menu_add_hidden_network_item (GtkWidget *menu, NMApplet *applet)
|
|||
}
|
||||
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (menu_item), allowed);
|
||||
if (!allowed && applet->hide_policy_items) {
|
||||
/* don't add the item if it should be hidden */
|
||||
/* TODO: is this the final solution? */
|
||||
g_object_ref_sink (menu_item);
|
||||
g_object_unref (menu_item);
|
||||
} else
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
|
||||
}
|
||||
|
||||
gboolean
|
||||
|
@ -289,13 +295,21 @@ nma_menu_add_create_network_item (GtkWidget *menu, NMApplet *applet)
|
|||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
gtk_container_add (GTK_CONTAINER (menu_item), label);
|
||||
gtk_widget_show_all (menu_item);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
|
||||
g_signal_connect_swapped (menu_item, "activate",
|
||||
G_CALLBACK (applet_wifi_create_wifi_network),
|
||||
applet);
|
||||
|
||||
if (!applet_wifi_can_create_wifi_network (applet))
|
||||
if (!applet_wifi_can_create_wifi_network (applet)) {
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (menu_item), FALSE);
|
||||
if (applet->hide_policy_items) {
|
||||
/* don't add the item if it should be hidden */
|
||||
/* TODO: is this the final solution? */
|
||||
g_object_ref_sink (menu_item);
|
||||
g_object_unref (menu_item);
|
||||
return;
|
||||
}
|
||||
}
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
|
|
33
src/applet.c
33
src/applet.c
|
@ -1459,6 +1459,8 @@ nma_menu_add_vpn_submenu (GtkWidget *menu, NMApplet *applet)
|
|||
GtkMenuItem *item;
|
||||
GPtrArray *list;
|
||||
int i;
|
||||
gboolean configure_allowed;
|
||||
gboolean disconnect_allowed;
|
||||
|
||||
vpn_menu = GTK_MENU (gtk_menu_new ());
|
||||
|
||||
|
@ -1488,9 +1490,16 @@ nma_menu_add_vpn_submenu (GtkWidget *menu, NMApplet *applet)
|
|||
if ( state != NM_STATE_CONNECTED_LOCAL
|
||||
&& state != NM_STATE_CONNECTED_SITE
|
||||
&& state != NM_STATE_CONNECTED_GLOBAL
|
||||
&& !is_permission_yes (applet, NM_CLIENT_PERMISSION_NETWORK_CONTROL))
|
||||
&& !disconnect_allowed){
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (item), FALSE);
|
||||
else
|
||||
if (!applet->hide_policy_items)
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (vpn_menu), GTK_WIDGET (item));
|
||||
else {
|
||||
/* TODO: is this the final solution? */
|
||||
g_object_ref_sink (item);
|
||||
g_object_unref (item);
|
||||
}
|
||||
} else
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (item), TRUE);
|
||||
|
||||
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), !!active);
|
||||
|
@ -1506,7 +1515,10 @@ nma_menu_add_vpn_submenu (GtkWidget *menu, NMApplet *applet)
|
|||
|
||||
/* Draw a separator, but only if we have VPN connections above it */
|
||||
if (list->len) {
|
||||
nma_menu_add_separator_item (GTK_WIDGET (vpn_menu));
|
||||
if ( !applet->hide_policy_items
|
||||
|| configure_allowed
|
||||
|| disconnect_allowed)
|
||||
nma_menu_add_separator_item (GTK_WIDGET (vpn_menu)); /* separator is added if there will be items under it */
|
||||
item = GTK_MENU_ITEM (gtk_menu_item_new_with_mnemonic (_("_Configure VPN…")));
|
||||
g_signal_connect (item, "activate", G_CALLBACK (nma_menu_configure_vpn_item_activate), applet);
|
||||
} else {
|
||||
|
@ -1514,11 +1526,17 @@ nma_menu_add_vpn_submenu (GtkWidget *menu, NMApplet *applet)
|
|||
g_signal_connect (item, "activate", G_CALLBACK (nma_menu_add_vpn_item_activate), applet);
|
||||
}
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (vpn_menu), GTK_WIDGET (item));
|
||||
if ( is_permission_yes (applet, NM_CLIENT_PERMISSION_SETTINGS_MODIFY_SYSTEM)
|
||||
|| is_permission_yes (applet, NM_CLIENT_PERMISSION_SETTINGS_MODIFY_OWN)) {
|
||||
if (configure_allowed) {
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (item), TRUE);
|
||||
} else {
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (item), FALSE);
|
||||
if (!applet->hide_policy_items) {
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (vpn_menu), GTK_WIDGET (item));
|
||||
} else {
|
||||
/* TODO: is this the final solution? */
|
||||
g_object_ref_sink (item);
|
||||
g_object_unref (item);
|
||||
}
|
||||
}
|
||||
gtk_widget_show (GTK_WIDGET (item));
|
||||
|
||||
|
@ -1791,6 +1809,7 @@ nma_context_menu_update (NMApplet *applet)
|
|||
* so set the "Edit Connections..." menu item insensitive.
|
||||
*/
|
||||
gtk_widget_set_sensitive (applet->connections_menu_item, FALSE);
|
||||
gtk_widget_set_visible (applet->connections_menu_item, !applet->hide_policy_items);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3562,6 +3581,10 @@ static void nma_init (NMApplet *applet)
|
|||
|
||||
g_signal_connect (applet, "startup", G_CALLBACK (applet_startup), NULL);
|
||||
g_signal_connect (applet, "activate", G_CALLBACK (applet_activate), NULL);
|
||||
|
||||
applet->hide_policy_items = FALSE;
|
||||
if (getenv ("NM_APPLET_HIDE_POLICY_ITEMS"))
|
||||
applet->hide_policy_items = TRUE;
|
||||
}
|
||||
|
||||
static void nma_class_init (NMAppletClass *klass)
|
||||
|
|
|
@ -76,6 +76,7 @@ typedef struct {
|
|||
#endif
|
||||
|
||||
gboolean visible;
|
||||
gboolean hide_policy_items;
|
||||
|
||||
/* Permissions */
|
||||
NMClientPermissionResult permissions[NM_CLIENT_PERMISSION_LAST + 1];
|
||||
|
|
Loading…
Reference in New Issue