[gnumeric] Search: accept a small range when searching for numbers.
- From: Morten Welinder <mortenw src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnumeric] Search: accept a small range when searching for numbers.
- Date: Tue, 26 May 2009 10:38:33 -0400 (EDT)
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]