* src/prefs_actions.c
* src/prefs_filtering.c
* src/prefs_template.c
fix bug 1343, 'Filtering..'s close button
silently discards new filter'
Thanks to Colin
+2007-10-05 [paul] 3.0.2cvs13
+
+ * src/prefs_actions.c
+ * src/prefs_filtering.c
+ * src/prefs_template.c
+ fix bug 1343, 'Filtering..'s close button
+ silently discards new filter'
+ Thanks to Colin
+
2007-10-05 [paul] 3.0.2cvs12
* configure.ac
2007-10-05 [paul] 3.0.2cvs12
* configure.ac
( cvs diff -u -r 1.1.2.42 -r 1.1.2.43 manual/advanced.xml; cvs diff -u -r 1.1.2.11 -r 1.1.2.12 manual/es/advanced.xml; ) > 3.0.2cvs10.patchset
( cvs diff -u -r 1.49.2.99 -r 1.49.2.100 src/procmime.c; cvs diff -u -r 1.1.4.8 -r 1.1.4.9 src/common/mgutils.c; ) > 3.0.2cvs11.patchset
( cvs diff -u -r 1.654.2.2980 -r 1.654.2.2981 configure.ac; cvs diff -u -r 1.155.2.76 -r 1.155.2.77 src/Makefile.am; ) > 3.0.2cvs12.patchset
( cvs diff -u -r 1.1.2.42 -r 1.1.2.43 manual/advanced.xml; cvs diff -u -r 1.1.2.11 -r 1.1.2.12 manual/es/advanced.xml; ) > 3.0.2cvs10.patchset
( cvs diff -u -r 1.49.2.99 -r 1.49.2.100 src/procmime.c; cvs diff -u -r 1.1.4.8 -r 1.1.4.9 src/common/mgutils.c; ) > 3.0.2cvs11.patchset
( cvs diff -u -r 1.654.2.2980 -r 1.654.2.2981 configure.ac; cvs diff -u -r 1.155.2.76 -r 1.155.2.77 src/Makefile.am; ) > 3.0.2cvs12.patchset
+( cvs diff -u -r 1.60.2.51 -r 1.60.2.52 src/prefs_actions.c; cvs diff -u -r 1.59.2.58 -r 1.59.2.59 src/prefs_filtering.c; cvs diff -u -r 1.12.2.48 -r 1.12.2.49 src/prefs_template.c; ) > 3.0.2cvs13.patchset
MICRO_VERSION=2
INTERFACE_AGE=0
BINARY_AGE=0
MICRO_VERSION=2
INTERFACE_AGE=0
BINARY_AGE=0
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
} actions;
static int modified = FALSE;
} actions;
static int modified = FALSE;
+static int modified_list = FALSE;
/* widget creating functions */
static void prefs_actions_create (MainWindow *mainwin);
/* widget creating functions */
static void prefs_actions_create (MainWindow *mainwin);
{
prefs_actions_clist_set_row(NULL);
modified = FALSE;
{
prefs_actions_clist_set_row(NULL);
modified = FALSE;
}
static void prefs_actions_substitute_cb(GtkWidget *w, gpointer data)
}
static void prefs_actions_substitute_cb(GtkWidget *w, gpointer data)
gtk_tree_path_free(path_sel);
gtk_tree_path_free(path_new);
modified = FALSE;
gtk_tree_path_free(path_sel);
gtk_tree_path_free(path_new);
modified = FALSE;
}
static void prefs_actions_delete_cb(GtkWidget *w, gpointer data)
}
static void prefs_actions_delete_cb(GtkWidget *w, gpointer data)
prefs_common.actions_list = g_slist_remove(prefs_common.actions_list,
action);
prefs_common.actions_list = g_slist_remove(prefs_common.actions_list,
action);
}
static void prefs_actions_up(GtkWidget *w, gpointer data)
}
static void prefs_actions_up(GtkWidget *w, gpointer data)
gtk_list_store_swap(store, &iprev, &isel);
prefs_actions_set_list();
gtk_list_store_swap(store, &iprev, &isel);
prefs_actions_set_list();
}
static void prefs_actions_down(GtkWidget *w, gpointer data)
}
static void prefs_actions_down(GtkWidget *w, gpointer data)
gtk_list_store_swap(store, &next, &sel);
prefs_actions_set_list();
gtk_list_store_swap(store, &next, &sel);
prefs_actions_set_list();
}
static gint prefs_actions_deleted(GtkWidget *widget, GdkEventAny *event,
}
static gint prefs_actions_deleted(GtkWidget *widget, GdkEventAny *event,
GTK_STOCK_CLOSE, _("+_Continue editing"),
NULL) != G_ALERTDEFAULT) {
return;
GTK_STOCK_CLOSE, _("+_Continue editing"),
NULL) != G_ALERTDEFAULT) {
return;
+ } else if (modified_list && alertpanel(_("Actions list not saved"),
+ _("The actions list has been modified. Close anyway?"),
+ GTK_STOCK_CLOSE, _("+_Continue editing"),
+ NULL) != G_ALERTDEFAULT) {
+ return;
prefs_actions_read_config();
gtk_widget_hide(actions.window);
inc_unlock();
prefs_actions_read_config();
gtk_widget_hide(actions.window);
inc_unlock();
GTK_STOCK_CLOSE, _("+_Continue editing"),
NULL) != G_ALERTDEFAULT) {
return;
GTK_STOCK_CLOSE, _("+_Continue editing"),
NULL) != G_ALERTDEFAULT) {
return;
+ } else if (modified_list && alertpanel(_("Actions list not saved"),
+ _("The actions list has been modified. Close anyway?"),
+ GTK_STOCK_CLOSE, _("+_Continue editing"),
+ NULL) != G_ALERTDEFAULT) {
+ return;
prefs_actions_set_list();
prefs_actions_write_config();
prefs_actions_set_list();
prefs_actions_write_config();
static gulong signal_id = 0; /* filtering.help_btn clicked signal */
static gulong signal_id = 0; /* filtering.help_btn clicked signal */
+static int modified = FALSE;
+
void prefs_filtering_open(GSList ** p_processing,
const gchar *title,
const gchar *help_url_anchor,
void prefs_filtering_open(GSList ** p_processing,
const gchar *title,
const gchar *help_url_anchor,
filteringprop_free(prop);
prefs_filtering_reset_dialog();
filteringprop_free(prop);
prefs_filtering_reset_dialog();
}
static void prefs_filtering_substitute_cb(void)
}
static void prefs_filtering_substitute_cb(void)
filteringprop_free(prop);
prefs_filtering_reset_dialog();
filteringprop_free(prop);
prefs_filtering_reset_dialog();
}
static void prefs_filtering_delete_cb(void)
}
static void prefs_filtering_delete_cb(void)
gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
prefs_filtering_reset_dialog();
gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
prefs_filtering_reset_dialog();
}
static void prefs_filtering_top(void)
}
static void prefs_filtering_top(void)
gtk_list_store_move_after(GTK_LIST_STORE(model), &sel, &top);
gtkut_list_view_select_row(filtering.cond_list_view, 1);
gtk_list_store_move_after(GTK_LIST_STORE(model), &sel, &top);
gtkut_list_view_select_row(filtering.cond_list_view, 1);
}
static void prefs_filtering_up(void)
}
static void prefs_filtering_up(void)
gtk_list_store_swap(GTK_LIST_STORE(model), &top, &sel);
gtkut_list_view_select_row(filtering.cond_list_view, row - 1);
gtk_list_store_swap(GTK_LIST_STORE(model), &top, &sel);
gtkut_list_view_select_row(filtering.cond_list_view, row - 1);
}
static void prefs_filtering_down(void)
}
static void prefs_filtering_down(void)
gtk_list_store_swap(GTK_LIST_STORE(model), &top, &sel);
gtkut_list_view_select_row(filtering.cond_list_view, row + 1);
gtk_list_store_swap(GTK_LIST_STORE(model), &top, &sel);
gtkut_list_view_select_row(filtering.cond_list_view, row + 1);
}
static void prefs_filtering_bottom(void)
}
static void prefs_filtering_bottom(void)
gtk_list_store_move_after(GTK_LIST_STORE(model), &top, &sel);
gtkut_list_view_select_row(filtering.cond_list_view, n_rows - 1);
gtk_list_store_move_after(GTK_LIST_STORE(model), &top, &sel);
gtkut_list_view_select_row(filtering.cond_list_view, n_rows - 1);
}
static void prefs_filtering_select_set(FilteringProp *prop)
}
static void prefs_filtering_select_set(FilteringProp *prop)
-static void prefs_filtering_ok(void)
+static gboolean prefs_filtering_check_mod(gboolean check_changed_list)
{
FilteringProp * prop;
gchar * str;
{
FilteringProp * prop;
gchar * str;
AlertValue val;
prop = prefs_filtering_dialog_to_filtering(FALSE);
AlertValue val;
prop = prefs_filtering_dialog_to_filtering(FALSE);
+
+ if (check_changed_list) {
+ if (modified && alertpanel(_("Filtering rules not saved"),
+ _("The list of filtering rules have been modified. Close anyway?"),
+ GTK_STOCK_CLOSE, _("+_Continue editing"),
+ NULL) != G_ALERTDEFAULT) {
+ return TRUE;
+ }
+ }
+
+ /* check if a rule is being edited */
if (prop != NULL) {
str = filteringprop_to_string(prop);
if (prop != NULL) {
str = filteringprop_to_string(prop);
g_free(filtering_str);
g_free(str); /* fixed two leaks: huzzah! */
filteringprop_free(prop);
g_free(filtering_str);
g_free(str); /* fixed two leaks: huzzah! */
filteringprop_free(prop);
g_free(name);
g_free(condition);
g_free(action);
g_free(name);
g_free(condition);
g_free(action);
}
}
g_free(name);
g_free(condition);
g_free(action);
}
}
}
g_free(name);
g_free(condition);
g_free(action);
}
+ return FALSE;
+}
+
+static void prefs_filtering_ok(void)
+{
+ if (prefs_filtering_check_mod(FALSE))
+ return;
+ modified = FALSE;
prefs_filtering_set_list();
prefs_matcher_write_config();
prefs_filtering_close();
prefs_filtering_set_list();
prefs_matcher_write_config();
prefs_filtering_close();
static void prefs_filtering_cancel(void)
{
static void prefs_filtering_cancel(void)
{
+ if (prefs_filtering_check_mod(TRUE))
+ return;
+ modified = FALSE;
prefs_matcher_read_config();
prefs_filtering_close();
}
prefs_matcher_read_config();
prefs_filtering_close();
}
} templates;
static int modified = FALSE;
} templates;
static int modified = FALSE;
+static int modified_list = FALSE;
/* widget creating functions */
static void prefs_template_window_create (void);
static void prefs_template_window_setup (void);
/* widget creating functions */
static void prefs_template_window_create (void);
static void prefs_template_window_setup (void);
GTK_STOCK_CLOSE, _("+_Continue editing"),
NULL) != G_ALERTDEFAULT) {
return;
GTK_STOCK_CLOSE, _("+_Continue editing"),
NULL) != G_ALERTDEFAULT) {
return;
+ } else if (modified_list && alertpanel(_("Templates list not saved"),
+ _("The templates list has been modified. Close anyway?"),
+ GTK_STOCK_CLOSE, _("+_Continue editing"),
+ NULL) != G_ALERTDEFAULT) {
+ return;
tmpl_list = prefs_template_get_list();
template_set_config(tmpl_list);
compose_reflect_prefs_all();
tmpl_list = prefs_template_get_list();
template_set_config(tmpl_list);
compose_reflect_prefs_all();
GTK_STOCK_CLOSE, _("+_Continue editing"),
NULL) != G_ALERTDEFAULT) {
return;
GTK_STOCK_CLOSE, _("+_Continue editing"),
NULL) != G_ALERTDEFAULT) {
return;
+ } else if (modified_list && alertpanel(_("Templates list not saved"),
+ _("The templates list has been modified. Close anyway?"),
+ GTK_STOCK_CLOSE, _("+_Continue editing"),
+ NULL) != G_ALERTDEFAULT) {
+ return;
prefs_template_clear();
gtk_widget_hide(templates.window);
inc_unlock();
prefs_template_clear();
gtk_widget_hide(templates.window);
inc_unlock();
static void prefs_template_register_cb(void)
{
modified = !prefs_template_list_view_set_row(NULL);
static void prefs_template_register_cb(void)
{
modified = !prefs_template_list_view_set_row(NULL);
}
static void prefs_template_substitute_cb(void)
}
static void prefs_template_substitute_cb(void)
if (!tmpl) return;
modified = !prefs_template_list_view_set_row(&row);
if (!tmpl) return;
modified = !prefs_template_list_view_set_row(&row);
}
static void prefs_template_delete_cb(void)
}
static void prefs_template_delete_cb(void)
NULL) != G_ALERTALTERNATE)
return;
NULL) != G_ALERTALTERNATE)
return;
- gtk_list_store_remove(GTK_LIST_STORE(model), &row);
+ gtk_list_store_remove(GTK_LIST_STORE(model), &row);
+ modified_list = TRUE;
}
static void prefs_template_top_cb(void)
}
static void prefs_template_top_cb(void)
gtk_list_store_move_after(GTK_LIST_STORE(model), &sel, &top);
gtkut_list_view_select_row(templates.list_view, 1);
gtk_list_store_move_after(GTK_LIST_STORE(model), &sel, &top);
gtkut_list_view_select_row(templates.list_view, 1);
}
static void prefs_template_up_cb(void)
}
static void prefs_template_up_cb(void)
gtk_list_store_swap(GTK_LIST_STORE(model), &top, &sel);
gtkut_list_view_select_row(templates.list_view, row - 1);
gtk_list_store_swap(GTK_LIST_STORE(model), &top, &sel);
gtkut_list_view_select_row(templates.list_view, row - 1);
}
static void prefs_template_down_cb(void)
}
static void prefs_template_down_cb(void)
gtk_list_store_swap(GTK_LIST_STORE(model), &top, &sel);
gtkut_list_view_select_row(templates.list_view, row + 1);
gtk_list_store_swap(GTK_LIST_STORE(model), &top, &sel);
gtkut_list_view_select_row(templates.list_view, row + 1);
}
static void prefs_template_bottom_cb(void)
}
static void prefs_template_bottom_cb(void)
gtk_list_store_move_after(GTK_LIST_STORE(model), &top, &sel);
gtkut_list_view_select_row(templates.list_view, n_rows - 1);
gtk_list_store_move_after(GTK_LIST_STORE(model), &top, &sel);
gtkut_list_view_select_row(templates.list_view, n_rows - 1);
}
static GtkListStore* prefs_template_create_data_store(void)
}
static GtkListStore* prefs_template_create_data_store(void)