// --------------------------------------------------------------------------- // CAknPointerEventModifier::Push // --------------------------------------------------------------------------- // EXPORT_C void CAknPointerEventModifier::Push( CCoeControl& aControl, const TRect& aRect ) { // Figure out aControl's window-owning parent. This will also work as a // sanity check for the aControl argument. CCoeControl* parent = aControl.Parent(); while ( parent && !parent->OwnsWindow() ) { parent = parent->Parent(); } if ( !parent ) { return; } if ( !ControlIsInStack( aControl ) ) { TStackItem item; item.iControl = &aControl; item.iParent = parent; item.iExtensionArea = aRect; if ( iStack.Insert( item, 0 ) == KErrNone ) { iIsValid = EFalse; } } }
/* * Makes the specified cursor appear everywhere. * Called from QApplication::setOverrideCursor */ void qt_symbian_setGlobalCursor(const QCursor &cursor) { #ifndef Q_SYMBIAN_FIXED_POINTER_CURSORS if (S60->brokenPointerCursors) { qt_symbian_set_pointer_sprite(cursor); } else #endif { //because of the internals of window server, we need to force the cursor //to be set in all child windows too, otherwise when the cursor is over //the child window it may show a widget cursor or arrow cursor instead, //depending on construction order. QListIterator<WId> iter(QWidgetPrivate::mapper->uniqueKeys()); while(iter.hasNext()) { CCoeControl *ctrl = iter.next(); if(ctrl->OwnsWindow()) { RWindowTreeNode *node = ctrl->DrawableWindow(); qt_symbian_setWindowGroupCursor(cursor, *node); } } } }