* tkcon.tcl (::send::send): propagate -displayof to winfo interps
authorJeff Hobbs <hobbs@users.sourceforge.net>
Mon, 21 Feb 2005 19:31:36 +0000 (19:31 +0000)
committerJeff Hobbs <hobbs@users.sourceforge.net>
Mon, 21 Feb 2005 19:31:36 +0000 (19:31 +0000)
call. [Bug 1124369] (mbec)

ChangeLog
tkcon.tcl

index bbb5bfa67ee948857d45e7d60e32ac41cb2f71b8..92f4ebe3801f1d83cc7ee831e90839acb49cc612 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-21  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * tkcon.tcl (::send::send): propagate -displayof to winfo interps
+       call. [Bug 1124369] (mbec)
+
 2004-11-17  Jeff Hobbs  <jeffh@ActiveState.com>
 
        * tkcon.tcl (::tkcon::ExpandVariable): correct array keyname
index 166793fc9b238efb793bffce14d632102b2ddd47..e3dd8fc66ffae4e0cba82be63da4f13b708e4217 100755 (executable)
--- a/tkcon.tcl
+++ b/tkcon.tcl
@@ -900,6 +900,7 @@ proc ::tkcon::EvalCmd {w cmd} {
        if {$OPT(subhistory)} {
            set ev [EvalSlave history nextid]
            incr ev -1
+           ## FIX: calcmode doesn't work with requesting history events
            if {[string match !! $cmd]} {
                set code [catch {EvalSlave history event $ev} cmd]
                if {!$code} {$w insert output $cmd\n stdin}
@@ -6033,16 +6034,20 @@ proc ::tkcon::Retrieve {} {
     }
 }
 
-## 'send' pacakge that handles multiple communication variants
+## 'send' package that handles multiple communication variants
 ##
 # Try using Tk send first, then look for a winsend interp,
 # then try dde and finally have a go at comm
 namespace eval ::send {}
 proc ::send::send {args} {
+    set winfoInterpCmd [list ::winfo interps]
     array set opts [list displayof {} async 0]
     while {[string match -* [lindex $args 0]]} {
        switch -exact -- [lindex $args 0] {
-           -displayof { set opts(displayof) [Pop args 1] }
+           -displayof {
+               set opts(displayof) [Pop args 1]
+               lappend winfoInterpCmd -displayof $opts(displayof)
+           }
            -async     { set opts(async) 1 }
            -- { Pop args ; break }
            default {
@@ -6055,7 +6060,7 @@ proc ::send::send {args} {
     set app [Pop args]
 
     if {[llength [info commands ::winfo]]
-       && [lsearch -exact [::winfo interps] $app] > -1} {
+       && [lsearch -exact [eval $winfoInterpCmd] $app] > -1} {
        set cmd [list ::send]
        if {$opts(async) == 1} {lappend cmd -async}
        if {$opts(displayof) != {}} {lappend cmd -displayof $opts(displayof)}
@@ -6080,10 +6085,14 @@ proc ::send::send {args} {
 }
 
 proc ::send::interps {args} {
+    set winfoInterpCmd [list ::winfo interps]
     array set opts [list displayof {}]
     while {[string match -* [lindex $args 0]]} {
        switch -exact -- [lindex $args 0] {
-           -displayof { set opts(displayof) [Pop args 1] }
+           -displayof {
+               set opts(displayof) [Pop args 1]
+               lappend winfoInterpCmd -displayof $opts(displayof)
+           }
            --         { Pop args ; break }
            default {
                return -code error "bad option \"[lindex $args 0]\":\
@@ -6095,11 +6104,7 @@ proc ::send::interps {args} {
 
     set interps {}
     if {[llength [info commands ::winfo]]} {
-       set cmd [list ::winfo interps]
-       if {$opts(displayof) != {}} {
-           lappend cmd -displayof $opts(displayof)
-       }
-       set interps [concat $interps [eval $cmd]]
+       set interps [concat $interps [eval $winfoInterpCmd]]
     }
     if {[llength [info commands ::winsend]]} {
        set interps [concat $interps [::winsend interps]]