Copyright (C) 1994, Digital Equipment Corp.
<* PRAGMA LL *> <* PRAGMA SUBTYPE *>A
GuardedBtnVBT protects its child against unintentional mouse
clicks. While the guard is displayed, mouse clicks are not
forwarded. To remove the guard, click on the button. The guard is
restored after the next upclick, chord-cancel, or when the mouse
leaves the domain of the VBT.
Typically, a GuardedBtnVBT is placed above a ``dangerous''
button, like one that terminates an application. This forces the
user to click twice to terminate the application---the first time
to remove the guard, and the second time to invoke the button that
terminates the application.
A GuardedBtnVBT is much closer to being a VBTkit switch than a
Trestle button. There's a callback method (invoked when the
guard is removed), and the guard is a multi-filter. However, the
client does not provide a feedback; it is hard-wired into the
GuardedBtnVBT implementation.
INTERFACEGuardedBtnVBT ; IMPORT ButtonVBT, PaintOp, VBT; TYPE T <: Public; <* SUBTYPE T <: MultiFilter.T *> Public = ButtonVBT.T OBJECT METHODS <* LL <= VBT.mu *> init (ch: VBT.T; colors: PaintOp.ColorScheme := NIL): T; <* LL = VBT.mu *> callback (READONLY cd: VBT.MouseRec); END; END GuardedBtnVBT.