* tkcon.tcl (::tkcon::NewTab, ::tkcon::GetSlave): ensure that new
authorJeff Hobbs <hobbs@users.sourceforge.net>
Tue, 5 Sep 2006 23:08:31 +0000 (23:08 +0000)
committerJeff Hobbs <hobbs@users.sourceforge.net>
Tue, 5 Sep 2006 23:08:31 +0000 (23:08 +0000)
tabs in other toplevel tkcon windows are built in the correct
slave hierarchy.

ChangeLog
tkcon.tcl

index 441f4c994ccbfa655c868afd6b13b632e0065b28..66866b166deb798652be1172b0658d92c2fb352d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2006-09-05  Jeff Hobbs  <jeffh@ActiveState.com>
 
+       * tkcon.tcl (::tkcon::NewTab, ::tkcon::GetSlave): ensure that new
+       tabs in other toplevel tkcon windows are built in the correct
+       slave hierarchy.
+
        * pkgIndex.tcl: sample pkgIndex.tcl that allows using tkcon as a
        package.
 
index 753fb2753b3da1c9960c6bee08095cfc472bdca7..98ce3766edac5e832e45b3b33b0b2b48f03685d6 100755 (executable)
--- a/tkcon.tcl
+++ b/tkcon.tcl
@@ -817,10 +817,14 @@ proc ::tkcon::NewTab {{con {}}} {
     variable ATTACH
 
     set con   [InitTab $PRIV(base)]
-    set slave [interp create Slave[GetSlaveNum]]
+    set slave [GetSlave]
     InitSlave $slave
     $slave alias exit ::tkcon::DeleteTab $con $slave
-    set ATTACH($con) [list $slave slave]
+    if {$PRIV(name) != ""} {
+       set ATTACH($con) [list [list $PRIV(name) $slave] slave]
+    } else {
+       set ATTACH($con) [list $slave slave]
+    }
     $PRIV(X) configure -state normal
     MenuConfigure Console "Delete Tab" -state normal
     GotoTab $con
@@ -2401,12 +2405,14 @@ proc ::tkcon::MainInit {} {
     interp alias {} ::tkcon::Main {} ::tkcon::InterpEval Main
     interp alias {} ::tkcon::Slave {} ::tkcon::InterpEval
 
-    proc ::tkcon::GetSlaveNum {} {
-       set i -1
-       while {[interp exists Slave[incr i]]} {
+    proc ::tkcon::GetSlave {{slave {}}} {
+       set i 0
+       puts [info level 0]
+       while {[Slave $slave [list interp exists Slave[incr i]]]} {
            # oh my god, an empty loop!
        }
-       return $i
+       set interp [Slave $slave [list interp create Slave$i]]
+       return $interp
     }
 
     ## ::tkcon::New - create new console window
@@ -2418,7 +2424,7 @@ proc ::tkcon::MainInit {} {
        variable PRIV
        global argv0 argc argv
 
-       set tmp [interp create Slave[GetSlaveNum]]
+       set tmp [GetSlave]
        lappend PRIV(slaves) $tmp
        load {} Tk $tmp
        # If we have tbcload, then that should be autoloaded into slaves.
@@ -2435,7 +2441,7 @@ proc ::tkcon::MainInit {} {
        $tmp alias exit                         ::tkcon::Exit $tmp
        $tmp alias ::tkcon::Destroy             ::tkcon::Destroy $tmp
        $tmp alias ::tkcon::New                 ::tkcon::New
-       $tmp alias ::tkcon::GetSlaveNum         ::tkcon::GetSlaveNum
+       $tmp alias ::tkcon::GetSlave            ::tkcon::GetSlave $tmp
        $tmp alias ::tkcon::Main                ::tkcon::InterpEval Main
        $tmp alias ::tkcon::Slave               ::tkcon::InterpEval
        $tmp alias ::tkcon::Interps             ::tkcon::Interps