diff --git a/PROMS/Volian.Controls.Library/StepRTB.cs b/PROMS/Volian.Controls.Library/StepRTB.cs
index 9549b174..054a1450 100644
--- a/PROMS/Volian.Controls.Library/StepRTB.cs
+++ b/PROMS/Volian.Controls.Library/StepRTB.cs
@@ -1647,7 +1647,34 @@ namespace Volian.Controls.Library
int selLength = len;
foreach (LinkLocation ll in _LinkLocations)
{
- if (sel >= ll.Start && sel < ll.Start + ll.Length + 7) return true;
+ // When the selector moved to the right of a link, the GOTO button was still lit.
+ // Removing the "+7" seems to have fixed this. - jsj 1/08/2010
+ //if (sel >= ll.Start && sel < ll.Start + ll.Length + 7) return true;
+ if (sel >= ll.Start && sel < ll.Start + ll.Length) return true;
+ }
+ return false;
+ }
+ ///
+ /// For use in Find/Replace.
+ /// If text is found is part of the link information and not the link value,
+ /// then we want to continue searching.
+ ///
+ ///
+ ///
+ ///
+ public bool SkipLinkInfo(int index, int len)
+ {
+ if (_LinkLocations == null)return false;
+ int sel = index;
+ int selLength = len;
+ foreach (LinkLocation ll in _LinkLocations)
+ {
+ if (sel >= ll.Start - 7 && sel < ll.Start + ll.Length)
+ {
+ int pos = ll.Text.IndexOf("#Link:");
+ if (sel < ll.Start || sel >= ll.Start-7+pos)
+ return (true);
+ }
}
return false;
}
@@ -1771,6 +1798,60 @@ namespace Volian.Controls.Library
}
return null;
}
+ private RichTextBoxFinds _FindOptions = RichTextBoxFinds.None;
+ public void FindText(string str, bool caseSensitive, bool matchWholeWord, bool reverse)
+ {
+ RTF savRTF = new RTF();
+ int startpos = SelectionStart + SelectionLength;
+ savRTF.Text = this.Text;
+
+ _FindOptions = RichTextBoxFinds.None;
+ if (caseSensitive)
+ _FindOptions |= RichTextBoxFinds.MatchCase;
+ if (matchWholeWord)
+ _FindOptions |= RichTextBoxFinds.WholeWord;
+ if (reverse)
+ {
+ _FindOptions |= RichTextBoxFinds.Reverse;
+ savRTF.Text = this.Text.Substring(0, SelectionStart);
+ startpos = savRTF.Text.Length;
+ if (startpos == 0)
+ return; // at beginning of rtfbox during a reverse find
+ }
+ else
+ {
+ if (startpos >= savRTF.Text.Length)
+ return; // at end of rtfbox during a forward find
+ }
+ // look for the find string in the temporary rtfbox
+ // then set the cursor selection in the real rtfbox
+ bool keepgoing = true;
+ while (keepgoing)
+ {
+ int pos = savRTF.Find(str, startpos, _FindOptions);
+ keepgoing = false;
+ if (pos >= 0)
+ {
+ if (this.SkipLinkInfo(pos,str.Length))
+ {
+ if (reverse)
+ {
+ startpos--;
+ savRTF.Text = savRTF.Text.Substring(0, startpos);
+ }
+ else
+ startpos++;
+ if (startpos > 0 && startpos < savRTF.Text.Length)
+ keepgoing = true;
+ }
+ else
+ {
+ SelectionStart = pos;
+ SelectionLength = str.Length;
+ }
+ }
+ }
+ }
private int FindStart()
{
foreach (LinkLocation ll in _LinkLocations)