Bug #685051 Adding --mid-search option to --list
This will enable users to find a row with a text matching the middle of the row. Consider the following list: Little piggy one Little piggy two Little piggy three As a user I would expect that entering 'th' would focus the last row, because it's the first one that contains 'th'
This commit is contained in:
parent
b44b2fb33d
commit
15e2759668
15
src/option.c
15
src/option.c
@ -83,6 +83,7 @@ static gchar *zenity_list_print_column;
|
|||||||
static gchar *zenity_list_hide_column;
|
static gchar *zenity_list_hide_column;
|
||||||
static gboolean zenity_list_hide_header;
|
static gboolean zenity_list_hide_header;
|
||||||
static gboolean zenity_list_imagelist;
|
static gboolean zenity_list_imagelist;
|
||||||
|
static gboolean zenity_list_mid_search;
|
||||||
|
|
||||||
#ifdef HAVE_LIBNOTIFY
|
#ifdef HAVE_LIBNOTIFY
|
||||||
/* Notification Dialog Options */
|
/* Notification Dialog Options */
|
||||||
@ -651,6 +652,15 @@ static GOptionEntry list_options[] = {
|
|||||||
N_("Hides the column headers"),
|
N_("Hides the column headers"),
|
||||||
NULL
|
NULL
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"mid-search",
|
||||||
|
'\0',
|
||||||
|
G_OPTION_FLAG_NOALIAS,
|
||||||
|
G_OPTION_ARG_NONE,
|
||||||
|
&zenity_list_mid_search,
|
||||||
|
N_("Change list default search function searching for text in the middle, not on the beginning"),
|
||||||
|
NULL
|
||||||
|
},
|
||||||
{
|
{
|
||||||
NULL
|
NULL
|
||||||
}
|
}
|
||||||
@ -1531,6 +1541,7 @@ zenity_list_pre_callback (GOptionContext *context,
|
|||||||
zenity_list_hide_header = FALSE;
|
zenity_list_hide_header = FALSE;
|
||||||
zenity_list_print_column = NULL;
|
zenity_list_print_column = NULL;
|
||||||
zenity_list_hide_column = NULL;
|
zenity_list_hide_column = NULL;
|
||||||
|
zenity_list_mid_search = FALSE;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -1876,6 +1887,7 @@ zenity_list_post_callback (GOptionContext *context,
|
|||||||
results->tree_data->hide_column = zenity_list_hide_column;
|
results->tree_data->hide_column = zenity_list_hide_column;
|
||||||
results->tree_data->hide_header = zenity_list_hide_header;
|
results->tree_data->hide_header = zenity_list_hide_header;
|
||||||
results->tree_data->separator = zenity_general_separator;
|
results->tree_data->separator = zenity_general_separator;
|
||||||
|
results->tree_data->mid_search = zenity_list_mid_search;
|
||||||
} else {
|
} else {
|
||||||
if (zenity_list_columns)
|
if (zenity_list_columns)
|
||||||
zenity_option_error (zenity_option_get_name (list_options, &zenity_list_columns),
|
zenity_option_error (zenity_option_get_name (list_options, &zenity_list_columns),
|
||||||
@ -1904,6 +1916,9 @@ zenity_list_post_callback (GOptionContext *context,
|
|||||||
if (zenity_list_hide_header)
|
if (zenity_list_hide_header)
|
||||||
zenity_option_error (zenity_option_get_name (list_options, &zenity_list_hide_header),
|
zenity_option_error (zenity_option_get_name (list_options, &zenity_list_hide_header),
|
||||||
ERROR_SUPPORT);
|
ERROR_SUPPORT);
|
||||||
|
if (zenity_list_mid_search)
|
||||||
|
zenity_option_error (zenity_option_get_name (list_options, &zenity_list_mid_search),
|
||||||
|
ERROR_SUPPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
14
src/tree.c
14
src/tree.c
@ -298,6 +298,17 @@ zenity_tree_fill_entries (GtkTreeView *tree_view,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
zenity_mid_search_func (GtkTreeModel *model, gint column,
|
||||||
|
const gchar *key, GtkTreeIter *iter,
|
||||||
|
gpointer search_data)
|
||||||
|
{
|
||||||
|
gchar *iter_string = NULL;
|
||||||
|
gtk_tree_model_get (model, iter, column, &iter_string, -1);
|
||||||
|
return ! g_strrstr (g_utf8_strdown(iter_string, -1),
|
||||||
|
g_utf8_strdown(key, -1)) != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
zenity_cell_edited_callback (GtkCellRendererText *cell,
|
zenity_cell_edited_callback (GtkCellRendererText *cell,
|
||||||
const gchar *path_string,
|
const gchar *path_string,
|
||||||
@ -564,6 +575,9 @@ zenity_tree (ZenityData *data, ZenityTreeData *tree_data)
|
|||||||
|
|
||||||
zenity_util_show_dialog (dialog, data->attach);
|
zenity_util_show_dialog (dialog, data->attach);
|
||||||
|
|
||||||
|
if (tree_data->mid_search)
|
||||||
|
gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(tree_view), (GtkTreeViewSearchEqualFunc) zenity_mid_search_func, model, NULL);
|
||||||
|
|
||||||
if(data->timeout_delay > 0) {
|
if(data->timeout_delay > 0) {
|
||||||
g_timeout_add_seconds (data->timeout_delay, (GSourceFunc) zenity_util_timeout_handle, dialog);
|
g_timeout_add_seconds (data->timeout_delay, (GSourceFunc) zenity_util_timeout_handle, dialog);
|
||||||
}
|
}
|
||||||
|
@ -132,6 +132,7 @@ typedef struct {
|
|||||||
gchar *separator;
|
gchar *separator;
|
||||||
gboolean multi;
|
gboolean multi;
|
||||||
gboolean editable;
|
gboolean editable;
|
||||||
|
gboolean mid_search;
|
||||||
gchar *print_column;
|
gchar *print_column;
|
||||||
gchar *hide_column;
|
gchar *hide_column;
|
||||||
const gchar **data;
|
const gchar **data;
|
||||||
|
Reference in New Issue
Block a user