diff --git a/src/xfdesktop-file-icon-manager.c b/src/xfdesktop-file-icon-manager.c index d9e54306..37346bd2 100644 --- a/src/xfdesktop-file-icon-manager.c +++ b/src/xfdesktop-file-icon-manager.c @@ -145,11 +145,6 @@ struct _XfdesktopFileIconManagerPrivate GtkTargetList *drag_targets; GtkTargetList *drop_targets; -#ifdef HAVE_THUNARX - GList *thunarx_menu_providers; - GList *thunarx_properties_providers; -#endif - XfdesktopThumbnailer *thumbnailer; guint max_templates; @@ -1376,6 +1371,8 @@ xfdesktop_file_icon_manager_populate_context_menu(XfceDesktop *desktop, GFile *templates_dir = NULL, *home_dir; const gchar *templates_dir_path = NULL; #ifdef HAVE_THUNARX + ThunarxProviderFactory *thunarx_pfac; + GList *thunarx_menu_providers; GtkWidget *toplevel = gtk_widget_get_toplevel(GTK_WIDGET(fmanager->priv->icon_view)); #endif @@ -1803,13 +1800,21 @@ xfdesktop_file_icon_manager_populate_context_menu(XfceDesktop *desktop, } #ifdef HAVE_THUNARX - if(!multi_sel_special && fmanager->priv->thunarx_menu_providers) { + thunarx_pfac = thunarx_provider_factory_get_default(); + + thunarx_menu_providers = + thunarx_provider_factory_list_providers(thunarx_pfac, + THUNARX_TYPE_MENU_PROVIDER); + + g_object_unref(G_OBJECT(thunarx_pfac)); + + if(!multi_sel_special && thunarx_menu_providers) { GList *menu_items = NULL; ThunarxMenuProvider *provider; if(selected->data == fmanager->priv->desktop_icon) { /* click on the desktop itself, only show folder actions */ - for(l = fmanager->priv->thunarx_menu_providers; l; l = l->next) { + for(l = thunarx_menu_providers; l; l = l->next) { provider = THUNARX_MENU_PROVIDER(l->data); menu_items = g_list_concat(menu_items, thunarx_menu_provider_get_folder_menu_items(provider, @@ -1819,7 +1824,7 @@ xfdesktop_file_icon_manager_populate_context_menu(XfceDesktop *desktop, } else { /* thunar file specific actions (allows them to operate on folders * that are on the desktop as well) */ - for(l = fmanager->priv->thunarx_menu_providers; l; l = l->next) { + for(l = thunarx_menu_providers; l; l = l->next) { provider = THUNARX_MENU_PROVIDER(l->data); menu_items = g_list_concat(menu_items, thunarx_menu_provider_get_file_menu_items(provider, @@ -1839,6 +1844,10 @@ xfdesktop_file_icon_manager_populate_context_menu(XfceDesktop *desktop, gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi); } } + + g_list_foreach(thunarx_menu_providers, + (GFunc)g_object_unref, NULL); + g_list_free(thunarx_menu_providers); #endif if(file_icon == fmanager->priv->desktop_icon) { @@ -3186,9 +3195,6 @@ xfdesktop_file_icon_manager_real_init(XfdesktopIconViewManager *manager, XfdesktopFileIconManager *fmanager = XFDESKTOP_FILE_ICON_MANAGER(manager); GFileInfo *desktop_info; gint i; -#ifdef HAVE_THUNARX - ThunarxProviderFactory *thunarx_pfac; -#endif if(fmanager->priv->inited) { g_warning("Initializing icon manager when already inited"); @@ -3258,19 +3264,6 @@ xfdesktop_file_icon_manager_real_init(XfdesktopIconViewManager *manager, xfdesktop_file_icon_manager_add_special_file_icon(fmanager, i); } -#ifdef HAVE_THUNARX - thunarx_pfac = thunarx_provider_factory_get_default(); - - fmanager->priv->thunarx_menu_providers = - thunarx_provider_factory_list_providers(thunarx_pfac, - THUNARX_TYPE_MENU_PROVIDER); - fmanager->priv->thunarx_properties_providers = - thunarx_provider_factory_list_providers(thunarx_pfac, - THUNARX_TYPE_PROPERTY_PAGE_PROVIDER); - - g_object_unref(G_OBJECT(thunarx_pfac)); -#endif - desktop_info = g_file_query_info(fmanager->priv->folder, XFDESKTOP_FILE_INFO_NAMESPACE, G_FILE_QUERY_INFO_NONE, @@ -3385,16 +3378,6 @@ xfdesktop_file_icon_manager_fini(XfdesktopIconViewManager *manager) g_object_unref(G_OBJECT(fmanager->priv->desktop_icon)); fmanager->priv->desktop_icon = NULL; -#ifdef HAVE_THUNARX - g_list_foreach(fmanager->priv->thunarx_menu_providers, - (GFunc)g_object_unref, NULL); - g_list_free(fmanager->priv->thunarx_menu_providers); - - g_list_foreach(fmanager->priv->thunarx_properties_providers, - (GFunc)g_object_unref, NULL); - g_list_free(fmanager->priv->thunarx_properties_providers); -#endif - g_hash_table_destroy(fmanager->priv->special_icons); fmanager->priv->special_icons = NULL;