@Takamoto,
Hi,
while using mac_styles branch I had to write:
after 1 [list doDesiredEval args]
a lot in order for stuff to be smooth and not crashing.

also for toplevel creation/destroy I had to use a delay mechanism for not my app to crash.
something like that:

proc nsWin_sleep {ms namespace} {
    namespace upvar $namespace nsWin_sleepV localnsWin_sleepV

    after $ms {set localnsWin_sleepV 1}
    vwait localnsWin_sleepV

}
proc win_modifyDelay {} {
    nsWin_sleep 100 Dlightmain
}

proc win_deiconifySequence {win} {
    if {[tk windowingsystem] eq {aqua} && $::tcl_platform(osVersion) >= 18} {
        update idletasks
        ::tk::unsupported::MacWindowStyle appearance $win darkaqua
    }

    wm deiconify $win
    if {[tk windowingsystem] eq {aqua}} {
      win_modifyDelay
    }

}

proc win_deleteSequence {delay win} {
    destroy $win
    if {[tk windowingsystem] eq {aqua}} {
        nsWin_sleep $delay Dlightmain
        update idletasks
    }
}


hope this helps.
++