+2002-12-08 [christoph] 0.8.6claws77
+
+ * src/folderview.c
+ * src/statusbar.c
+ * src/summaryview.c
+ * src/common/hooks.[ch]
+ hook functions now have a gboolean return value, if a hook
+ returns TRUE it will stop executing of any more hooks in
+ the same hooklist for this invokation
+
2002-12-08 [colin] 0.8.6claws76
* src/main.c
MICRO_VERSION=6
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=claws76
+EXTRA_VERSION=claws77
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
dnl set $target
{
}
-static void hooks_marshal(GHook *hook, gpointer source)
+struct MarshalData
+{
+ gpointer source;
+ gboolean abort;
+};
+
+static void hooks_marshal(GHook *hook, gpointer data)
{
gboolean (*func) (gpointer source, gpointer data);
-
- func = hook->func;
- func(source, hook->data);
+ struct MarshalData *marshal_data = (struct MarshalData *)data;
+
+ if (!marshal_data->abort) {
+ func = hook->func;
+ marshal_data->abort = func(marshal_data->source, hook->data);
+ }
}
void hooks_invoke(gchar *hooklist_name,
gpointer source)
{
GHookList *hooklist;
+ struct MarshalData marshal_data;
g_return_if_fail(hooklist_name != NULL);
hooklist = hooks_get_hooklist(hooklist_name);
g_return_if_fail(hooklist != NULL);
- g_hook_list_marshal(hooklist, TRUE, hooks_marshal, source);
+ marshal_data.source = source;
+ marshal_data.abort = FALSE;
+
+ g_hook_list_marshal(hooklist, TRUE, hooks_marshal, &marshal_data);
}
#ifndef HOOKS_H
#define HOOKS_H
-typedef void (*SylpheedHookFunction) (gpointer source,
- gpointer userdata);
+typedef gboolean (*SylpheedHookFunction) (gpointer source,
+ gpointer userdata);
gint hooks_register_hook (gchar *hooklist_name,
SylpheedHookFunction hook_func,
#define __VERSION_H__
#define PACKAGE "sylpheed"
-#define VERSION "0.8.6claws75"
+#define VERSION "0.8.6claws77"
#define PROG_VERSION "Sylpheed version "VERSION
#endif /* __VERSION_H__ */
void folderview_create_folder_node (FolderView *folderview,
FolderItem *item);
-void folderview_update_item (gpointer source,
+gboolean folderview_update_item (gpointer source,
gpointer data);
static void folderview_scoring_cb(FolderView *folderview, guint action,
folderview_update_node(folderview, node);
}
-void folderview_update_item(gpointer source, gpointer data)
+gboolean folderview_update_item(gpointer source, gpointer data)
{
FolderItemUpdateData *update_info = (FolderItemUpdateData *)source;
FolderView *folderview = (FolderView *)data;
GtkCTree *ctree;
GtkCTreeNode *node;
- g_return_if_fail(update_info != NULL);
- g_return_if_fail(update_info->item != NULL);
- g_return_if_fail(folderview != NULL);
+ g_return_val_if_fail(update_info != NULL, TRUE);
+ g_return_val_if_fail(update_info->item != NULL, TRUE);
+ g_return_val_if_fail(folderview != NULL, TRUE);
ctree = GTK_CTREE(folderview->ctree);
if (update_info->content_change && folderview->opened == node)
summary_show(folderview->summaryview, update_info->item);
}
+
+ return FALSE;
}
static gboolean folderview_gnode_func(GtkCTree *ctree, guint depth,
#define BUFFSIZE 1024
static GList *statusbar_list = NULL;
-void statusbar_puts_all_hook (gpointer source, gpointer data);
+gboolean statusbar_puts_all_hook (gpointer source, gpointer data);
GtkWidget *statusbar_create(void)
{
return statusbar;
}
-void statusbar_puts_all_hook (gpointer source, gpointer data)
+gboolean statusbar_puts_all_hook (gpointer source, gpointer data)
{
LogText *logtext = (LogText *) source;
+
+ g_return_val_if_fail(logtext != NULL, NULL);
+
statusbar_puts_all(logtext->text);
+
+ return FALSE;
}
void statusbar_puts(GtkStatusbar *statusbar, const gchar *str)
static void tog_searchbar_cb (GtkWidget *w,
gpointer data);
-static void summary_update_msg (gpointer source, gpointer data);
+static gboolean summary_update_msg (gpointer source, gpointer data);
GtkTargetEntry summary_drag_types[1] =
{
item->threaded = summaryview->threaded;
}
-static void summary_update_msg(gpointer source, gpointer data) {
+static gboolean summary_update_msg(gpointer source, gpointer data) {
MsgInfoUpdate *msginfo_update = (MsgInfoUpdate *) source;
SummaryView *summaryview = (SummaryView *)data;
GtkCTreeNode *node;
- g_return_if_fail(msginfo_update != NULL);
- g_return_if_fail(summaryview != NULL);
+ g_return_val_if_fail(msginfo_update != NULL, TRUE);
+ g_return_val_if_fail(summaryview != NULL, TRUE);
node = gtk_ctree_find_by_row_data(GTK_CTREE(summaryview->ctree), NULL, msginfo_update->msginfo);
if (node)
summary_set_row_marks(summaryview, node);
+
+ return FALSE;
}
/*