commit f63c90f46c1acd4fc363d0692e9eb6298676bb65
parent f93591fbc660c967c79695e4275233e74f27befd
Author: Salvatore De Paolis <iwkse@claws-mail.org>
Date: Thu, 28 Aug 2008 19:57:49 +0000
2008-08-28 [iwkse] 3.5.0cvs79
* src/account.c
* src/prefs_actions.c
* src/prefs_filtering.c
* src/prefs_template.c
Add search feature to the account,
template and action dialog.
It's turned on selecting one row
of the list and typing some random
letter. Thanks to wwp, colinl
Diffstat:
7 files changed, 94 insertions(+), 6 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,15 @@
+2008-08-28 [iwkse] 3.5.0cvs79
+
+ * src/account.c
+ * src/prefs_actions.c
+ * src/prefs_filtering.c
+ * src/prefs_template.c
+ Add search feature to the account,
+ template and action dialog.
+ It's turned on selecting one row
+ of the list and typing some random
+ letter. Thanks to wwp, colinl
+
2008-08-28 [colin] 3.5.0cvs78
* src/Makefile.am
diff --git a/PATCHSETS b/PATCHSETS
@@ -3490,3 +3490,4 @@
( cvs diff -u -r 1.115.2.202 -r 1.115.2.203 src/main.c; ) > 3.5.0cvs76.patchset
( cvs diff -u -r 1.59.2.71 -r 1.59.2.72 src/prefs_filtering.c; ) > 3.5.0cvs77.patchset
( cvs diff -u -r 1.155.2.89 -r 1.155.2.90 src/Makefile.am; cvs diff -u -r 1.61.2.81 -r 1.61.2.82 src/account.c; cvs diff -u -r 1.382.2.470 -r 1.382.2.471 src/compose.c; cvs diff -u -r 1.105.2.142 -r 1.105.2.143 src/prefs_account.c; cvs diff -u -r 1.49.2.37 -r 1.49.2.38 src/prefs_account.h; cvs diff -u -r 1.10.2.15 -r 1.10.2.16 src/privacy.c; cvs diff -u -r 1.10.2.16 -r 1.10.2.17 src/privacy.h; cvs diff -u -r 1.49.2.113 -r 1.49.2.114 src/procmime.c; cvs diff -u -r 1.25.2.59 -r 1.25.2.60 src/stock_pixmap.c; cvs diff -u -r 1.18.2.36 -r 1.18.2.37 src/stock_pixmap.h; cvs diff -u -r 1.395.2.383 -r 1.395.2.384 src/summaryview.c; diff -u /dev/null src/pixmaps/key_gpg_signed.xpm; ) > 3.5.0cvs78.patchset
+( cvs diff -u -r 1.61.2.82 -r 1.61.2.83 src/account.c; cvs diff -u -r 1.60.2.61 -r 1.60.2.62 src/prefs_actions.c; cvs diff -u -r 1.59.2.72 -r 1.59.2.73 src/prefs_filtering.c; cvs diff -u -r 1.12.2.65 -r 1.12.2.66 src/prefs_template.c; ) > 3.5.0cvs79.patchset
diff --git a/configure.ac b/configure.ac
@@ -11,7 +11,7 @@ MINOR_VERSION=5
MICRO_VERSION=0
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=78
+EXTRA_VERSION=79
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
diff --git a/src/account.c b/src/account.c
@@ -113,6 +113,9 @@ static gboolean account_key_pressed (GtkWidget *widget,
GdkEventKey *event,
gpointer data);
#endif
+static gboolean account_search_func_cb (GtkTreeModel *model, gint column,
+ const gchar *key, GtkTreeIter *iter,
+ gpointer search_data);
static void account_list_view_add (PrefsAccount *ac_prefs);
static void account_list_view_set (void);
@@ -1233,6 +1236,24 @@ static gboolean account_key_pressed(GtkWidget *widget, GdkEventKey *event,
return FALSE;
}
#endif
+
+static gboolean account_search_func_cb (GtkTreeModel *model, gint column, const gchar *key,
+ GtkTreeIter *iter, gpointer search_data)
+{
+ gboolean retval;
+ PrefsAccount *ac;
+
+ gtk_tree_model_get (model, iter, ACCOUNT_DATA, &ac, -1);
+
+ if (!ac->name || !key) return FALSE;
+
+ retval = (strncmp (key, ac->account_name, strlen(key)) != 0);
+
+ debug_print("selecting row\n");
+ account_list_view_select_account(edit_account.list_view, ac->account_id);
+
+ return retval;
+}
static void account_list_view_add(PrefsAccount *ac_prefs)
{
GtkTreeView *list_view = GTK_TREE_VIEW(edit_account.list_view);
@@ -1539,6 +1560,8 @@ static void account_create_list_view_columns(GtkWidget *list_view)
"text", ACCOUNT_SERVER,
"weight", ACCOUNT_IS_DEFAULT,
NULL);
+ gtk_tree_view_set_search_column(GTK_TREE_VIEW(list_view), ACCOUNT_NAME);
+ gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(list_view), account_search_func_cb , NULL, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), column);
}
diff --git a/src/prefs_actions.c b/src/prefs_actions.c
@@ -105,6 +105,9 @@ static gint prefs_actions_deleted (GtkWidget *widget,
static gboolean prefs_actions_key_pressed(GtkWidget *widget,
GdkEventKey *event,
gpointer data);
+static gboolean prefs_actions_search_func_cb (GtkTreeModel *model, gint column,
+ const gchar *key, GtkTreeIter *iter,
+ gpointer search_data);
static void prefs_actions_cancel (GtkWidget *w,
gpointer data);
static void prefs_actions_ok (GtkWidget *w,
@@ -869,6 +872,28 @@ static gboolean prefs_actions_key_pressed(GtkWidget *widget, GdkEventKey *event,
return FALSE;
}
+static gboolean prefs_actions_search_func_cb (GtkTreeModel *model, gint column, const gchar *key,
+ GtkTreeIter *iter, gpointer search_data)
+{
+ gchar *store_string;
+ gboolean retval;
+ GtkTreePath *path;
+
+ gtk_tree_model_get (model, iter, column, &store_string, -1);
+
+ if (!store_string || !key) return FALSE;
+
+
+ retval = (strncmp (key, store_string, strlen(key)) != 0);
+
+ g_free(store_string);
+ debug_print("selecting row\n");
+ path = gtk_tree_model_get_path(model, iter);
+ prefs_actions_select_row(GTK_TREE_VIEW(actions.actions_list_view), path);
+ gtk_tree_path_free(path);
+
+ return retval;
+}
static void prefs_actions_cancel(GtkWidget *w, gpointer data)
{
GtkListStore *store;
@@ -1176,6 +1201,7 @@ static void prefs_actions_create_list_view_columns(GtkWidget *list_view)
"text", PREFS_ACTIONS_STRING,
NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), column);
+ gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(list_view), prefs_actions_search_func_cb , NULL, NULL);
}
#define ENTRY_SET_TEXT(entry, str) \
diff --git a/src/prefs_filtering.c b/src/prefs_filtering.c
@@ -970,17 +970,15 @@ static gboolean prefs_filtering_search_func_cb (GtkTreeModel *model, gint column
GtkTreeIter *iter, gpointer search_data)
{
gchar *store_string;
- gint key_len;
gboolean retval;
GtkTreePath *path;
gtk_tree_model_get (model, iter, column, &store_string, -1);
- if (!store_string) return FALSE;
+ if (!store_string || !key) return FALSE;
- key_len = strlen (key);
- retval = (strncmp (key, store_string, key_len) != 0);
+ retval = (strncmp (key, store_string, strlen(key)) != 0);
g_free(store_string);
debug_print("selecting row\n");
@@ -1942,7 +1940,7 @@ static void prefs_filtering_create_list_view_columns(GtkWidget *list_view)
"text", PREFS_FILTERING_RULE,
NULL);
- gtk_tree_view_set_search_column(GTK_TREE_VIEW(list_view), 1);
+ gtk_tree_view_set_search_column(GTK_TREE_VIEW(list_view), PREFS_FILTERING_NAME);
gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(list_view), prefs_filtering_search_func_cb , NULL, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), column);
diff --git a/src/prefs_template.c b/src/prefs_template.c
@@ -99,6 +99,10 @@ static gint prefs_template_deleted_cb (GtkWidget *widget,
static gboolean prefs_template_key_pressed_cb (GtkWidget *widget,
GdkEventKey *event,
gpointer data);
+static gboolean prefs_template_search_func_cb (GtkTreeModel *model, gint column,
+ const gchar *key, GtkTreeIter *iter,
+ gpointer search_data);
+
static void prefs_template_cancel_cb (gpointer action, gpointer data);
static void prefs_template_ok_cb (gpointer action, gpointer data);
static void prefs_template_register_cb (gpointer action, gpointer data);
@@ -519,6 +523,29 @@ static gboolean prefs_template_key_pressed_cb(GtkWidget *widget,
return FALSE;
}
+static gboolean prefs_template_search_func_cb (GtkTreeModel *model, gint column, const gchar *key,
+ GtkTreeIter *iter, gpointer search_data)
+{
+ gchar *store_string;
+ gint key_len;
+ gboolean retval;
+ GtkTreePath *path;
+
+ gtk_tree_model_get (model, iter, column, &store_string, -1);
+
+ if (!store_string || !key) return FALSE;
+
+ key_len = strlen (key);
+ retval = (strncmp (key, store_string, key_len) != 0);
+
+ g_free(store_string);
+ debug_print("selecting row\n");
+ path = gtk_tree_model_get_path(model, iter);
+ prefs_template_select_row(GTK_TREE_VIEW(templates.list_view), path);
+ gtk_tree_path_free(path);
+
+ return retval;
+}
static void prefs_template_address_completion_end(void)
{
gint i;
@@ -1176,6 +1203,7 @@ static void prefs_template_create_list_view_columns(GtkWidget *list_view)
"text", TEMPL_TEXT,
NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), column);
+ gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(list_view), prefs_template_search_func_cb , NULL, NULL);
}
/*!