RWindowTreeNode Class Reference

#include <w32std.h>

class RWindowTreeNode : public MWsClientClass, public MWsClientClass

Inherits from

Public Member Enumerations
enumTFadeControl { EFadeIncludeChildren, EFadeWindowOnly }
Public Member Functions
IMPORT_C TUint32Child()
IMPORT_C voidClearPointerCursor()
IMPORT_C TUint32ClientHandle()
IMPORT_C voidClose()
IMPORT_C voidDestroy()
IMPORT_C voidDisableErrorMessages()
IMPORT_C voidDisableFocusChangeEvents()
IMPORT_C voidDisableGroupChangeEvents()
IMPORT_C voidDisableGroupListChangeEvents()
IMPORT_C voidDisableModifierChangedEvents()
IMPORT_C voidDisableOnEvents()
IMPORT_C voidDisableVisibilityChangeEvents()
IMPORT_C TIntEnableErrorMessages(TEventControl)
IMPORT_C TIntEnableFocusChangeEvents()
IMPORT_C TIntEnableGroupChangeEvents()
IMPORT_C TIntEnableGroupListChangeEvents()
IMPORT_C TIntEnableModifierChangedEvents(TUint, TEventControl)
IMPORT_C TIntEnableOnEvents(TEventControl)
IMPORT_C TIntEnableVisibilityChangeEvents()
IMPORT_C TIntFullOrdinalPosition()
IMPORT_C TUint32NextSibling()
IMPORT_C TIntOrdinalPosition()
IMPORT_C TIntOrdinalPriority()
IMPORT_C TUint32Parent()
IMPORT_C TUint32PrevSibling()
IMPORT_C TIntScreenNumber()
IMPORT_C RWsSession *Session()
IMPORT_C voidSetCustomPointerCursor(const RWsPointerCursor &)
IMPORT_C voidSetFaded(TBool, TFadeControl)
IMPORT_C voidSetFaded(TBool, TFadeControl, TUint8, TUint8)
IMPORT_C voidSetNonFading(TBool)
IMPORT_C voidSetOrdinalPosition(TInt)
IMPORT_C voidSetOrdinalPosition(TInt, TInt)
IMPORT_C TIntSetPointerCursor(TInt)
IMPORT_C TIntWindowGroupId()
void__DbgTest(TAny *)
void__DbgTestInvariant()
Protected Member Functions
RWindowTreeNode()
RWindowTreeNode(RWsSession &)
Inherited Attributes
MWsClientClass::iBuffer
MWsClientClass::iWsHandle
Inherited Functions
MWsClientClass::AddToBitmapArray(const TInt)const
MWsClientClass::AsyncRequest(TRequestStatus &,TUint)const
MWsClientClass::CachedWindowSize(TSize &)const
MWsClientClass::DestroyWindowSizeCacheEntry()
MWsClientClass::MWsClientClass()
MWsClientClass::MWsClientClass(RWsBuffer *)
MWsClientClass::MarkWindowSizeCacheDirty()
MWsClientClass::RefreshWindowSizeCache(const TSize &)const
MWsClientClass::WindowSizeCacheEnabled()const
MWsClientClass::Write(TUint)const
MWsClientClass::Write(const TAny *,TInt,TInt,TUint)const
MWsClientClass::Write(const TAny *,TInt,TUint,const TIpcArgs *)const
MWsClientClass::Write(const TAny *,TInt,const TAny *,TInt,TUint,const TIpcArgs *)const
MWsClientClass::WriteInt(TInt,TUint)const
MWsClientClass::WritePoint(const TPoint &,TUint)const
MWsClientClass::WriteRect(const TRect &,TUint)const
MWsClientClass::WriteReply(TUint,const TIpcArgs *)const
MWsClientClass::WriteReply(const TAny *,TInt,TUint,const TIpcArgs *)const
MWsClientClass::WriteReply(const TAny *,TInt,const TAny *,TInt,TUint,const TIpcArgs *)const
MWsClientClass::WriteReplyByProvidingRemoteReadAccess(const TAny *,TInt,const TReadDescriptorType &,TUint)const
MWsClientClass::WriteReplyInt(TInt,TUint,const TIpcArgs *)const
MWsClientClass::WriteReplyIntP(TInt,const TWriteDescriptorType &,TUint)const
MWsClientClass::WriteReplyP(const TAny *,TInt,const TAny *,TInt,const TWriteDescriptorType &,TUint)const
MWsClientClass::WriteReplyP(const TAny *,TInt,const TWriteDescriptorType &,TUint)const
MWsClientClass::WriteReplyP(const TWriteDescriptorType &,TUint)const
MWsClientClass::WriteSize(const TSize &,TUint)const
MWsClientClass::WsHandle()const

Detailed Description

A handle to a node in the server-side window tree.

This handle class is used as the base for both window groups and the windows within them; it is not intended for user derivation, and may not be directly constructed: use one of the standard derived classes instead.

Member Enumeration Documentation

Enum TFadeControl

Fade control flags.

These flags define whether fading is applied to all child windows when SetFaded() is called on a window.

EnumeratorValueDescription
EFadeIncludeChildrenETrue

Include all child windows when fading/un-fading.

EFadeWindowOnlyEFalse

Fade only the parent window.

Note that a panic will occur if this value is used when SetFaded() is called on a window group.

Constructor & Destructor Documentation

RWindowTreeNode ( )

RWindowTreeNode()[protected]

Protected default constructor.

This creates a sessionless, uninitialised window tree node handle. This class is not for user derivation; however derived classes form part of the Window Server API.

Because RWindowTreeNode and its derived classes are lightweight handles, if your class contains an object of such a class, the object should be an inline member rather than a pointer member.

This default constructor allows you to instantiate such an inline member before the class that contains it has created a window server session. If you do this, you will need to call the RWindowTreeNode constructor that takes an RWsSession parameter before you can use the member, because RWindowTreeNode-derived objects must have a reference to a window server session in order to be valid.

RWindowTreeNode ( RWsSession & )

RWindowTreeNode(RWsSession &aWs)[protected]

Protected constructor which creates an uninitialised window tree node handle within a server session.

This class is not for user derivation; however derived classes form part of the standard Window Server API, and are constructed with a public constructor with the same signature as this one.

Parameters
aWsWindow server session.

Member Function Documentation

Child ( )

IMPORT_C TUint32Child()const

Gets the first child of the node.

This function always causes a flush of the window server buffer.

Return Value
The client handle of the child node that currently has ordinal position 0. This is 0 if there isn't a child.

ClearPointerCursor ( )

IMPORT_C voidClearPointerCursor()

Clears pointer cursor settings.

These are the settings made by calling SetPointerCursor().

ClientHandle ( )

IMPORT_C TUint32ClientHandle()const

Gets the window's client handle

The return value is the client's integer handle that was passed as an argument to the window's Construct() function: see RWindow::Construct() for a description of the client handle.

This function always causes a flush of the window server buffer.

See also: RWindow::Construct()

Return Value
Handle ID for the window.

Close ( )

IMPORT_C voidClose()

Closes the node.

This function should be called on all windows once they are no longer needed. It causes the window server to destroy the server-side window, and frees client-side resources owned by the window.

Note: When Close() is called on a parent window, its children are disconnected from the window tree and are hence removed from the screen. However, any client-side resources owned by its children are not freed. To free these resources, Close() (or Destroy()) must be called on all its children individually.

Destroy ( )

IMPORT_C voidDestroy()

Closes and deletes the node.

This function calls Close() followed by delete on the window. Use this function only when the window is allocated in its own heap cell.

DisableErrorMessages ( )

IMPORT_C voidDisableErrorMessages()

Cancels notification of error message events.

Use this function to instruct the server to stop reporting error message events to this window. If the window server has not previously been instructed to report error message events, this function has no effect (i.e. the default is that windows do not get error messages).

See also: EnableErrorMessages()

DisableFocusChangeEvents ( )

IMPORT_C voidDisableFocusChangeEvents()

Disables delivery of focus changed events.

Use this function to instruct the server to stop reporting window group focus changed events to this window. If the window server has not previously been instructed to report window group changed events, this function has no effect (i.e. the default is that windows do not get the events).

See also: EnableFocusChangeEvents()

DisableGroupChangeEvents ( )

IMPORT_C voidDisableGroupChangeEvents()

Cancels notification of group changed events.

Use this function to instruct the server to stop reporting window group changed events to this window. If the window server has not previously been instructed to report window group changed events, this function has no effect (i.e. the default is that windows do not get the events).

See also: EnableGroupChangeEvents()

DisableGroupListChangeEvents ( )

IMPORT_C voidDisableGroupListChangeEvents()

Disables reporting of window group list change events.

This function instructs the window server to stop sending window group list change events to this window. If the window server has not previously been instructed to report window group list change events, this function has no effect (i.e. the default is that windows do not receive group list change events).

DisableModifierChangedEvents ( )

IMPORT_C voidDisableModifierChangedEvents()

Cancels notification of modifier changed events.

Use this function to instruct the server to stop reporting modifier changed events to this window. If the window server has not previously been instructed to report modifier changed events, this function has no effect (i.e. the default is that windows do not get the events).

See also: EnableModifierChangedEvents()

DisableOnEvents ( )

IMPORT_C voidDisableOnEvents()

Cancels notification of 'on' events.

This function instructs the server to stop reporting 'on' events to this window. If the window server has not previously been instructed to report 'on' events, this method has no effect (i.e. the default is that windows do not get the events).

See also: EnableOnEvents()

DisableVisibilityChangeEvents ( )

IMPORT_C voidDisableVisibilityChangeEvents()

Disables reporting of window visibility change events.

This function instructs the window server to stop sending window visibility change events to this window. If the window server has not previously been instructed to report window visibility change events, this function has no effect (i.e. the default is that windows do not receive visibility change events).

EnableErrorMessages ( TEventControl )

IMPORT_C TIntEnableErrorMessages(TEventControlaCircumstances)

Requests notification of error message events.

Use this function to instruct the window server to report error message events (of type EEventErrorMessage).

This function always causes a flush of the window server buffer.

See also: DisableErrorMessages()

Parameters
aCircumstancesThe circumstances in which error message events are to be reported.
Return Value
KErrNone if successful, otherwise one of the system-wide error codes.

EnableFocusChangeEvents ( )

IMPORT_C TIntEnableFocusChangeEvents()

Enables focus changed events.

After this function is called, the EEventFocusGroupChanged event is delivered to the window server message queue every time the focus window group changes. The handle of the event is set to the client handle of the window that this function is called on.

This function always causes a flush of the window server buffer.

See also: DisableFocusChangeEvents()

Return Value
KErrNone if successful, otherwise another of the system-wide error codes.

EnableGroupChangeEvents ( )

IMPORT_C TIntEnableGroupChangeEvents()

Requests notification of group-change events.

Use this function to instruct the window server to report group-change events to this window. These events will typically be of interest to a shell or similar application, for example to notify it that it should update its list of running applications. Window group changed events are of type EEventWindowGroupsChanged.

This function always causes a flush of the window server buffer.

See also: DisableGroupChangeEvents()

Return Value
KErrNone if successful, otherwise one of the system-wide error codes.

EnableGroupListChangeEvents ( )

IMPORT_C TIntEnableGroupListChangeEvents()

Enables reporting of window group list change events.

The window group list is a list of all window groups and their z-order. Calling this function will cause notification events (of type EEventWindowGroupListChanged) for any change in the window group list: additions, removals and reorderings.

This function is useful when you need to know about changes to window groups beneath the focused one, for instance when the screen is showing windows from more than one window group at the same time.

The handle of the event is set to the client handle of the window that this function is called on.

This function always causes a flush of the window server buffer.

Return Value
KErrNone if successful, otherwise another of the system-wide error codes.

EnableModifierChangedEvents ( TUint, TEventControl )

IMPORT_C TIntEnableModifierChangedEvents(TUintaModifierMask,
TEventControlaCircumstances
)

Requests notification of modifier changed events.

Use this function to instruct the window server to report modifier changed events to this window. Values for the modifier keys are defined in TEventModifier. If more than one modifier key is to be monitored, their values should be combined using a bit-wise OR operation. Modifier changed events are of type EEventModifiersChanged.

This function always causes a flush of the window server buffer.

See also: DisableModifierChangedEvents()

Parameters
aModifierMaskThe modifiers to be reported. May be a combination of values defined in TEventModifier
aCircumstancesThe circumstances in which modifier changed events are to be reported.
Return Value
KErrNone if successful, otherwise one of the system-wide error codes.

EnableOnEvents ( TEventControl )

IMPORT_C TIntEnableOnEvents(TEventControlaCircumstances = EEventControlOnlyWithKeyboardFocus)

Requests notification of 'on' events. 'On' events are of type EEventSwitchOn.

This function always causes a flush of the window server buffer.

See also: DisableOnEvents()

Parameters
aCircumstancesThe circumstances in which 'on' events are to be reported.
Return Value
KErrNone if successful, otherwise one of the system-wide error codes.

EnableVisibilityChangeEvents ( )

IMPORT_C TIntEnableVisibilityChangeEvents()

Enables reporting of window visibility change events.

The window visibility is based on whether or not any area of the window can be seen on the screen. This can be affected by SetVisible(), but also by other windows in front of this one, and by the presence of transparent windows which it can be seen through. Calling this function will cause notification events (of type EEventWindowVisibilityChanged) for any change in the window's visibility.

This function is useful when you are performing graphical processing such as animations and would like to stop them while they cannot be seen, for efficiency reasons.

The handle of the event is set to the client handle of the window that this function is called on.

This function always causes a flush of the window server buffer.

Return Value
KErrNone if successful, otherwise another of the system-wide error codes.

FullOrdinalPosition ( )

IMPORT_C TIntFullOrdinalPosition()const

Get the current full ordinal position of a window.

This function normally returns a useful value only when called on a window group, because only window groups are normally given different priorities. For other types of window the value returned is usually the same as that returned by OrdinalPosition().

This function always causes a flush of the window server buffer.

Return Value
The window's full ordinal position.

NextSibling ( )

IMPORT_C TUint32NextSibling()const

Gets the next window after this one in its sibling list.

The return value is the client handle that was passed in the next sibling window's Construct() function: see RWindow::Construct() for a description of the client handle.

This function always causes a flush of the window server buffer.

See also: PrevSibling() Child() Parent()

Return Value
Window handle of next sibling, or 0 if no next sibling exists.

OrdinalPosition ( )

IMPORT_C TIntOrdinalPosition()const

Gets the current ordinal position of the window tree node.

The ordinal position returned is the window's position amongst windows with the same parent (an with the same priority). Displayable windows almost always have the same priority, but window groups might typically have different priorities. If a window group's ordinal position among window groups of all priorities is required, use FullOrdinalPosition().

Note: all group windows (across all clients) have the same parent.

This function always causes a flush of the window server buffer.

Return Value
The window's ordinal position.

OrdinalPriority ( )

IMPORT_C TIntOrdinalPriority()const

Gets the ordinal priority of the specified window.

This function was added for FEPs that need to know the priority in their dialogues.

This function and RWsSession::GetWindowGroupOrdinalPriority() may return different values because this function isn't subject to any ordinal priority adjustment, while the window group ordinal priority may be.

This function always causes a flush of the window server buffer.

Return Value
The ordinal priority of the specified window

Parent ( )

IMPORT_C TUint32Parent()const

Gets the node's parent.

The return value is the client's integer handle that was passed as an argument to the parent window tree node's Construct() function: see RWindow::Construct() for a description of the client handle. If called on a window group, this function returns 0, as window groups have no parent.

This function always causes a flush of the window server buffer.

See also: Child() RWindow::Construct()

Return Value
Handle ID for the parent, or zero for window groups.

PrevSibling ( )

IMPORT_C TUint32PrevSibling()const

Gets the node before this one in the sibling list.

The return value is the client handle that was passed in the previous sibling window's Construct() function: see RWindow::Construct() for a description of the client handle.

This function always causes a flush of the window server buffer.

See also: NextSibling() RWindow::Construct()

Return Value
Handle ID for the previous sibling, or zero if no previous sibling exists.

ScreenNumber ( )

IMPORT_C TIntScreenNumber()const

Get the screen number that a window is located on

Return Value
The screen number that the window is located on

Session ( )

IMPORT_C RWsSession *Session()const

Returns the window server session that is used to create this window handle.

This functions returns null if the window handle is not initialised.

See also: RWindowTreeNode(RWsSession &aWs)

SetCustomPointerCursor ( const RWsPointerCursor & )

IMPORT_C voidSetCustomPointerCursor(const RWsPointerCursor &aPointerCursor)

Sets the pointer cursor to an application-defined cursor.

Parameters
aPointerCursorThe cursor to use.

SetFaded ( TBool, TFadeControl )

IMPORT_C voidSetFaded(TBoolaFaded,
TFadeControlaIncludeChildren
)

Sets the window as faded or unfaded.

This function allows a single window to be faded or unfaded. The function also allows the same action to be applied to all of the window's children.

Notes:

A redraw is required to un-fade a window because information is lost during fading (blank and backup windows deal with this themselves). Areas in shadow when the window is faded also require a redraw.

While a window is faded, all drawing to that window will be adjusted appropriately by the window server.

Parameters
aFadedETrue to fade the window, EFalse to un-fade it.
aIncludeChildrenFade control flags. These set whether fading/un-fading also apply to child windows.

SetFaded ( TBool, TFadeControl, TUint8, TUint8 )

IMPORT_C voidSetFaded(TBoolaFaded,
TFadeControlaIncludeChildren,
TUint8aBlackMap,
TUint8aWhiteMap
)

Sets one or more windows as faded or unfaded, specifying a fading map.

Fading is used to change the colour of a window to make other windows stand out. For example, you would fade all other windows when displaying a dialogue.

Fading makes a window closer to white or closer to black. Setting the fading map allows you to over-ride the default fading parameters set in RWsSession::SetDefaultFadingParameters().

The white and black fading values define the range over which colours are re-mapped when a window is faded. As the values get closer together, all colours in the faded window becomes more similar, creating the fading effect. When the numbers cross over (so that the black value is greater than the white value) the colours in the faded window start to invert, i.e. colours that were closer to white in the unfaded window are mapped to a darker colour when the window is faded.

The function also allows the fading action applied to this window to be applied to all of its children.

Notes:

Fading a window for a 2nd time will not change the fading map used.

A redraw is required to un-fade a window because information is lost during fading. Note that blank (RBlankWindow) and backup (RBackedUpWindow) windows deal with this themselves. Areas in shadow when the window is faded also require a redraw.

While a window is faded all drawing to that window will be adjusted appropriately by the window server.

See also: RWsSession::SetDefaultFadingParameters() CWindowGc::SetFadingParameters()

Parameters
aFadedETrue to fade the window, EFalse to un-fade it.
aIncludeChildrenFade control flags. This sets whether fading/un-fading is also to apply to all child windows.
aBlackMapBlack map fading parameter.
aWhiteMapWhite map fading parameter.

SetNonFading ( TBool )

IMPORT_C voidSetNonFading(TBoolaNonFading)

Sets whether a window is non-fading.

When the non-fading flag is set the window will unfade if needed and remain unfaded until this flag is removed. This is useful for toolbars etc. which must never be faded.

Parameters
aNonFadingETrue to set the non-fading flag, EFalse (the default) to re-set it.

SetOrdinalPosition ( TInt )

IMPORT_C voidSetOrdinalPosition(TIntaPos)

Sets the ordinal position of a window.

A window's ordinal position is relative to its siblings with the same ordinal priority. The ordinal priority of displayable windows (in other words, not window groups) is almost always zero (the default). To set the ordinal priority as well as the ordinal position, use the other overload of this function.

The lower the ordinal position, the nearer the window will be to the front of the z-order. The frontmost window has ordinal position zero. Specifying a negative value has the effect of sending the window to the back of the z-order.

Note: If this window is a window group in a chain, then all other window groups in the chain will be moved also. When this function is called on Group Window with aPos set to KOrdinalPositionSwitchToOwningWindow then the function doesn't change the ordinal position of the group window, if instead it has focus then the window group that would come to the forground if it died will be moved to the foreground.

Parameters
aPosThe window's new ordinal position. The lower the ordinal, the closer to the front of the z-order the window will be. Specifying any negative value however, sends the window to the back of the z-order.

SetOrdinalPosition ( TInt, TInt )

IMPORT_C voidSetOrdinalPosition(TIntaPos,
TIntaOrdinalPriority
)

Sets the ordinal position and ordinal priority of a window.

Ordinal priority is a number assigned to a window that determines its position in the z-order. For sibling windows or group windows, the higher the priority, the closer it will be to the front. Ordinal priority overrides ordinal position, so that the ordinal position is only taken into account for sibling windows or window groups with the same ordinal priority. For a description of ordinal position, see the other overload of this function.

Most windows have an ordinal priority of zero. Only window groups are normally given non-default ordinal priorities.

To set priority of KPasswordWindowGroupPriority or greater on a window group, client will require SwEvent capability. If client does not have SwEvent capability then priority will be reduced to KPasswordWindowGroupPriority-1. This function doesn't return an error thus the client cannot tell if the priority is reduced, however, there is another function that can be used if the client does require an error, this is RWindowGroup::SetOrdinalPositionErr.

Note: If this window is a window group in a chain, then all other window groups in the chain will be moved also. And further they will all have their ordinal priority set to the specified value. When this function is called on Group Window with aPos set to KOrdinalPositionSwitchToOwningWindow then the function doesn't change the ordinal position of the group window, if instead it has focus then the window group that would come to the forground if it died will be moved to the foreground.

Parameters
aPosThe window's new ordinal position. The lower the ordinal, the closer to the front of the z-order the window will be. Specifying any negative value however, sends the window to the back of the z-order.
aOrdinalPriorityThe window's new ordinal priority.

SetPointerCursor ( TInt )

IMPORT_C TIntSetPointerCursor(TIntaCursorNumber)

Sets the pointer cursor from the system pointer cursor list.

Use this function to set the current cursor to one contained in the system pointer cursor list. If the list does not contain a cursor with an index of aCursorNumber, the function will attempt to set the cursor to the default system pointer cursor, which has an index of 0 in the list.

The RWsSession class provides functions for setting and controlling the system pointer cursor list.

This function always causes a flush of the window server buffer.

See also: ClearPointerCursor()

Parameters
aCursorNumberThe cursor index in the system pointer cursor list.
Return Value
KErrNone if successful, otherwise one of the system-wide error codes.

WindowGroupId ( )

IMPORT_C TIntWindowGroupId()const

Returns the window group Id of the parent window group

If the window is a window group it will return it's Id. If it is not it scans up the window tree to find the group window from which this window is descended and returns it's Id.

This function always causes a flush of the window server buffer.

Return Value
The window group Id of the window group from which this window is descended.

__DbgTest ( TAny * )

void__DbgTest(TAny *aPtr)const

__DbgTestInvariant ( )

void__DbgTestInvariant()const

In debug builds, this function always causes a flush of the window server buffer.