fix bug 4239, 'Preferences: Text Options Header Display modal is not modal' (sic)
[claws.git] / src / prefs_filtering.c
index 799b54e95e128384d3f0ad9a0185b9654c1aafc5..d1104e97688ef0fffec451f1da64d2a4ae6c83c2 100644 (file)
@@ -342,6 +342,7 @@ static void prefs_filtering_create(void)
        gtk_container_set_border_width (GTK_CONTAINER (window), 8);
        gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
        gtk_window_set_resizable(GTK_WINDOW (window), TRUE);
+       gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG);
 
        vbox = gtk_vbox_new (FALSE, 6);
        gtk_widget_show (vbox);
@@ -957,7 +958,6 @@ static void prefs_filtering_set_list(void)
                                        filtering.cond_list_view, row,
                                        &enabled, &name, &account_id);
                        prop = matcher_parser_get_filtering(filtering_str);
-                       g_free(filtering_str);
                        if (prop) {
                                prop->enabled = enabled;
                                if (prop->name != NULL)
@@ -968,7 +968,8 @@ static void prefs_filtering_set_list(void)
                                        g_slist_append(prefs_filtering, prop);
                        }
                }
-               
+
+               g_free(filtering_str);
                row++;
        }                               
        
@@ -1183,6 +1184,7 @@ static void prefs_filtering_substitute_cb(gpointer action, gpointer data)
        prefs_filtering_list_view_get_rule_info(
                        filtering.cond_list_view, selected_row,
                        &enabled, &name, &account_id);
+       g_free(name); /* We're not using this. */
        prop->enabled = enabled;
 
        prefs_filtering_list_view_set_row(selected_row, prop);
@@ -1263,6 +1265,7 @@ static void prefs_filtering_duplicate_cb(gpointer action, gpointer data)
        prefs_filtering_list_view_get_rule_info(
                        filtering.cond_list_view, selected_row,
                        &enabled, &name, &account_id);
+       g_free(name); /* We're not using this. */
        prop->enabled = enabled;
 
        prefs_filtering_list_view_set_row(-selected_row-2, prop);
@@ -1693,7 +1696,7 @@ static GtkWidget *prefs_filtering_popup_menu = NULL;
 
 static GtkActionEntry prefs_filtering_popup_entries[] =
 {
-       {"PrefsFilteringPopup",                 NULL, "PrefsFilteringPopup" },
+       {"PrefsFilteringPopup",                 NULL, "PrefsFilteringPopup", NULL, NULL, NULL },
        {"PrefsFilteringPopup/Delete",          NULL, N_("_Delete"), NULL, NULL, G_CALLBACK(prefs_filtering_delete_cb) },
        {"PrefsFilteringPopup/DeleteAll",       NULL, N_("Delete _all"), NULL, NULL, G_CALLBACK(prefs_filtering_delete_all_cb) },
        {"PrefsFilteringPopup/Duplicate",       NULL, N_("D_uplicate"), NULL, NULL, G_CALLBACK(prefs_filtering_duplicate_cb) },
@@ -1798,9 +1801,11 @@ static GtkWidget *prefs_filtering_list_view_create(void)
 {
        GtkTreeView *list_view;
        GtkTreeSelection *selector;
+       GtkListStore *store = prefs_filtering_create_data_store();
 
-       list_view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(GTK_TREE_MODEL
-               (prefs_filtering_create_data_store())));
+       list_view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(
+                               GTK_TREE_MODEL(store)));
+       g_object_unref(store);
 #ifdef GENERIC_UMPC
        g_object_set(list_view, "allow-checkbox-mode", FALSE, NULL);
 #endif
@@ -1928,11 +1933,7 @@ static void prefs_filtering_select_row(GtkTreeView *list_view, GtkTreePath *path
 
                        gtk_tree_model_get(model, &iter,
                                           PREFS_FILTERING_RULE, &filtering_str,
-                                          -1);
-                       gtk_tree_model_get(model, &iter,
                                           PREFS_FILTERING_NAME, &name,
-                                          -1);
-                       gtk_tree_model_get(model, &iter,
                                           PREFS_FILTERING_ACCOUNT_ID, &account_id,
                                           -1);