[Xfce4-commits] r23877 - xarchiver/branches/xarchiver-psybsd/libxarchiver

Stephan Arts stephan at xfce.org
Tue Nov 14 21:49:54 CET 2006


Author: stephan
Date: 2006-11-14 20:49:54 +0000 (Tue, 14 Nov 2006)
New Revision: 23877

Modified:
   xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
Log:
Added signal to archive (and it is emitted when an item is removed)



Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c	2006-11-14 20:48:26 UTC (rev 23876)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c	2006-11-14 20:49:54 UTC (rev 23877)
@@ -116,7 +116,7 @@
 	return strcmp(entry1->filename, entry2->filename);
 }
 
-static gint lxa_archive_signals[2];
+static gint lxa_archive_signals[3];
 
 GType
 lxa_archive_get_type ()
@@ -172,6 +172,17 @@
 			G_TYPE_NONE,
 			0,
 			NULL);
+
+	lxa_archive_signals[2] = g_signal_new("lxa_path_changed",
+			G_TYPE_FROM_CLASS(archive_class),
+			G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+			0,
+			NULL,
+			NULL,
+			g_cclosure_marshal_VOID__POINTER,
+			G_TYPE_NONE,
+			0,
+			NULL);
 }
 
 static void
@@ -238,6 +249,8 @@
 lxa_archive_set_status(LXAArchive *archive, LXAArchiveStatus status)
 {
 	LXA_ARCHIVE_WRITE_LOCK(&archive->rw_lock);
+	gchar **path = NULL;
+
 	if(LXA_IS_ARCHIVE(archive))
 	{
 		if(archive->status != status)
@@ -245,9 +258,14 @@
 			archive->old_status = archive->status;
 			archive->status = status;
 			g_signal_emit(G_OBJECT(archive), lxa_archive_signals[0], 0, archive);
-			if((archive->old_status == LXA_ARCHIVESTATUS_REFRESH) &&
-			  (archive->status == LXA_ARCHIVESTATUS_IDLE))
+			if((archive->old_status == LXA_ARCHIVESTATUS_REFRESH) && (archive->status == LXA_ARCHIVESTATUS_IDLE))
 				g_signal_emit(G_OBJECT(archive), lxa_archive_signals[1], 0, archive);
+			if((archive->old_status == LXA_ARCHIVESTATUS_REMOVE) && (archive->files))
+			{
+				path = g_strsplit(archive->files, " ", 2);
+				g_signal_emit(G_OBJECT(archive), lxa_archive_signals[2], 0, archive, path[0]);
+				g_strfreev(path);
+			}
 		} 
 	}
 	LXA_ARCHIVE_WRITE_UNLOCK(&archive->rw_lock);



More information about the Xfce4-commits mailing list