Index: generic/predefined.h =================================================================== diff -u -r0037211cd9632cbb418f9f8ca40a001a51d1598d -re98952d7910953b095d701b913244ee4962c2b48 --- generic/predefined.h (.../predefined.h) (revision 0037211cd9632cbb418f9f8ca40a001a51d1598d) +++ generic/predefined.h (.../predefined.h) (revision e98952d7910953b095d701b913244ee4962c2b48) @@ -48,7 +48,7 @@ "::xotcl::setrelation ::xotcl::MetaSlot superclass ::xotcl::Class\n" "::xotcl::MetaSlot instproc new args {\n" "set slotobject [self callingobject]::slot\n" -"if {![my isobject $slotobject]} {Object create $slotobject}\n" +"if {![my isobject $slotobject]} {Object create $slotobject; namespace eval $slotobject {namespace import ::xotcl::*; puts stderr IMPORT}}\n" "eval next -childof $slotobject $args}\n" "::xotcl::MetaSlot create ::xotcl::Slot -array set __defaults {\n" "name \"[namespace tail [::xotcl::self]]\"\n" @@ -180,7 +180,9 @@ "$domain unset -nocomplain __defaults($name)\n" "set __initcmd \"\"\n" "if {[my exists default]} {\n" -"$domain set __defaults($name) [my default]} elseif [my exists initcmd] {\n" +"if {[my per-object] && ![$domain exists $name]} {\n" +"$domain set $name [my default]} elseif {![my per-object]} {\n" +"$domain set __defaults($name) [my default]}} elseif [my exists initcmd] {\n" "append __initcmd \"my trace add variable [list $name] read \\\n" "\\[list [self] __default_from_cmd \\[self\\] [list [my initcmd]]\\]\\n\"} elseif [my exists valuecmd] {\n" "append __initcmd \"my trace add variable [list $name] read \\\n" @@ -190,7 +192,9 @@ "append __initcmd \"my trace add variable [list $name] write \\\n" "\\[list [self] __value_changed_cmd \\[self\\] [list [my valuechangedcmd]]\\]\"}\n" "if {$__initcmd ne \"\"} {\n" -"$domain set __initcmds($name) $__initcmd}}\n" +"if {[my per-object]} {\n" +"$domain eval $__initcmd} else {\n" +"$domain set __initcmds($name) $__initcmd}}}\n" "::xotcl::Class create ::xotcl::Slot::Nocheck \\\n" "-instproc check_single_value args {;} -instproc check_multiple_values args {;} \\\n" "-instproc mk_type_checker args {return \"\"}\n" @@ -222,8 +226,9 @@ "{-class ::xotcl::Object}\n" "cmds} {\n" "if {![info exists object]} {set object [::xotcl::self]}\n" -"if {![::xotcl::my isobject $object]} {$class create $object}\n" -"$object requireNamespace\n" +"if {![::xotcl::my isobject $object]} {\n" +"$class create $object\n" +"$object requireNamespace}\n" "if {$withnew} {\n" "set m [::xotcl::ScopedNew new \\\n" "-inobject $object -withclass $class -volatile]\n"