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