1
0
forked from pool/xfce4-session
xfce4-session/xfce4-session-fix-gnome-mode.patch

176 lines
6.1 KiB
Diff
Raw Normal View History

diff -urNp xfce4-session-4.8.2.orig/settings/xfae-model.c xfce4-session-4.8.2/settings/xfae-model.c
--- xfce4-session-4.8.2.orig/settings/xfae-model.c 2011-09-13 18:17:10.000000000 +0200
+++ xfce4-session-4.8.2/settings/xfae-model.c 2011-10-08 17:37:29.000000000 +0200
@@ -73,6 +73,7 @@ static gboolean xfae_model_ite
static XfaeItem *xfae_item_new (const gchar *relpath);
static void xfae_item_free (XfaeItem *item);
static gboolean xfae_item_is_removable (XfaeItem *item);
+static gboolean xfae_item_is_compat (XfaeItem *item);
@@ -95,6 +96,7 @@ struct _XfaeItem
GdkPixbuf *icon;
gchar *comment;
gchar *relpath;
+ gchar **only_show_in;
gboolean hidden;
};
@@ -287,7 +289,7 @@ xfae_model_get_value (GtkTreeModel *tree
case XFAE_MODEL_COLUMN_ENABLED:
g_value_init (value, G_TYPE_BOOLEAN);
- g_value_set_boolean (value, !item->hidden);
+ g_value_set_boolean (value, !(item->hidden || xfae_item_is_compat (item)));
break;
case XFAE_MODEL_COLUMN_REMOVABLE:
@@ -401,7 +403,6 @@ xfae_item_new (const gchar *relpath)
XfaeItem *item = NULL;
gboolean skip = FALSE;
XfceRc *rc;
- gchar **only_show_in;
gchar **not_show_in;
gchar **args;
gchar *icon_name;
@@ -457,18 +458,18 @@ xfae_item_new (const gchar *relpath)
}
/* check the OnlyShowIn setting */
- only_show_in = xfce_rc_read_list_entry (rc, "OnlyShowIn", ";");
- if (G_UNLIKELY (only_show_in != NULL))
+ item->only_show_in = xfce_rc_read_list_entry (rc, "OnlyShowIn", ";");
+ if (G_UNLIKELY (item->only_show_in != NULL))
{
- /* check if "Xfce" is specified */
- for (m = 0, skip = TRUE; only_show_in[m] != NULL; ++m)
- if (g_ascii_strcasecmp (only_show_in[m], "Xfce") == 0)
+ /* check if "Xfce", "GNOME", or "KDE" are specified */
+ for (m = 0, skip = TRUE; item->only_show_in[m] != NULL; ++m)
+ if ((g_ascii_strcasecmp (item->only_show_in[m], "Xfce") == 0) ||
+ (g_ascii_strcasecmp (item->only_show_in[m], "GNOME") == 0) ||
+ (g_ascii_strcasecmp (item->only_show_in[m], "KDE") == 0))
{
skip = FALSE;
break;
}
-
- g_strfreev (only_show_in);
}
else
{
@@ -515,6 +516,7 @@ xfae_item_free (XfaeItem *item)
g_free (item->relpath);
g_free (item->comment);
g_free (item->name);
+ g_strfreev (item->only_show_in);
g_free (item);
}
@@ -545,6 +547,32 @@ xfae_item_is_removable (XfaeItem *item)
static gboolean
+xfae_item_is_compat (XfaeItem *item)
+{
+ gint m;
+ gboolean is_compat = FALSE;
+
+ if (item->only_show_in != NULL)
+ {
+ for (m = 0; item->only_show_in[m] != NULL; ++m)
+ {
+ if (g_ascii_strcasecmp (item->only_show_in[m], "Xfce") == 0)
+ {
+ is_compat = FALSE;
+ break;
+ }
+ else if ((g_ascii_strcasecmp (item->only_show_in[m], "GNOME") == 0) ||
+ (g_ascii_strcasecmp (item->only_show_in[m], "KDE") == 0))
+ is_compat = TRUE;
+ }
+ }
+
+ return is_compat;
+}
+
+
+
+static gboolean
xfae_item_remove (XfaeItem *item,
GError **error)
{
@@ -899,12 +927,26 @@ xfae_model_toggle (XfaeModel *model,
return FALSE;
}
- /* perform the toggle operation :-) */
- item->hidden = !item->hidden;
+ if (xfae_item_is_compat (item))
+ {
+ guint len;
+
+ /* append "XFCE;" to "OnlyShowIn" */
+ len = g_strv_length (item->only_show_in) + 2;
+ item->only_show_in = g_realloc_n (item->only_show_in, (gsize) len, sizeof (gchar *));
+ item->only_show_in[len - 3] = g_strdup ("XFCE");
+ item->only_show_in[len - 2] = g_strdup (""); /* force trailing semicolon */
+ item->only_show_in[len - 1] = NULL;
+
+ item->hidden = FALSE;
+ }
+ else
+ item->hidden = !item->hidden;
/* write the result */
xfce_rc_set_group (rc, "Desktop Entry");
xfce_rc_write_bool_entry (rc, "Hidden", item->hidden);
+ xfce_rc_write_list_entry (rc, "OnlyShowIn", item->only_show_in, ";");
xfce_rc_close (rc);
/* tell the view that we have most probably a new state */
diff -urNp xfce4-session-4.8.2.orig/xfce4-session/xfsm-compat-gnome.c xfce4-session-4.8.2/xfce4-session/xfsm-compat-gnome.c
--- xfce4-session-4.8.2.orig/xfce4-session/xfsm-compat-gnome.c 2011-09-13 18:17:17.000000000 +0200
+++ xfce4-session-4.8.2/xfce4-session/xfsm-compat-gnome.c 2011-10-07 17:14:02.000000000 +0200
@@ -294,7 +294,9 @@ xfsm_compat_gnome_startup (XfsmSplashScr
if (G_UNLIKELY (gnome_compat_started))
return;
+#if 0
xfsm_compat_gnome_smproxy_startup ();
+#endif
/* fire up the keyring daemon */
if (G_LIKELY (splash != NULL))
@@ -342,6 +344,7 @@ xfsm_compat_gnome_shutdown (void)
}
#endif
+#if 0
/* shutdown the GConf daemon */
if (!g_spawn_command_line_sync ("gconftool-2 --shutdown", NULL,
NULL, &status, &error))
@@ -357,6 +360,7 @@ xfsm_compat_gnome_shutdown (void)
}
xfsm_compat_gnome_smproxy_shutdown ();
+#endif
gnome_compat_started = FALSE;
}
diff -urNp xfce4-session-4.8.2.orig/xfce4-session/xfsm-startup.c xfce4-session-4.8.2/xfce4-session/xfsm-startup.c
--- xfce4-session-4.8.2.orig/xfce4-session/xfsm-startup.c 2011-09-13 18:17:17.000000000 +0200
+++ xfce4-session-4.8.2/xfce4-session/xfsm-startup.c 2011-10-07 17:14:02.000000000 +0200
@@ -352,9 +352,7 @@ xfsm_startup_autostart_xdg (XfsmManager
* then "KDE" is specified. */
for (m = 0, skip = TRUE; only_show_in[m] != NULL; ++m)
{
- if ((g_ascii_strcasecmp (only_show_in[m], "XFCE") == 0) ||
- (gnome && g_ascii_strcasecmp (only_show_in[m], "GNOME") == 0) ||
- (kde && g_ascii_strcasecmp (only_show_in[m], "KDE") == 0))
+ if (g_ascii_strcasecmp (only_show_in[m], "XFCE") == 0)
{
skip = FALSE;
break;