Hi,
using mac_style branch I had to use a lot the following syntax:
after 1 [list doWhateverYouWant]

for stuff to be smooth.

also I had to add a delay mechanism for creation/destroy of topLevels 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 it helps.
++