Author: colossus
Date: 2008-10-16 10:00:57 +0000 (Thu, 16 Oct 2008)
New Revision: 28267

Modified:
   xarchiver/trunk/src/archive.c
   xarchiver/trunk/src/archive.h
   xarchiver/trunk/src/interface.c
   xarchiver/trunk/src/string_utils.c
   xarchiver/trunk/src/window.c
Log:
The current archive locations is now displayed when deleting/adding/renaming an 
entry in the archive.
Fixed missed archive reload when using cut popupmenu option.
Override DEL key when renaming an entry to avoid delete dialog to appear.


Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c       2008-10-16 08:04:46 UTC (rev 28266)
+++ xarchiver/trunk/src/archive.c       2008-10-16 10:00:57 UTC (rev 28267)
@@ -768,6 +768,7 @@
        XEntry *entry = data;
        XEntry *entry2;
        GtkTreeIter parent;
+       gboolean value;
 
        gtk_tree_model_get (model,iter,2,&entry2,-1);
        if (entry == entry2)
@@ -778,13 +779,12 @@
 
                gtk_tree_selection_select_iter(gtk_tree_view_get_selection 
(GTK_TREE_VIEW (archive_dir_treeview)),iter);
                gtk_tree_view_scroll_to_cell 
(GTK_TREE_VIEW(archive_dir_treeview),path,NULL,FALSE,0,0);
+               value = TRUE;
        }
        else
-       {
-               return FALSE;
-               gtk_tree_selection_unselect_iter(gtk_tree_view_get_selection 
(GTK_TREE_VIEW (archive_dir_treeview)),iter);
-       }
-       return FALSE;
+               value = FALSE;
+
+       return value;
 }
 
 gint xa_sort_dirs_before_files(GtkTreeModel *model,GtkTreeIter *a,GtkTreeIter 
*b,gpointer data)

Modified: xarchiver/trunk/src/archive.h
===================================================================
--- xarchiver/trunk/src/archive.h       2008-10-16 08:04:46 UTC (rev 28266)
+++ xarchiver/trunk/src/archive.h       2008-10-16 10:00:57 UTC (rev 28267)
@@ -174,7 +174,7 @@
 void xa_browse_dir_sidebar (XEntry *, GtkTreeStore *,gchar *,GtkTreeIter *);
 void xa_fill_dir_sidebar(XArchive *,gboolean);
 void xa_sidepane_row_selected(GtkTreeSelection *, gpointer );
-void xa_sidepane_select_row(XEntry *entry);
+void xa_sidepane_select_row(XEntry *);
 gboolean _xa_sidepane_select_row(GtkTreeModel *,GtkTreePath *,GtkTreeIter 
*,gpointer );
 gint xa_sort_dirs_before_files(GtkTreeModel *,GtkTreeIter *,GtkTreeIter 
*,gpointer );
 XArchive *archive[100];

Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c     2008-10-16 08:04:46 UTC (rev 28266)
+++ xarchiver/trunk/src/interface.c     2008-10-16 10:00:57 UTC (rev 28267)
@@ -187,7 +187,7 @@
        gtk_widget_show (delete_menu);
        gtk_container_add (GTK_CONTAINER (menuitem2_menu),delete_menu);
        gtk_widget_add_accelerator 
(delete_menu,"activate",accel_group,GDK_Delete,GDK_MODE_DISABLED,GTK_ACCEL_VISIBLE);
-       
+
        rename_menu = gtk_image_menu_item_new_with_mnemonic (_("Rename"));
        gtk_widget_set_sensitive (rename_menu,FALSE);
        gtk_widget_show (rename_menu);
@@ -1283,18 +1283,18 @@
                /* Up */
                case 2:
                        archive[idx]->forward = 
g_slist_prepend(archive[idx]->forward,archive[idx]->current_entry);
-                       new_entry = archive[idx]->current_entry;
 
-                       if (new_entry->prev->prev == NULL)
+                       /* Let's unselect the row in the sidepane */
+                       selection = gtk_tree_view_get_selection (GTK_TREE_VIEW 
(archive_dir_treeview));
+                       if (selection != NULL)
                        {
-                               gtk_widget_set_sensitive(back_button,FALSE);
-                               
xa_update_window_with_archive_entries(archive[idx],NULL);
+                               gtk_tree_selection_get_selected 
(selection,&model,&iter);
+                               
gtk_tree_selection_unselect_iter(selection,&iter);
                        }
-                       else
-                       {
-                               
xa_update_window_with_archive_entries(archive[idx],new_entry->prev);
-                               xa_sidepane_select_row(new_entry->prev);
-                       }
+                       new_entry = 
xa_find_entry_from_path(archive[idx]->root_entry,archive[idx]->location_entry_path);
+                       
xa_update_window_with_archive_entries(archive[idx],new_entry->prev);
+                       xa_sidepane_select_row(new_entry->prev);
+
                        if (archive[idx]->back)
                                archive[idx]->back = archive[idx]->back->next;
                        xa_restore_navigation(idx);

Modified: xarchiver/trunk/src/string_utils.c
===================================================================
--- xarchiver/trunk/src/string_utils.c  2008-10-16 08:04:46 UTC (rev 28266)
+++ xarchiver/trunk/src/string_utils.c  2008-10-16 10:00:57 UTC (rev 28267)
@@ -124,7 +124,7 @@
                 extra_chars++;
 
         new_l = strlen (str) + (count_chars_to_escape (str, meta_chars) * 
extra_chars);
-        escaped = g_malloc (new_l + 1);
+        escaped = g_malloc0 (new_l + 1);
 
         s = str;
         t = escaped;
@@ -146,9 +146,17 @@
 gchar *xa_remove_level_from_path (const gchar *path)
 {
        gchar *local_path;
+       gchar *_local_path;
     gchar *local_escaped_path;
 
-    local_path = g_path_get_dirname (path);
+       if (path[strlen(path)-1] == '/')
+       {
+               _local_path = g_strndup(path,strlen(path)-1);
+               local_path  = g_path_get_dirname (_local_path);
+               g_free(_local_path);
+       }
+       else
+       local_path = g_path_get_dirname (path);
     local_escaped_path = xa_escape_bad_chars ( local_path ,"$\'`\"\\!?* 
()[]&|@#:;");
     g_free (local_path);
     return local_escaped_path;

Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c        2008-10-16 08:04:46 UTC (rev 28266)
+++ xarchiver/trunk/src/window.c        2008-10-16 10:00:57 UTC (rev 28267)
@@ -122,7 +122,7 @@
 void xa_reload_archive_content(XArchive *archive)
 {
        XEntry *entry;
-       
+
        //TODO: have the status bar notyfing the reload
        if (xa_main_window == NULL)
                return;
@@ -2395,6 +2395,7 @@
 
        if (paste_data->mode == XA_CLIPBOARD_CUT)
        {
+               paste_data->cut_copy_archive->status = XA_ARCHIVESTATUS_DELETE;
                list = xa_slist_copy(paste_data->files);
                (paste_data->cut_copy_archive->delete) 
(paste_data->cut_copy_archive,list);
        }
@@ -2503,6 +2504,7 @@
        row_list = gtk_tree_selection_get_selected_rows(selection,&model);
 
        g_object_set(archive[idx]->renderer_text,"editable",TRUE,NULL);
+       
gtk_accel_group_disconnect_key(accel_group,GDK_Delete,GDK_MODE_DISABLED);
        column = gtk_tree_view_get_column(GTK_TREE_VIEW 
(archive[idx]->treeview),0);
        
gtk_tree_view_set_cursor(GTK_TREE_VIEW(archive[idx]->treeview),row_list->data,column,TRUE);
        gtk_tree_path_free (row_list->data);
@@ -2512,6 +2514,7 @@
 void xa_rename_cell_edited_canceled(GtkCellRenderer *renderer,gpointer data)
 {
        g_object_set(renderer,"editable",FALSE,NULL);
+       gtk_widget_add_accelerator 
(delete_menu,"activate",accel_group,GDK_Delete,GDK_MODE_DISABLED,GTK_ACCEL_VISIBLE);
 }
 
 void xa_rename_cell_edited (GtkCellRendererText *cell,const gchar 
*path_string,const gchar *new_name,XArchive *archive)
@@ -2586,6 +2589,7 @@
                chdir (archive->tmp);
                xa_execute_add_commands(archive,list,NULL);
        }
+       gtk_widget_add_accelerator 
(delete_menu,"activate",accel_group,GDK_Delete,GDK_MODE_DISABLED,GTK_ACCEL_VISIBLE);
        g_object_set(cell,"editable",FALSE,NULL);
 }
 
@@ -2778,7 +2782,14 @@
        gchar *filename;
        gint size;
 
-       archive->current_entry = entry;
+       if ( (archive->status == XA_ARCHIVESTATUS_ADD || archive->status == 
XA_ARCHIVESTATUS_DELETE) && archive->location_entry_path != NULL)
+       {
+               archive->status = XA_ARCHIVESTATUS_IDLE;
+               entry = 
xa_find_entry_from_path(archive->root_entry,archive->location_entry_path);
+       }
+       else
+               archive->current_entry = entry;
+
        if (entry == NULL)
        {
                entry = archive->root_entry->child;

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to