[gnumeric] Search: accept a small range when searching for numbers.



commit 69a1dd0df11c590675ac45aded3ee5f34246676b
Author: Morten Welinder <terra gnome org>
Date:   Tue May 26 10:38:13 2009 -0400

    Search: accept a small range when searching for numbers.
---
 ChangeLog    |    5 +++++
 src/search.c |   11 ++++++-----
 src/search.h |    2 +-
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 1bde86e..3a25986 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-05-26  Morten Welinder  <terra gnome org>
+
+	* src/search.c (gnm_search_match_value): Accept a very small
+	range.
+
 2009-05-25  Morten Welinder  <terra gnome org>
 
 	* src/search.c (gnm_search_replace_set_property,
diff --git a/src/search.c b/src/search.c
index 894a4a2..e83f3ed 100644
--- a/src/search.c
+++ b/src/search.c
@@ -58,11 +58,13 @@ check_number (GnmSearchReplace *sr)
 	GnmValue *v = format_match_number (gosr->search_text, NULL, date_conv);
 
 	if (v) {
-		sr->the_number = value_get_as_float (v);
+		gnm_float f = value_get_as_float (v);
+		sr->low_number = gnm_sub_epsilon (f);
+		sr->high_number = gnm_add_epsilon (f);
 		value_release (v);
 		return TRUE;
 	} else {
-		sr->the_number = 0;
+		sr->low_number = sr->high_number = gnm_nan;
 		return FALSE;
 	}
 }
@@ -73,10 +75,9 @@ gnm_search_match_value (GnmSearchReplace const *sr, GnmValue const *val)
 	gnm_float f;
 	if (!VALUE_IS_NUMBER (val))
 		return FALSE;
-
 	f = value_get_as_float (val);
-	/* Exact match for now.  */
-	return (sr->the_number == f);
+
+	return (sr->low_number <= f && f <= sr->high_number);
 }
 
 
diff --git a/src/search.h b/src/search.h
index ea2cdee..8631753 100644
--- a/src/search.h
+++ b/src/search.h
@@ -58,7 +58,7 @@ struct _GnmSearchReplace {
 	gboolean query;		/* Ask before each change.  */
 
 	gboolean is_number;     /* Search for specific number.  */
-	gnm_float the_number;   /* protected. */
+	gnm_float low_number, high_number;   /* protected. */
 
 	/* The following identify what kinds of cells are the target.  */
 	gboolean search_strings;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]