The above implementation is not sufficient because our TixArrowButton
class is derived from TixPrimitive. The class derivation in Tix is
basically an is-a relationship: TixArrowButton is a
TixPrimitive. TixPrimitive defines the method
tixPrimitive:InitWidgetRec which sets up the instance variables of
every instance of TixPrimitive. Since an instance of TixArrowButton is
also an instance of TixPrimitive, we need to make sure that the
instance variables defined by TixPrimitive are also properly
initialized. The technique of calling a method defined in a superclass
is called the chaining of a method.
The tixChainMethod command will automatically
find a superclass that defines the method we want to chain and calls
this method for us. For example:
proc tixArrowButton:InitWidgetRec {w} {
upvar #0 $w data
tixChainMethod $w InitWidgetRec
set data(count) 0
}
Notice the order of the arguments for tixChainMethod: the name of the
instance, $w, is passed before the method we want to chain,
InitWidgetRec.