summaryrefslogtreecommitdiff
path: root/mate-panel/libmate-panel-applet-private/panel-applets-manager-dbus.c
diff options
context:
space:
mode:
Diffstat (limited to 'mate-panel/libmate-panel-applet-private/panel-applets-manager-dbus.c')
-rw-r--r--mate-panel/libmate-panel-applet-private/panel-applets-manager-dbus.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/mate-panel/libmate-panel-applet-private/panel-applets-manager-dbus.c b/mate-panel/libmate-panel-applet-private/panel-applets-manager-dbus.c
index e0aacc0b..496190b7 100644
--- a/mate-panel/libmate-panel-applet-private/panel-applets-manager-dbus.c
+++ b/mate-panel/libmate-panel-applet-private/panel-applets-manager-dbus.c
@@ -97,6 +97,9 @@ _mate_panel_applets_manager_get_applet_info (GKeyFile *applet_file,
char *comment;
char *icon;
char **old_ids;
+ char **supported_platforms;
+ gboolean x11_supported;
+ gboolean wayland_supported;
iid = g_strdup_printf ("%s::%s", factory_id, group);
name = g_key_file_get_locale_string (applet_file, group,
@@ -108,13 +111,40 @@ _mate_panel_applets_manager_get_applet_info (GKeyFile *applet_file,
old_ids = g_key_file_get_string_list (applet_file, group,
"MateComponentId", NULL, NULL);
- info = mate_panel_applet_info_new (iid, name, comment, icon, (const char **) old_ids);
+ supported_platforms = g_key_file_get_string_list (applet_file, group,
+ "Platforms", NULL, NULL);
+ if (supported_platforms == NULL) {
+ // If supported platforms are not specified, assume all are supported
+ x11_supported = TRUE;
+ wayland_supported = TRUE;
+ } else {
+ int len, i;
+
+ x11_supported = FALSE;
+ wayland_supported = FALSE;
+ len = g_strv_length ((gchar **) supported_platforms);
+ for (i = 0; i < len; i++) {
+ if (g_strcmp0 (supported_platforms[i], "X11") == 0) {
+ x11_supported = TRUE;
+ } else if (g_strcmp0 (supported_platforms[i], "Wayland") == 0) {
+ wayland_supported = TRUE;
+ } else {
+ g_warning ("Unknown platform in %s applet: %s. "
+ "Valid platforms are X11 and Wayland",
+ name, supported_platforms[i]);
+ }
+ }
+ }
+
+ info = mate_panel_applet_info_new (iid, name, comment, icon, (const char **) old_ids,
+ x11_supported, wayland_supported);
g_free (iid);
g_free (name);
g_free (comment);
g_free (icon);
g_strfreev (old_ids);
+ g_strfreev (supported_platforms);
return info;
}