summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorvincentdarley <vincentdarley>2004-09-23 14:56:35 (GMT)
committervincentdarley <vincentdarley>2004-09-23 14:56:35 (GMT)
commitf9db24f0728074fb2677e8e81484f05ee24ada2a (patch)
tree988d0d18dbc1fa77612fcdb7e3ca8fb110c77785 /generic
parent47b1101666a2edd687a9e61a79b85906ddba1da3 (diff)
downloadtk-f9db24f0728074fb2677e8e81484f05ee24ada2a.zip
tk-f9db24f0728074fb2677e8e81484f05ee24ada2a.tar.gz
tk-f9db24f0728074fb2677e8e81484f05ee24ada2a.tar.bz2
text widget search fix
Diffstat (limited to 'generic')
-rw-r--r--generic/tkText.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/generic/tkText.c b/generic/tkText.c
index f8a1abd..eb7beb7 100644
--- a/generic/tkText.c
+++ b/generic/tkText.c
@@ -14,7 +14,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkText.c,v 1.53 2004/09/10 13:42:45 rmax Exp $
+ * RCS: @(#) $Id: tkText.c,v 1.54 2004/09/23 14:57:03 vincentdarley Exp $
*/
#include "default.h"
@@ -4923,6 +4923,25 @@ SearchPerform(interp, searchSpecPtr, patObj, fromPtr, toPtr)
* Find the optional end location, similarly.
*/
if (toPtr != NULL) {
+ CONST TkTextIndex *indexToPtr, *indexFromPtr;
+ TkText *textPtr = (TkText*)(searchSpecPtr->clientData);
+
+ indexToPtr = TkTextGetIndexFromObj(interp, textPtr, toPtr);
+ if (indexToPtr == NULL) {
+ return TCL_ERROR;
+ }
+ indexFromPtr = TkTextGetIndexFromObj(interp, textPtr, fromPtr);
+ /*
+ * Check for any empty search range here. It might be better
+ * in the future to embed that in SearchCore (whose default
+ * behaviour is to wrap when given a negative search range).
+ */
+ if (searchSpecPtr->backwards) {
+ if (TkTextIndexCmp(indexFromPtr, indexToPtr) == -1) return TCL_OK;
+ } else {
+ if (TkTextIndexCmp(indexFromPtr, indexToPtr) == 1) return TCL_OK;
+ }
+
if ((*searchSpecPtr->lineIndexProc)(interp, toPtr, searchSpecPtr,
&searchSpecPtr->stopLine,
&searchSpecPtr->stopOffset) != TCL_OK) {