# testing if we can send events to a widget
# and get a result back out of it

proc activateCB {} {
    return "...activated"
}

proc disarmCB {} {
    return "...disarmed"
}

proc armCB {} {
    return "...armed"
}

xtAppInitialize -class Btn

xmPushButton .btn managed -labelString "Hello world"

.btn activateCallback activateCB
.btn armCallback armCB
.btn disarmCallback disarmCB

. realizeWidget

puts stdout "calling arm"
puts [.btn callActionProc Arm()]

# activate assumes it comes from a ButtonPress.
# coords within its boundaries mean ButtonRelease
# occurs within the widget, so activate callback occurs.
# outside this, no callback is invoked

# this one is inside boundary
puts stdout "calling activate"
puts stdout [.btn callActionProc Activate() \
    -type ButtonPress \
    -x 0 -y 0]

puts stdout "calling disarm"
puts [.btn callActionProc Disarm()]

puts stdout "calling armAndActivate"
puts [.btn callActionProc ArmAndActivate()]

. mainLoop

. realizeWidget

. mainLoop
