diff options
| author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2026-06-16 10:30:44 +0200 |
|---|---|---|
| committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2026-06-16 10:30:44 +0200 |
| commit | b1619d4b6ca2d33556f663b20f29e5d4a39ed264 (patch) | |
| tree | 931bf79d6fdcfea59466fa5e2789ee9bc482fdf2 | |
| parent | 1f500c31744406b122c3fee61edc8807ef731a4e (diff) | |
| parent | b8302f57af3b280310a05a77471772b6025374cf (diff) | |
| download | ayatana-indicator-session-b1619d4b6ca2d33556f663b20f29e5d4a39ed264.tar.gz ayatana-indicator-session-b1619d4b6ca2d33556f663b20f29e5d4a39ed264.tar.bz2 ayatana-indicator-session-b1619d4b6ca2d33556f663b20f29e5d4a39ed264.zip | |
Attributes GH PR #105: https://github.com/AyatanaIndicators/ayatana-indicator-session/pull/105
| -rw-r--r-- | src/backend-dbus/actions.c | 55 |
1 files changed, 42 insertions, 13 deletions
diff --git a/src/backend-dbus/actions.c b/src/backend-dbus/actions.c index f5ddbc9..bc7d314 100644 --- a/src/backend-dbus/actions.c +++ b/src/backend-dbus/actions.c @@ -387,7 +387,12 @@ my_can_lock (IndicatorSessionActions * self) { priv_t * p = INDICATOR_SESSION_ACTIONS_DBUS(self)->priv; - return !g_settings_get_boolean (p->lockdown_settings, "disable-lock-screen"); + if (p->lockdown_settings) + { + return !g_settings_get_boolean (p->lockdown_settings, "disable-lock-screen"); + } + + return TRUE; } static gboolean @@ -398,7 +403,7 @@ my_can_logout (IndicatorSessionActions * self) if (g_settings_get_boolean (p->indicator_settings, "suppress-logout-menuitem")) return FALSE; - if (g_settings_get_boolean (p->lockdown_settings, "disable-log-out")) + if ((p->lockdown_settings) && (g_settings_get_boolean (p->lockdown_settings, "disable-log-out"))) return FALSE; return TRUE; @@ -430,8 +435,17 @@ my_can_switch (IndicatorSessionActions * self) { const priv_t * p = INDICATOR_SESSION_ACTIONS_DBUS(self)->priv; - return p->seat_allows_activation - && !g_settings_get_boolean (p->lockdown_settings, "disable-user-switching"); + if ((p->lockdown_settings) && (g_settings_get_boolean (p->lockdown_settings, "disable-user-switching"))) + { + return FALSE; + } + + if (!p->seat_allows_activation) + { + return FALSE; + } + + return TRUE; } static gboolean @@ -1114,21 +1128,36 @@ static void indicator_session_actions_dbus_init (IndicatorSessionActionsDbus * self) { priv_t * p; - GSettings * s; + GSettings * s = NULL; p = indicator_session_actions_dbus_get_instance_private (self); p->cancellable = g_cancellable_new (); p->seat_allows_activation = TRUE; self->priv = p; - s = g_settings_new ("org.gnome.desktop.lockdown"); - g_signal_connect_swapped (s, "changed::disable-lock-screen", - G_CALLBACK(indicator_session_actions_notify_can_lock), self); - g_signal_connect_swapped (s, "changed::disable-log-out", - G_CALLBACK(indicator_session_actions_notify_can_logout), self); - g_signal_connect_swapped (s, "changed::disable-user-switching", - G_CALLBACK(indicator_session_actions_notify_can_switch), self); - p->lockdown_settings = s; + if (ayatana_common_utils_is_gnome() || ayatana_common_utils_is_budgie()) + { + s = g_settings_new ("org.gnome.desktop.lockdown"); + } + else if (ayatana_common_utils_is_mate()) + { + s = g_settings_new ("org.mate.desktop.lockdown"); + } + + if (s) + { + g_signal_connect_swapped (s, "changed::disable-lock-screen", + G_CALLBACK(indicator_session_actions_notify_can_lock), self); + g_signal_connect_swapped (s, "changed::disable-log-out", + G_CALLBACK(indicator_session_actions_notify_can_logout), self); + g_signal_connect_swapped (s, "changed::disable-user-switching", + G_CALLBACK(indicator_session_actions_notify_can_switch), self); + p->lockdown_settings = s; + } + else + { + p->lockdown_settings = NULL; + } s = g_settings_new ("org.ayatana.indicator.session"); g_signal_connect_swapped (s, "changed::suppress-logout-restart-shutdown", |
