[nautilus-actions] Do not try to build a menu when no info is available
- From: Pierre Wieser <pwieser src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus-actions] Do not try to build a menu when no info is available
- Date: Mon, 23 Aug 2010 19:25:21 +0000 (UTC)
commit 6a6e9a069666b8d1763f277e6fbfbdd9d2675660
Author: Pierre Wieser <pwieser trychlos org>
Date: Mon Aug 23 21:19:39 2010 +0200
Do not try to build a menu when no info is available
ChangeLog | 9 +++++++
src/core/na-selected-info.c | 13 ++++++++--
src/plugin-menu/nautilus-actions.c | 45 ++++++++++++++++++++---------------
3 files changed, 45 insertions(+), 22 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 287237e..3020b21 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2010-08-23 Pierre Wieser <pwieser trychlos org>
+ * src/core/na-selected-info.c
+ (na_selected_info_get_list_from_item, na_selected_info_get_list_from_list):
+ Returns a null list when NASelectedInfo object is null.
+
+ * src/plugin-menu/nautilus-actions.c
+ (menu_provider_get_background_items, menu_provider_get_file_items,
+ menu_provider_get_toolbar_items):
+ Do not try to build a menu for Nautilus when NASelectedInfo list is empty.
+
* configure.ac: Bump version number after unstable release.
* NEWS: Update NEWS before unstable release.
diff --git a/src/core/na-selected-info.c b/src/core/na-selected-info.c
index 0a62ea9..001a55d 100644
--- a/src/core/na-selected-info.c
+++ b/src/core/na-selected-info.c
@@ -205,8 +205,12 @@ na_selected_info_get_list_from_item( NautilusFileInfo *item )
{
GList *selected;
+ selected = NULL;
NASelectedInfo *info = new_from_nautilus_file_info( item );
- selected = g_list_prepend( NULL, info );
+
+ if( info ){
+ selected = g_list_prepend( NULL, info );
+ }
return( selected );
}
@@ -228,10 +232,13 @@ na_selected_info_get_list_from_list( GList *nautilus_selection )
for( it = nautilus_selection ; it ; it = it->next ){
NASelectedInfo *info = new_from_nautilus_file_info( NAUTILUS_FILE_INFO( it->data ));
- selected = g_list_prepend( selected, info );
+
+ if( info ){
+ selected = g_list_prepend( selected, info );
+ }
}
- return( g_list_reverse( selected ));
+ return( selected ? g_list_reverse( selected ) : NULL );
}
/**
diff --git a/src/plugin-menu/nautilus-actions.c b/src/plugin-menu/nautilus-actions.c
index 722f488..6005633 100644
--- a/src/plugin-menu/nautilus-actions.c
+++ b/src/plugin-menu/nautilus-actions.c
@@ -410,6 +410,10 @@ menu_provider_iface_init( NautilusMenuProviderIface *iface )
* - either there is zero item selected - current_folder should so be the
* folder currently displayed in the file manager view
* - or when there is only one selected directory
+ *
+ * Note that 'x-nautilus-desktop:///' cannot be interpreted by
+ * #NASelectedInfo::query_file_attributes() function. It so never participate
+ * to the display of actions.
*/
static GList *
menu_provider_get_background_items( NautilusMenuProvider *provider, GtkWidget *window, NautilusFileInfo *current_folder )
@@ -423,16 +427,17 @@ menu_provider_get_background_items( NautilusMenuProvider *provider, GtkWidget *w
if( !NAUTILUS_ACTIONS( provider )->private->dispose_has_run ){
- uri = nautilus_file_info_get_uri( current_folder );
- g_debug( "%s: provider=%p, window=%p, current_folder=%p (%s)",
- thisfn, ( void * ) provider, ( void * ) window, ( void * ) current_folder, uri );
- g_free( uri );
-
selected = na_selected_info_get_list_from_item( current_folder );
- nautilus_menus_list = get_menus_items( NAUTILUS_ACTIONS( provider ), ITEM_TARGET_LOCATION, selected );
+ if( selected ){
+ uri = nautilus_file_info_get_uri( current_folder );
+ g_debug( "%s: provider=%p, window=%p, current_folder=%p (%s)",
+ thisfn, ( void * ) provider, ( void * ) window, ( void * ) current_folder, uri );
+ g_free( uri );
- na_selected_info_free_list( selected );
+ nautilus_menus_list = get_menus_items( NAUTILUS_ACTIONS( provider ), ITEM_TARGET_LOCATION, selected );
+ na_selected_info_free_list( selected );
+ }
}
return( nautilus_menus_list );
@@ -460,14 +465,15 @@ menu_provider_get_file_items( NautilusMenuProvider *provider, GtkWidget *window,
if( !NAUTILUS_ACTIONS( provider )->private->dispose_has_run ){
- g_debug( "%s: provider=%p, window=%p, files=%p, count=%d",
- thisfn, ( void * ) provider, ( void * ) window, ( void * ) files, g_list_length( files ));
-
selected = na_selected_info_get_list_from_list(( GList * ) files );
- nautilus_menus_list = get_menus_items( NAUTILUS_ACTIONS( provider ), ITEM_TARGET_SELECTION, selected );
+ if( selected ){
+ g_debug( "%s: provider=%p, window=%p, files=%p, count=%d",
+ thisfn, ( void * ) provider, ( void * ) window, ( void * ) files, g_list_length( files ));
- na_selected_info_free_list( selected );
+ nautilus_menus_list = get_menus_items( NAUTILUS_ACTIONS( provider ), ITEM_TARGET_SELECTION, selected );
+ na_selected_info_free_list( selected );
+ }
}
return( nautilus_menus_list );
@@ -490,16 +496,17 @@ menu_provider_get_toolbar_items( NautilusMenuProvider *provider, GtkWidget *wind
if( !NAUTILUS_ACTIONS( provider )->private->dispose_has_run ){
- uri = nautilus_file_info_get_uri( current_folder );
- g_debug( "%s: provider=%p, window=%p, current_folder=%p (%s)",
- thisfn, ( void * ) provider, ( void * ) window, ( void * ) current_folder, uri );
- g_free( uri );
-
selected = na_selected_info_get_list_from_item( current_folder );
- nautilus_menus_list = get_menus_items( NAUTILUS_ACTIONS( provider ), ITEM_TARGET_TOOLBAR, selected );
+ if( selected ){
+ uri = nautilus_file_info_get_uri( current_folder );
+ g_debug( "%s: provider=%p, window=%p, current_folder=%p (%s)",
+ thisfn, ( void * ) provider, ( void * ) window, ( void * ) current_folder, uri );
+ g_free( uri );
- na_selected_info_free_list( selected );
+ nautilus_menus_list = get_menus_items( NAUTILUS_ACTIONS( provider ), ITEM_TARGET_TOOLBAR, selected );
+ na_selected_info_free_list( selected );
+ }
}
return( nautilus_menus_list );
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]