[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