Author: colossus
Date: 2007-10-29 12:09:16 +0000 (Mon, 29 Oct 2007)
New Revision: 26215
Modified:
xarchiver/trunk/src/archive.c
xarchiver/trunk/src/archive.h
xarchiver/trunk/src/interface.c
xarchiver/trunk/src/window.c
Log:
Fixed sg faults with back button.
Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c 2007-10-28 22:18:37 UTC (rev 26214)
+++ xarchiver/trunk/src/archive.c 2007-10-29 12:09:16 UTC (rev 26215)
@@ -450,6 +450,11 @@
{
entry = archive->root_entry->child;
gtk_entry_set_text(GTK_ENTRY(location_entry),"\0");
+ if (archive->location_entry_path != NULL)
+ {
+ g_free(archive->location_entry_path);
+ archive->location_entry_path = NULL;
+ }
//gtk_widget_set_sensitive(back_button,FALSE);
gtk_widget_set_sensitive(up_button,FALSE);
gtk_widget_set_sensitive(home_button,FALSE);
Modified: xarchiver/trunk/src/archive.h
===================================================================
--- xarchiver/trunk/src/archive.h 2007-10-28 22:18:37 UTC (rev 26214)
+++ xarchiver/trunk/src/archive.h 2007-10-29 12:09:16 UTC (rev 26215)
@@ -70,8 +70,8 @@
XArchiveStatus status;
XEntry *root_entry;
XEntry *entry;
- GList *history;
- GList *present;
+ GSList *back;
+ GSList *forward;
gchar *path;
gchar *escaped_path;
gchar *tmp;
Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c 2007-10-28 22:18:37 UTC (rev 26214)
+++ xarchiver/trunk/src/interface.c 2007-10-29 12:09:16 UTC (rev 26215)
@@ -288,6 +288,7 @@
tmp_image = gtk_image_new_from_stock ("gtk-go-back",
tmp_toolbar_icon_size);
gtk_widget_show (tmp_image);
back_button = (GtkWidget*) gtk_tool_button_new (tmp_image, _("Back"));
+ gtk_widget_set_sensitive(back_button,FALSE);
gtk_widget_show (back_button);
gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (back_button), FALSE);
gtk_container_add (GTK_CONTAINER (toolbar1), back_button);
@@ -305,6 +306,7 @@
tmp_image = gtk_image_new_from_stock ("gtk-go-forward",
tmp_toolbar_icon_size);
gtk_widget_show (tmp_image);
forward_button = (GtkWidget*) gtk_tool_button_new (tmp_image,
_("Forward"));
+ gtk_widget_set_sensitive(forward_button,FALSE);
gtk_widget_show (forward_button);
gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (forward_button), FALSE);
gtk_container_add (GTK_CONTAINER (toolbar1), forward_button);
@@ -921,8 +923,19 @@
/* Back */
case 1:
- archive[idx]->present = archive[idx]->present->prev;
-
xa_update_window_with_archive_entries(archive[idx],archive[idx]->present->data);
+ //archive[idx]->forward =
g_slist_prepend(archive[idx]->forward,xa_find_entry_from_path(archive[idx]->root_entry,archive[idx]->location_entry_path));
+ if (archive[idx]->back->data != NULL)
+ {
+
xa_update_window_with_archive_entries(archive[idx],archive[idx]->back->data);
+ archive[idx]->back = archive[idx]->back->next;
+ }
+ else
+ {
+ gtk_widget_set_sensitive(back_button,FALSE);
+
xa_update_window_with_archive_entries(archive[idx],NULL);
+ g_slist_free(archive[idx]->back);
+ archive[idx]->back = NULL;
+ }
break;
/* Up */
@@ -931,16 +944,26 @@
if (new_entry->prev->prev == NULL)
{
xa_update_window_with_archive_entries(archive[idx],NULL);
+ gtk_widget_set_sensitive(back_button,FALSE);
gtk_widget_set_sensitive(up_button,FALSE);
return;
}
xa_update_window_with_archive_entries(archive[idx],new_entry->prev);
break;
-
+
/* Forward */
case 3:
- archive[idx]->present = archive[idx]->present->next;
-
xa_update_window_with_archive_entries(archive[idx],archive[idx]->present->data);
+ /*if (archive[idx]->forward != NULL &&
archive[idx]->forward->data != NULL)
+ {
+
xa_update_window_with_archive_entries(archive[idx],archive[idx]->forward->data);
+ archive[idx]->forward =
archive[idx]->forward->next;
+ }
+ else
+ {
+ gtk_widget_set_sensitive(forward_button,FALSE);
+
//xa_update_window_with_archive_entries(archive[idx],NULL);
+ //g_slist_free(archive[idx]->forward);
+ }*/
break;
}
}
Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c 2007-10-28 22:18:37 UTC (rev 26214)
+++ xarchiver/trunk/src/window.c 2007-10-29 12:09:16 UTC (rev 26215)
@@ -2053,16 +2053,13 @@
{
gtk_widget_set_sensitive(up_button,TRUE);
gtk_widget_set_sensitive(home_button,TRUE);
+ gtk_widget_set_sensitive(back_button,TRUE);
+
+ if (archive[idx]->location_entry_path != NULL)
+ archive[idx]->back =
g_slist_prepend(archive[idx]->back,xa_find_entry_from_path(archive[idx]->root_entry,archive[idx]->location_entry_path));
+ /* Put NULL so to display the root entry */
+ else
+ archive[idx]->back =
g_slist_prepend(archive[idx]->back,NULL);
}
- if (archive[idx]->location_entry_path != NULL)
- {
- archive[idx]->history =
g_list_append(archive[idx]->history,xa_find_entry_from_path(archive[idx]->root_entry,archive[idx]->location_entry_path));
- archive[idx]->present = g_list_last(archive[idx]->history);
- }
- else
- {
- archive[idx]->history =
g_list_append(archive[idx]->history,archive[idx]->root_entry);
- archive[idx]->present = g_list_last(archive[idx]->history);
- }
xa_update_window_with_archive_entries(archive[idx],entry);
}
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits