talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

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:
MChangeLog | 12++++++++++++
MPATCHSETS | 1+
Mconfigure.ac | 2+-
Msrc/account.c | 23+++++++++++++++++++++++
Msrc/prefs_actions.c | 26++++++++++++++++++++++++++
Msrc/prefs_filtering.c | 8+++-----
Msrc/prefs_template.c | 28++++++++++++++++++++++++++++
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); } /*!