Class: Shadow_Mixin
Class Hierarchy:
cObjectMixinShadow_MixinClass Definition
Functions and Procedures
Define_Shadow_Mixin()
This mixin is used by single item and no item objects for shadow
support.
Note that an object supports three levels of shadowing. A single item
can be shadowed (if applicable), an object can be explicitly shadowed
or an object can be indirectly shadowed by a parent.
Public Interface:
Get/Set Object_Shadow_State Sets the object's explicit SS.
Gets object's explicit IOR Implicit SS
Get/Set Item_Shadow_State (if items are applicable)
Get Implicit_Shadow_State if shadowed as group by ancestor
Get Explicit_Shadow_State if shadowed by self
Get Implicit_Hidden_State if hidden by an active parent (like a parent tab page)
Send Shadow_Display
Get/Set Shadow_State (if item based, sets item, else object)
An object is shadowed if it is explicitly or implicitly shadowed. We now have two flavors of
implicit. Either shadowed by a parent or hidden by a parent (e.g. parent tab page). If shadowed under
any of these conditions the physical shadow_state must be true so that navigation skips it.
Class Hierarchy:
cObjectMixinShadow_MixinClass Definition
Properties
IntegerBroadcast_Implicit_Shadow_State
Should child objects receive shadow notification?
IntegerPrivate.Explicit_Shadow_State
IntegerPrivate.Implicit_Hidden_State
PRIVATE
IntegerPrivate.Implicit_Shadow_State
IntegerPrivate.Shadow_State
will be used by objects that have no runtime shadow_state
item property (edits and containers)
Functions and Procedures
integerActivate()
Activate_Area(Integer TakeFocusFg)
Activate an object Area. If the object is not in the focus tree
delegate until a popup object, scoped object, or child of desktop is
encountered and activate that group. If TakeFocusFg is true, make sure
this object ends up with the focus. The is similar in logic to
deactivate area_flag. Used by Validate_Items to make sure a popup
object or a popup group takes the focus properly.
Beginning_of_Panel()
Move focus to first focusable object in panel
"Panel" is defined as the scope object
Bottom_of_Panel()
integerContainerFocusWillNotChange()
Private:
needed by navigation (next_object_id). If the selected object is a container
it will receive the activate message. If the container already has the focus, it
will not do anything. We need to know if that will be the case. This is augmented
by tab-pages which actually will change the focus when sent activate.
Define_Shadow_Mixin()
DoImplicitTabHide(integer iState)
private. This sets implicit shadowing for child objects within a tab page. This is similar to
Implicit_shadow_state except that it should not send shadow_display. Shadowing
and unShadowing causes color side effects (unshadow ignores the old background color) so when shadowing
for tab children (which you will never see) we just do nothing. Set the implicit shadowing is still needed
to make the navigation work properly.
IntegerEnabled_State()
Again, we're calling upon Object_Shadow_State and simply inverting
the return value to match the context of the "enable centric"
property. KCR
End_of_Panel()
IntegerEntering()
BooleanExplicit_Shadow_State()
Returns true if the object is explicitly shadowed by self
integerImplicit_Hidden_state()
Returns true if the object is active but hidden (like a child of a tab page)
BooleanImplicit_Shadow_State()
Returns true if the object is shadowed as part of a group shadow.
integerItem_Shadow_State(integer iItem)
integerNext_Object_Id(integer bNoDescend)
NotifyBeginningOfPanel(integer hoPanel)
When Beginning_of_panel is called all child objects need to be sent the message
OnBeginningOfPanel. This is the private notification process.
integerObject_Shadow_State()
This returns if the object is truly shadowed. In single item we
use item 0
OnBeginningOfPanel(integer hoPanel)
Public Event sent to all objects after a Beginning_of_panel is sent
integerPrior_Object_Id(integer bNoDescend)
integerprivate.Next_object_id(integer fg)
integerprivate.prior_object_id(integer fg)
Set(integer iState)
Private: Should only be sent by an ancestor object which is
notifying all descendants that they have been shadowed as part
of a group
Set(Integer iState)
Set(integer iItem integer iState)
Item_shadow_state always gets the item's SS
Set(integer iState)
Current_Shadow_State sets the object's true shadow-state
With single item objects we use
the shadow_state of item 0 (the only item) to let store this
information. In multi-item this must be replaced (see multi-item below)
This is for the single item model
Set(Integer bState)
Enabled_State, for this rev, simply calls Object_Shadow_State but
inverts the parameter logic because Enabled_State is "enable centric"
vs. Shadow_State which is "disable centric". KCR
Set(integer iItem integer iState)
Shadow_State can apply either to the object or the item. In single
item or no item objects it refers to the object. In multi-item it
refers to the item. This is the single item model
Shadow_Display()
IntegerShadow_State(integer iItem)
handleStuckInRing(integer bDown)
if next or prior object results in a ring it cannot get out of, it calls this
and expects this to return an object ID or 0, to tell what to do
Top_of_Panel()