From 193aa745f02b397d71667322e0477a0cb878028c Mon Sep 17 00:00:00 2001 From: Eric Smith Date: Fri, 1 Sep 2023 09:33:43 -0300 Subject: [PATCH] try to make search/replace more robust --- Changelog.txt | 4 ++++ src/gui.tcl | 33 +++++++++++++++++++++++++++------ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index d114eda..4c8f609 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,3 +1,7 @@ +Version 6.4.0 + +- Tried to make search&replace a bit more robust + Version 6.3.0 - Added "Identify Serial Ports" item to "Special" menu diff --git a/src/gui.tcl b/src/gui.tcl index ee6ac1d..e03b68e 100755 --- a/src/gui.tcl +++ b/src/gui.tcl @@ -2449,10 +2449,31 @@ proc do_indent {w} { # simple search and replace widget by Richard Suchenwirth, from wiki.tcl.tk # proc searchrep {t {replace 1}} { - global replacesDone - set w .sr - set replacesDone 0 - if ![winfo exists $w] { + global replacesDone + set w .sr + set replacesDone 0 + + # if searching on the frame, use the currently selected tab + if { [string match "*.nb" $t] } { + set t [$t select] + } + #puts "search window: $t" + # make sure we are doing the search on a .txt + if { ![string match "*.txt" $t ] } { + set subw [winfo children $t] + #puts "subwindows: $subw" + foreach ch $subw { + if { [string match "*.txt" $ch] } { + set t $ch + break + } + } + } + if { ![string match "*.txt" $t] } { + return + } + + if ![winfo exists $w] { toplevel $w wm title $w "Search" grid [label $w.1 -text Find:] [entry $w.f -textvar Find] \ @@ -2474,12 +2495,12 @@ proc searchrep {t {replace 1}} { $t tag config hilite -background yellow focus $w.f $w.f selection range 0 end - } else { + } else { raise $w.f focus $w $w.f icursor end $w.f selection range 0 end - } + } bind $w "searchrep'done $t" }