Updating branch refs/heads/nick/autostart to 7616b84213ad167bdccc7e97ca0a2f65a60b062b (commit) from 226d94180c0009a90f3238c8e1c6dbf13800a4a4 (commit)
commit 7616b84213ad167bdccc7e97ca0a2f65a60b062b Author: Nick Schermer <n...@xfce.org> Date: Sun Mar 25 13:38:32 2012 +0200 Show all applications in autostart (bug #8014). Show also non-XFCE applications in the autostart list but do no enable them. If OnlyShowIn does not list XFCE, show it cursive in the list and set X-XFCE-Autostart-Override=true when toggled. This way we don't alter the Hidden and OnlyShowIn keys for other environments. If X-XFCE-Autostart-Override is true, skip the OnlyShowIn check and try to start it (unless Hidden is set etcetc). settings/Makefile.am | 3 +- settings/main.c | 27 +++++- settings/startup-settings.c | 69 -------------- settings/xfae-model.c | 152 ++++++++++++++++++++---------- settings/xfae-model.h | 1 + settings/xfae-window.c | 66 +------------ settings/xfae-window.h | 3 - settings/xfce4-session-settings-common.h | 1 - settings/xfce4-session-settings.glade | 4 +- xfce4-session/xfsm-startup.c | 68 ++++++------- 10 files changed, 167 insertions(+), 227 deletions(-) diff --git a/settings/Makefile.am b/settings/Makefile.am index 65bb99e..203a3ed 100644 --- a/settings/Makefile.am +++ b/settings/Makefile.am @@ -5,8 +5,7 @@ xfce4_session_settings_SOURCES = \ module.c \ module.h \ session-editor.c \ - splash-settings.c \ - startup-settings.c \ + splash-settings.c \ xfae-dialog.c \ xfae-dialog.h \ xfae-model.c \ diff --git a/settings/main.c b/settings/main.c index b831acd..31a6815 100644 --- a/settings/main.c +++ b/settings/main.c @@ -63,6 +63,7 @@ main(int argc, GtkBuilder *builder; GtkWidget *notebook, *xfae_page, *lbl; GError *error = NULL; + XfconfChannel *channel; xfce_textdomain(GETTEXT_PACKAGE, LOCALEDIR, "UTF-8"); @@ -117,7 +118,6 @@ main(int argc, return EXIT_FAILURE; } - startup_settings_init(builder); splash_settings_init(builder); session_editor_init(builder); @@ -129,6 +129,31 @@ main(int argc, gtk_widget_show(lbl); gtk_notebook_insert_page(GTK_NOTEBOOK(notebook), xfae_page, lbl, 2); + channel = xfconf_channel_get(SETTINGS_CHANNEL); + + /* bind widgets to xfconf */ + xfconf_g_property_bind(channel, "/chooser/AlwaysDisplay", G_TYPE_BOOLEAN, + gtk_builder_get_object(builder, "chk_display_chooser"), + "active"); + xfconf_g_property_bind(channel, "/general/AutoSave", G_TYPE_BOOLEAN, + gtk_builder_get_object(builder, "chk_session_autosave"), + "active"); + xfconf_g_property_bind(channel, "/general/PromptOnLogout", G_TYPE_BOOLEAN, + gtk_builder_get_object(builder, "chk_logout_prompt"), + "active"); + xfconf_g_property_bind(channel, "/compat/LaunchGNOME", G_TYPE_BOOLEAN, + gtk_builder_get_object(builder, "chk_compat_gnome"), + "active"); + xfconf_g_property_bind(channel, "/compat/LaunchKDE", G_TYPE_BOOLEAN, + gtk_builder_get_object(builder, "chk_compat_kde"), + "active"); + xfconf_g_property_bind(channel, "/security/EnableTcp", G_TYPE_BOOLEAN, + gtk_builder_get_object(builder, "chk_enable_tcp"), + "active"); + xfconf_g_property_bind(channel, "/shutdown/LockScreen", G_TYPE_BOOLEAN, + gtk_builder_get_object(builder, "chk_lock_screen"), + "active"); + if(G_UNLIKELY(opt_socket_id == 0)) { GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "xfce4_session_settings_dialog")); diff --git a/settings/startup-settings.c b/settings/startup-settings.c deleted file mode 100644 index 2d412bc..0000000 --- a/settings/startup-settings.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2008 Brian Tarricone <bj...@cornell.edu> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License ONLY. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <xfconf/xfconf.h> -#include <gtk/gtk.h> - -#include "xfce4-session-settings-common.h" - -#define DISP_CHOOSER_PROP "/chooser/AlwaysDisplay" - -#define AUTO_SAVE_PROP "/general/AutoSave" -#define LOGOUT_PROMPT_PROP "/general/PromptOnLogout" - -#define GNOME_SUPPORT_PROP "/compat/LaunchGNOME" -#define KDE_SUPPORT_PROP "/compat/LaunchKDE" - -#define ENABLE_TCP_PROP "/security/EnableTcp" - -#define LOCK_SCREEN_PROP "/shutdown/LockScreen" - -void -startup_settings_init(GtkBuilder *builder) -{ - XfconfChannel *channel = xfconf_channel_get(SETTINGS_CHANNEL); - - xfconf_g_property_bind(channel, DISP_CHOOSER_PROP, G_TYPE_BOOLEAN, - gtk_builder_get_object(builder, "chk_display_chooser"), - "active"); - - xfconf_g_property_bind(channel, AUTO_SAVE_PROP, G_TYPE_BOOLEAN, - gtk_builder_get_object(builder, "chk_session_autosave"), - "active"); - xfconf_g_property_bind(channel, LOGOUT_PROMPT_PROP, G_TYPE_BOOLEAN, - gtk_builder_get_object(builder, "chk_logout_prompt"), - "active"); - - xfconf_g_property_bind(channel, GNOME_SUPPORT_PROP, G_TYPE_BOOLEAN, - gtk_builder_get_object(builder, "chk_compat_gnome"), - "active"); - xfconf_g_property_bind(channel, KDE_SUPPORT_PROP, G_TYPE_BOOLEAN, - gtk_builder_get_object(builder, "chk_compat_kde"), - "active"); - - xfconf_g_property_bind(channel, ENABLE_TCP_PROP, G_TYPE_BOOLEAN, - gtk_builder_get_object(builder, "chk_enable_tcp"), - "active"); - - xfconf_g_property_bind(channel, LOCK_SCREEN_PROP, G_TYPE_BOOLEAN, - gtk_builder_get_object(builder, "chk_lock_screen"), - "active"); -} diff --git a/settings/xfae-model.c b/settings/xfae-model.c index 89c861a..d53dabb 100644 --- a/settings/xfae-model.c +++ b/settings/xfae-model.c @@ -69,7 +69,8 @@ static gboolean xfae_model_iter_nth_child (GtkTreeModel *tree_ static gboolean xfae_model_iter_parent (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *child); - +static gint xfae_model_sort_items (gconstpointer a, + gconstpointer b); static XfaeItem *xfae_item_new (const gchar *relpath); static void xfae_item_free (XfaeItem *item); static gboolean xfae_item_is_removable (XfaeItem *item); @@ -96,6 +97,10 @@ struct _XfaeItem gchar *comment; gchar *relpath; gboolean hidden; + gchar *tooltip; + + gboolean show_in_xfce; + gboolean show_in_override; }; @@ -133,9 +138,11 @@ xfae_model_init (XfaeModel *model) { item = xfae_item_new (files[n]); if (G_LIKELY (item != NULL)) - model->items = g_list_append (model->items, item); + model->items = g_list_prepend (model->items, item); } g_strfreev (files); + + model->items = g_list_sort (model->items, xfae_model_sort_items); } @@ -196,14 +203,13 @@ xfae_model_get_column_type (GtkTreeModel *tree_model, switch (index_) { case XFAE_MODEL_COLUMN_NAME: + case XFAE_MODEL_COLUMN_TOOLTIP: return G_TYPE_STRING; case XFAE_MODEL_COLUMN_ICON: return GDK_TYPE_PIXBUF; case XFAE_MODEL_COLUMN_ENABLED: - return G_TYPE_BOOLEAN; - case XFAE_MODEL_COLUMN_REMOVABLE: return G_TYPE_BOOLEAN; } @@ -265,6 +271,7 @@ xfae_model_get_value (GtkTreeModel *tree_model, XfaeModel *model = XFAE_MODEL (tree_model); XfaeItem *item = ((GList *) iter->user_data)->data; gchar *name; + gchar *cursive; g_return_if_fail (XFAE_IS_MODEL (model)); g_return_if_fail (iter->stamp == model->stamp); @@ -277,6 +284,14 @@ xfae_model_get_value (GtkTreeModel *tree_model, name = g_strdup_printf ("%s (%s)", item->name, item->comment); else name = g_strdup (item->name); + + if (!item->show_in_xfce) + { + cursive = g_markup_printf_escaped ("<i>%s</i>", name); + g_free (name); + name = cursive; + } + g_value_take_string (value, name); break; @@ -287,7 +302,11 @@ xfae_model_get_value (GtkTreeModel *tree_model, case XFAE_MODEL_COLUMN_ENABLED: g_value_init (value, G_TYPE_BOOLEAN); - g_value_set_boolean (value, !item->hidden); + + if (item->show_in_xfce) + g_value_set_boolean (value, !item->hidden); + else + g_value_set_boolean (value, !item->hidden && item->show_in_override); break; case XFAE_MODEL_COLUMN_REMOVABLE: @@ -295,6 +314,11 @@ xfae_model_get_value (GtkTreeModel *tree_model, g_value_set_boolean (value, xfae_item_is_removable (item)); break; + case XFAE_MODEL_COLUMN_TOOLTIP: + g_value_init (value, G_TYPE_STRING); + g_value_set_static_string (value, item->tooltip); + break; + default: g_assert_not_reached (); } @@ -393,6 +417,21 @@ xfae_model_iter_parent (GtkTreeModel *tree_model, +static gint +xfae_model_sort_items (gconstpointer a, + gconstpointer b) +{ + const XfaeItem *item_a = a; + const XfaeItem *item_b = b; + + /* sort non-xfce items below */ + if (item_a->show_in_xfce != item_b->show_in_xfce) + return item_a->show_in_xfce ? -1 : 1; + + return g_utf8_collate (item_a->name, item_b->name); +} + + static XfaeItem* xfae_item_new (const gchar *relpath) @@ -404,7 +443,6 @@ xfae_item_new (const gchar *relpath) gchar **only_show_in; gchar **not_show_in; gchar **args; - gchar *icon_name; gint m; GtkIconTheme *icon_theme; gchar *command; @@ -428,45 +466,51 @@ xfae_item_new (const gchar *relpath) if (G_LIKELY (value != NULL)) item->name = g_strdup (value); - value = xfce_rc_read_entry (rc, "Icon", NULL); + value = xfce_rc_read_entry (rc, "Icon", "application-x-executable"); if (G_UNLIKELY (value != NULL)) item->icon = gtk_icon_theme_load_icon (icon_theme, value, 16, GTK_ICON_LOOKUP_GENERIC_FALLBACK, NULL); - else - { - /* we try to be smart here in that we try to guess - * the icon name from the "Exec" key if no "Icon" - * key is provided. - */ - value = xfce_rc_read_entry (rc, "Exec", NULL); - if (G_LIKELY (value != NULL)) - { - args = g_strsplit_set (value, " \t", -1); - if (G_LIKELY (*args != NULL)) - { - icon_name = g_path_get_basename (*args); - item->icon = gtk_icon_theme_load_icon (icon_theme, icon_name, 16, GTK_ICON_LOOKUP_GENERIC_FALLBACK, NULL); - g_free (icon_name); - } - g_strfreev (args); - } - } value = xfce_rc_read_entry (rc, "Comment", NULL); if (G_LIKELY (value != NULL)) item->comment = g_strdup (value); + value = xfce_rc_read_entry (rc, "Exec", NULL); + if (G_LIKELY (value != NULL)) + item->tooltip = g_markup_printf_escaped ("<b>%s</b> %s", _("Command:"), value); + item->hidden = xfce_rc_read_bool_entry (rc, "Hidden", FALSE); } + else + { + return NULL; + } + + item->show_in_override = xfce_rc_read_bool_entry (rc, "X-XFCE-Autostart-Override", FALSE); + + /* check the NotShowIn setting */ + not_show_in = xfce_rc_read_list_entry (rc, "NotShowIn", ";"); + if (G_UNLIKELY (not_show_in != NULL)) + { + /* check if "XFCE" is specified */ + for (m = 0; not_show_in[m] != NULL; ++m) + if (g_ascii_strcasecmp (not_show_in[m], "XFCE") == 0) + { + skip = TRUE; + break; + } + + g_strfreev (not_show_in); + } /* check the OnlyShowIn setting */ only_show_in = xfce_rc_read_list_entry (rc, "OnlyShowIn", ";"); if (G_UNLIKELY (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" is specified */ + for (m = 0; only_show_in[m] != NULL; ++m) + if (g_ascii_strcasecmp (only_show_in[m], "XFCE") == 0) { - skip = FALSE; + item->show_in_xfce = TRUE; break; } @@ -474,20 +518,8 @@ xfae_item_new (const gchar *relpath) } else { - /* check the NotShowIn setting */ - not_show_in = xfce_rc_read_list_entry (rc, "NotShowIn", ";"); - if (G_UNLIKELY (not_show_in != NULL)) - { - /* check if "Xfce" is not specified */ - for (m = 0; not_show_in[m] != NULL; ++m) - if (g_ascii_strcasecmp (not_show_in[m], "Xfce") == 0) - { - skip = TRUE; - break; - } - - g_strfreev (not_show_in); - } + /* no OnlyShowIn, treat it like a normal application */ + item->show_in_xfce = TRUE; } value = xfce_rc_read_entry (rc, "TryExec", NULL); @@ -531,6 +563,7 @@ xfae_item_free (XfaeItem *item) g_free (item->relpath); g_free (item->comment); g_free (item->name); + g_free (item->tooltip); g_free (item); } @@ -676,6 +709,7 @@ xfae_model_add (XfaeModel *model, xfce_rc_write_entry (rc, "Name", name); xfce_rc_write_entry (rc, "Comment", description); xfce_rc_write_entry (rc, "Exec", command); + xfce_rc_write_entry (rc, "OnlyShowIn", "XFCE;"); xfce_rc_write_bool_entry (rc, "StartupNotify", FALSE); xfce_rc_write_bool_entry (rc, "Terminal", FALSE); xfce_rc_write_bool_entry (rc, "Hidden", FALSE); @@ -915,12 +949,32 @@ xfae_model_toggle (XfaeModel *model, return FALSE; } - /* perform the toggle operation :-) */ - item->hidden = !item->hidden; - - /* write the result */ xfce_rc_set_group (rc, "Desktop Entry"); - xfce_rc_write_bool_entry (rc, "Hidden", item->hidden); + + if (item->show_in_xfce) + { + /* This is an application with no OnlyShowIn categories or with + * XFCE in it. In this case, toggle the Hidden flag */ + + item->hidden = !item->hidden; + xfce_rc_write_bool_entry (rc, "Hidden", item->hidden); + } + else + { + /* Normally a non-Xfce autostart application, toggle the override + * boolean so we don't hide the service in other desktops */ + + item->show_in_override = !item->show_in_override; + xfce_rc_write_bool_entry (rc, "X-XFCE-Autostart-Override", item->show_in_override); + + /* if we override, but the item is still hidden, toggle that as well then */ + if (item->hidden && item->show_in_override) + { + item->hidden = !item->hidden; + xfce_rc_write_bool_entry (rc, "Hidden", item->hidden); + } + } + xfce_rc_close (rc); /* tell the view that we have most probably a new state */ diff --git a/settings/xfae-model.h b/settings/xfae-model.h index 1bce514..731a691 100644 --- a/settings/xfae-model.h +++ b/settings/xfae-model.h @@ -48,6 +48,7 @@ typedef enum XFAE_MODEL_COLUMN_NAME, XFAE_MODEL_COLUMN_ENABLED, XFAE_MODEL_COLUMN_REMOVABLE, + XFAE_MODEL_COLUMN_TOOLTIP, XFAE_MODEL_N_COLUMNS, } XfaeModelColumn; diff --git a/settings/xfae-window.c b/settings/xfae-window.c index 88fe8e7..b6f65f8 100644 --- a/settings/xfae-window.c +++ b/settings/xfae-window.c @@ -113,7 +113,7 @@ xfae_window_init (XfaeWindow *window) "vadjustment", NULL, "shadow-type", GTK_SHADOW_IN, "vscrollbar-policy", GTK_POLICY_AUTOMATIC, - "hscrollbar-policy", GTK_POLICY_NEVER, + "hscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); gtk_box_pack_start (GTK_BOX (vbox), swin, TRUE, TRUE, 0); gtk_widget_show (swin); @@ -130,6 +130,7 @@ xfae_window_init (XfaeWindow *window) model = xfae_model_new (); gtk_tree_view_set_model (GTK_TREE_VIEW (window->treeview), model); + gtk_tree_view_set_tooltip_column (GTK_TREE_VIEW (window->treeview), XFAE_MODEL_COLUMN_TOOLTIP); g_object_unref (G_OBJECT (model)); window->selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (window->treeview)); @@ -160,7 +161,7 @@ xfae_window_init (XfaeWindow *window) renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (column, renderer, TRUE); gtk_tree_view_column_set_attributes (column, renderer, - "text", XFAE_MODEL_COLUMN_NAME, + "markup", XFAE_MODEL_COLUMN_NAME, NULL); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_append_column (GTK_TREE_VIEW (window->treeview), column); @@ -444,64 +445,3 @@ xfae_window_new (void) { return g_object_new (XFAE_TYPE_WINDOW, NULL); } - - - - -#if 0 -/** - * xfae_window_create_plug_child: - * - * Creates a widget that can be used to embed the window contents - * into a GtkPlug widget. After this function call, the XfaeWindow can - * no longer be used and has to be re-created. - * - * Return value: A widget holding the most important contents of the - * window. - **/ -GtkWidget* -xfae_window_create_plug_child (XfaeWindow *window) -{ - GtkWidget *vbox; - GtkWidget *bbox; - GtkWidget *button; - - g_return_val_if_fail (XFAE_IS_WINDOW (window), NULL); - - vbox = gtk_vbox_new (FALSE, 6); - gtk_container_set_border_width (GTK_CONTAINER (vbox), 6); - gtk_widget_show (vbox); - - gtk_widget_reparent (window->ibox, vbox); - gtk_widget_show (window->ibox); - - bbox = gtk_hbutton_box_new (); - gtk_box_set_spacing (GTK_BOX (bbox), 12); - gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_CENTER); - gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, TRUE, 0); - gtk_widget_show (bbox); - - button = gtk_button_new_from_stock (GTK_STOCK_ADD); - g_signal_connect_swapped (G_OBJECT (button), "clicked", - G_CALLBACK (xfae_window_add), window); - gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0); - gtk_widget_show (button); - - button = gtk_button_new_from_stock (GTK_STOCK_REMOVE); - g_signal_connect_swapped (G_OBJECT (button), "clicked", - G_CALLBACK (xfae_window_remove), window); - gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0); - gtk_widget_show (button); - - button = gtk_button_new_from_stock (GTK_STOCK_EDIT); - g_signal_connect_swapped (G_OBJECT (button), "clicked", - G_CALLBACK (xfae_window_edit), window); - gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0); - gtk_widget_show (button); - - g_signal_connect (G_OBJECT (window->selection), "changed", - G_CALLBACK (xfae_window_selection_changed), button); - xfae_window_selection_changed (window->selection, button); - return vbox; -} -#endif diff --git a/settings/xfae-window.h b/settings/xfae-window.h index 6dae741..099e909 100644 --- a/settings/xfae-window.h +++ b/settings/xfae-window.h @@ -40,9 +40,6 @@ typedef struct _XfaeWindow XfaeWindow; GType xfae_window_get_type (void) G_GNUC_CONST; GtkWidget *xfae_window_new (void) G_GNUC_MALLOC; -#if 0 -GtkWidget *xfae_window_create_plug_child (XfaeWindow *window); -#endif G_END_DECLS; diff --git a/settings/xfce4-session-settings-common.h b/settings/xfce4-session-settings-common.h index 633a5c5..03623be 100644 --- a/settings/xfce4-session-settings-common.h +++ b/settings/xfce4-session-settings-common.h @@ -21,7 +21,6 @@ #define SETTINGS_CHANNEL "xfce4-session" -void startup_settings_init(GtkBuilder *builder); void splash_settings_init(GtkBuilder *builder); void session_editor_init(GtkBuilder *builder); diff --git a/settings/xfce4-session-settings.glade b/settings/xfce4-session-settings.glade index 0d0a798..b5916d9 100644 --- a/settings/xfce4-session-settings.glade +++ b/settings/xfce4-session-settings.glade @@ -658,7 +658,7 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="tooltip_text" translatable="yes">Start GNOME services, such as gnome-keyring and the GNOME accessibility framework</property> + <property name="tooltip_text" translatable="yes">Start GNOME services, such as gnome-keyring</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> </object> @@ -673,7 +673,7 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="tooltip_text" translatable="yes">Start KDE services, such as "kdeinit," DCOP, and ARTS</property> + <property name="tooltip_text" translatable="yes">Start KDE services, such as kdeinit</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> </object> diff --git a/xfce4-session/xfsm-startup.c b/xfce4-session/xfsm-startup.c index 3c08a78..0fdbcf5 100644 --- a/xfce4-session/xfsm-startup.c +++ b/xfce4-session/xfsm-startup.c @@ -311,8 +311,6 @@ xfsm_startup_autostart_xdg (XfsmManager *manager, const gchar *exec; gboolean startup_notify; gboolean terminal; - gboolean gnome; - gboolean kde; gboolean skip; GError *error = NULL; XfceRc *rc; @@ -327,10 +325,6 @@ xfsm_startup_autostart_xdg (XfsmManager *manager, /* migrate the old autostart location (if still present) */ xfsm_startup_autostart_migrate (); - /* Get if we should start KDE and GNOME applications */ - kde = xfsm_manager_get_compat_startup (manager, XFSM_MANAGER_COMPAT_KDE); - gnome = xfsm_manager_get_compat_startup (manager, XFSM_MANAGER_COMPAT_GNOME); - /* pattern for only at-spi desktop files or everything */ if (start_at_spi) pattern = "autostart/at-spi-*.desktop"; @@ -350,44 +344,44 @@ xfsm_startup_autostart_xdg (XfsmManager *manager, skip = xfce_rc_read_bool_entry (rc, "Hidden", FALSE); if (G_LIKELY (!skip)) { - /* check the OnlyShowIn setting */ - only_show_in = xfce_rc_read_list_entry (rc, "OnlyShowIn", ";"); - if (G_UNLIKELY (only_show_in != NULL)) + if (xfce_rc_read_bool_entry (rc, "X-XFCE-Autostart-Override", FALSE)) { - /* check if "XFCE" is specified */ - /* If we start the GNOME components, also start the applications when - * then "GNOME" is specified. */ - /* If we start the KDE components, also start the applications when - * then "KDE" is specified. */ - for (m = 0, skip = TRUE; only_show_in[m] != NULL; ++m) + /* override the OnlyShowIn check */ + skip = FALSE; + } + else + { + /* check the OnlyShowIn setting */ + only_show_in = xfce_rc_read_list_entry (rc, "OnlyShowIn", ";"); + if (G_UNLIKELY (only_show_in != NULL)) { - 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)) + /* check if "XFCE" is specified */ + for (m = 0, skip = TRUE; only_show_in[m] != NULL; ++m) { - skip = FALSE; - break; + if (g_ascii_strcasecmp (only_show_in[m], "XFCE") == 0) + { + skip = FALSE; + break; + } } - } - g_strfreev (only_show_in); + g_strfreev (only_show_in); + } } - else + + /* check the NotShowIn setting */ + not_show_in = xfce_rc_read_list_entry (rc, "NotShowIn", ";"); + if (G_UNLIKELY (not_show_in != NULL)) { - /* check the NotShowIn setting */ - not_show_in = xfce_rc_read_list_entry (rc, "NotShowIn", ";"); - if (G_UNLIKELY (not_show_in != NULL)) - { - /* check if "Xfce" is not specified */ - for (m = 0; not_show_in[m] != NULL; ++m) - if (g_ascii_strcasecmp (not_show_in[m], "Xfce") == 0) - { - skip = TRUE; - break; - } - - g_strfreev (not_show_in); - } + /* check if "Xfce" is not specified */ + for (m = 0; not_show_in[m] != NULL; ++m) + if (g_ascii_strcasecmp (not_show_in[m], "XFCE") == 0) + { + skip = TRUE; + break; + } + + g_strfreev (not_show_in); } /* skip at-spi launchers if not in at-spi mode or don't skip _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits