diff options
author | Michael Terry <michael.terry@canonical.com> | 2011-06-29 16:56:31 +0100 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2011-09-07 15:20:08 -0400 |
commit | 37e379a5a484b604bd25f0b4cb3269f6e4c942ba (patch) | |
tree | 89ec43f36cc3fd7df024aacd658c638108fd7864 /libnautilus-private/nautilus-link.c | |
parent | 637289f74536ed2f31e05604401203a9360c439f (diff) | |
download | nautilus-37e379a5a484b604bd25f0b4cb3269f6e4c942ba.tar.gz |
Look at XDG_CURRENT_DESKTOP to decide if a link is foreign
https://bugzilla.gnome.org/show_bug.cgi?id=653660
Diffstat (limited to 'libnautilus-private/nautilus-link.c')
-rw-r--r-- | libnautilus-private/nautilus-link.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/libnautilus-private/nautilus-link.c b/libnautilus-private/nautilus-link.c index 2c56c0fb7..339a1b40e 100644 --- a/libnautilus-private/nautilus-link.c +++ b/libnautilus-private/nautilus-link.c @@ -554,6 +554,21 @@ string_array_contains (char **array, return FALSE; } +static const gchar * +get_session (void) +{ + const gchar * session; + + session = g_getenv ("XDG_CURRENT_DESKTOP"); + + if (session == NULL || session[0] == 0) { + /* historic behavior */ + session = "GNOME"; + } + + return session; +} + void nautilus_link_get_link_info_given_file_contents (const char *file_contents, int link_file_size, @@ -568,7 +583,9 @@ nautilus_link_get_link_info_given_file_contents (const char *file_contents, char *type; char **only_show_in; char **not_show_in; + const gchar *session; + session = get_session (); key_file = g_key_file_new (); if (!g_key_file_load_from_data (key_file, file_contents, @@ -594,14 +611,14 @@ nautilus_link_get_link_info_given_file_contents (const char *file_contents, *is_foreign = FALSE; only_show_in = g_key_file_get_string_list (key_file, MAIN_GROUP, "OnlyShowIn", NULL, NULL); - if (only_show_in && !string_array_contains (only_show_in, "GNOME")) { + if (session && only_show_in && !string_array_contains (only_show_in, session)) { *is_foreign = TRUE; } g_strfreev (only_show_in); not_show_in = g_key_file_get_string_list (key_file, MAIN_GROUP, "NotShowIn", NULL, NULL); - if (not_show_in && string_array_contains (not_show_in, "GNOME")) { + if (session && not_show_in && string_array_contains (not_show_in, session)) { *is_foreign = TRUE; } g_strfreev (not_show_in); |