[gnome-software/wip/ubuntu-3-20: 3/47] Limit search entry to 100 characters.
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/ubuntu-3-20: 3/47] Limit search entry to 100 characters.
- Date: Thu, 10 Aug 2017 00:37:02 +0000 (UTC)
commit ca9b74dc9cfc35dc7ab8c3a9f455b66e82f812d3
Author: Robert Ancell <robert ancell canonical com>
Date: Fri May 12 11:39:26 2017 +1200
Limit search entry to 100 characters.
The search entry can be linked to a remote server - by limiting the number of
characters this stops accidental input (e.g. cat sitting on keyboard) from
generating continuous searches.
src/gnome-software.ui | 1 +
src/gs-shell.c | 11 +++++++++++
2 files changed, 12 insertions(+), 0 deletions(-)
---
diff --git a/src/gnome-software.ui b/src/gnome-software.ui
index 1d9ddad..cace04a 100644
--- a/src/gnome-software.ui
+++ b/src/gnome-software.ui
@@ -286,6 +286,7 @@
<property name="can_focus">True</property>
<property name="activates_default">True</property>
<property name="width_request">500</property>
+ <property name="max_length">100</property>
<property name="hexpand">True</property>
<property name="halign">center</property>
</object>
diff --git a/src/gs-shell.c b/src/gs-shell.c
index c082035..43dd240 100644
--- a/src/gs-shell.c
+++ b/src/gs-shell.c
@@ -78,6 +78,7 @@ typedef struct
GQueue *back_entry_stack;
gboolean ignore_next_search_changed_signal;
GPtrArray *modal_dialogs;
+ gchar *last_search;
} GsShellPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (GsShell, gs_shell, G_TYPE_OBJECT)
@@ -542,6 +543,15 @@ search_changed_handler (GObject *entry, GsShell *shell)
return;
}
+ /* ignore if search text not changed. This is a workaround since GtkEntry
+ * emits changed even when the character limit is hit
+ * https://bugzilla.gnome.org/show_bug.cgi?id=782636
+ */
+ if (g_strcmp0 (text, priv->last_search) == 0)
+ return;
+ g_free (priv->last_search);
+ priv->last_search = g_strdup (text);
+
if (strlen(text) > 2) {
if (gs_shell_get_mode (shell) != GS_SHELL_MODE_SEARCH) {
gs_shell_change_mode (shell, GS_SHELL_MODE_SEARCH, NULL, NULL, TRUE);
@@ -962,6 +972,7 @@ gs_shell_dispose (GObject *object)
g_clear_object (&priv->header_start_widget);
g_clear_object (&priv->header_end_widget);
g_clear_pointer (&priv->modal_dialogs, (GDestroyNotify) g_ptr_array_unref);
+ g_clear_pointer (&priv->last_search, g_free);
G_OBJECT_CLASS (gs_shell_parent_class)->dispose (object);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]