diff --git a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp index cc60246..43bd051 100644 --- a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp +++ b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp @@ -42,6 +42,7 @@ #ifndef QT_NO_IM #include "qcoefepinputcontext_p.h" +#include "qt_s60_p.h" #include #include #include @@ -92,7 +93,7 @@ QCoeFepInputContext::~QCoeFepInputContext() // otherwise we may get callbacks even after we're destroyed. // The call below is essentially equivalent to InputCapabilitiesChanged(), // but is synchronous, rather than asynchronous. - CCoeEnv::Static()->SyncNotifyFocusObserversOfChangeInFocus(); + S60->eikonEnv->SyncNotifyFocusObserversOfChangeInFocus(); if (m_fepState) delete m_fepState; @@ -525,7 +526,7 @@ void QCoeFepInputContext::ensureInputCapabilitiesChanged() // The call below is essentially equivalent to InputCapabilitiesChanged(), // but is synchronous, rather than asynchronous. - CCoeEnv::Static()->SyncNotifyFocusObserversOfChangeInFocus(); + S60->eikonEnv->SyncNotifyFocusObserversOfChangeInFocus(); m_pendingInputCapabilitiesChanged = false; } @@ -784,7 +785,7 @@ void QCoeFepInputContext::commitCurrentString(bool cancelFepTransaction) longPress = 0; if (cancelFepTransaction) { - CCoeFep* fep = CCoeEnv::Static()->Fep(); + CCoeFep* fep = S60->eikonEnv->Fep(); if (fep) fep->CancelTransaction(); } diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index 4a15cf2..6c52ccf 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -988,7 +988,7 @@ void QSymbianControl::FocusChanged(TDrawNow /* aDrawNow */) } #endif } else if (QApplication::activeWindow() == qwidget->window()) { - if (CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog()) { + if (S60->eikonEnv->AppUi()->IsDisplayingMenuOrDialog()) { QWidget *fw = QApplication::focusWidget(); if (fw) { QFocusEvent event(QEvent::FocusOut, Qt::PopupFocusReason); @@ -1130,7 +1130,8 @@ QApplication::QApplication(QApplication::QS60MainApplicationFactory factory, int void qt_init(QApplicationPrivate * /* priv */, int) { - if (!CCoeEnv::Static()) { + CEikonEnv* coe = CEikonEnv::Static(); + if (!coe) { // The S60 framework creates a new trap handler which will render any existing traps // invalid as long as it is active. This means that all code in main() that occurs after // the QApplication construction needs to be surrounded by a new trap, despite having @@ -1144,9 +1145,9 @@ void qt_init(QApplicationPrivate * /* priv */, int) S60->s60ApplicationFactory : newS60Application); CApaCommandLine* commandLine = 0; TInt err = CApaCommandLine::GetCommandLineFromProcessEnvironment(commandLine); - // After this construction, CEikonEnv will be available from CEikonEnv::Static(). + // After this construction, CEikonEnv will be available to the UI thread from CEikonEnv::Static(). // (much like our qApp). - CEikonEnv* coe = new CEikonEnv; + coe = new CEikonEnv; //not using QT_TRAP_THROWING, because coe owns the cleanupstack so it can't be pushed there. if(err == KErrNone) TRAP(err, coe->ConstructAppFromCommandLineL(factory,*commandLine)); @@ -1165,6 +1166,8 @@ void qt_init(QApplicationPrivate * /* priv */, int) } else { S60->qtOwnsS60Environment = false; } + Q_ASSERT(coe); + S60->eikonEnv = coe; #ifdef QT_NO_DEBUG if (!qgetenv("QT_S60_AUTO_FLUSH_WSERV").isEmpty()) @@ -1344,7 +1347,7 @@ void qt_cleanup() // Restore the S60 framework trap handler. See qt_init(). User::SetTrapHandler(S60->s60InstalledTrapHandler); - CEikonEnv* coe = CEikonEnv::Static(); + CEikonEnv* coe = S60->eikonEnv; coe->PrepareToExit(); // The CEikonEnv itself is destroyed in here. coe->DestroyEnvironment(); diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h index cedede1..29b3207 100644 --- a/src/gui/kernel/qt_s60_p.h +++ b/src/gui/kernel/qt_s60_p.h @@ -113,6 +113,7 @@ public: int virtualMousePressedKeys; // of the above type, but avoids casting problems int virtualMouseAccel; int virtualMouseMaxAccel; + CEikonEnv* eikonEnv; #ifndef Q_SYMBIAN_FIXED_POINTER_CURSORS int brokenPointerCursors : 1; #endif @@ -253,33 +254,33 @@ inline void QS60Data::updateScreenSize() inline RWsSession& QS60Data::wsSession() { - return CCoeEnv::Static()->WsSession(); + return S60->eikonEnv->WsSession(); } inline RWindowGroup& QS60Data::windowGroup() { - return CCoeEnv::Static()->RootWin(); + return S60->eikonEnv->RootWin(); } inline CWsScreenDevice* QS60Data::screenDevice() { - return CCoeEnv::Static()->ScreenDevice(); + return S60->eikonEnv->ScreenDevice(); } inline CCoeAppUi* QS60Data::appUi() { - return CCoeEnv::Static()-> AppUi(); + return S60->eikonEnv->AppUi(); } inline CEikMenuBar* QS60Data::menuBar() { - return CEikonEnv::Static()->AppUiFactory()->MenuBar(); + return S60->eikonEnv->AppUiFactory()->MenuBar(); } #ifdef Q_WS_S60 inline CEikStatusPane* QS60Data::statusPane() { - return CEikonEnv::Static()->AppUiFactory()->StatusPane(); + return S60->eikonEnv->AppUiFactory()->StatusPane(); } // Returns the application's status pane control, if not present returns NULL. @@ -310,7 +311,7 @@ inline CAknContextPane* QS60Data::contextPane() inline CEikButtonGroupContainer* QS60Data::buttonGroupContainer() { - return CEikonEnv::Static()->AppUiFactory()->Cba(); + return S60->eikonEnv->AppUiFactory()->Cba(); } #endif // Q_WS_S60 diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp index 5202701..742154d 100644 --- a/src/gui/styles/qs60style_s60.cpp +++ b/src/gui/styles/qs60style_s60.cpp @@ -179,7 +179,7 @@ const partMapEntry QS60StyleModeSpecifics::m_partMap[] = { /* SP_QgnGrafBarFrameSideR */ {KAknsIIDQgnGrafBarFrameSideR, EDrawIcon, ES60_All, -1,-1}, /* SP_QgnGrafBarProgress */ {KAknsIIDQgnGrafBarProgress, EDrawIcon, ES60_All, -1,-1}, // No drop area for 3.x non-touch devices - /* SP_QgnGrafOrgBgGrid */ {KAknsIIDNone, EDrawIcon, ES60_3_X, EAknsMajorGeneric ,0x1eba}, //KAknsIIDQgnGrafOrgBgGrid + /* SP_QgnGrafOrgBgGrid */ {KAknsIIDNone, EDrawIcon, ES60_3_X, EAknsMajorGeneric ,0x1eba}, //KAknsIIDQgnGrafOrgBgGrid /* SP_QgnGrafScrollArrowDown */ {KAknsIIDQgnGrafScrollArrowDown, EDrawGulIcon, ES60_All, -1,-1}, /* SP_QgnGrafScrollArrowLeft */ {KAknsIIDQgnGrafScrollArrowLeft, EDrawGulIcon, ES60_All, -1,-1}, /* SP_QgnGrafScrollArrowRight */ {KAknsIIDQgnGrafScrollArrowRight, EDrawGulIcon, ES60_All, -1,-1}, @@ -1051,7 +1051,7 @@ QFont QS60StylePrivate::s60Font_specific( } // Create AVKON font according the given parameters - CWsScreenDevice* dev = CCoeEnv::Static()->ScreenDevice(); + CWsScreenDevice* dev = S60->screenDevice(); TAknFontSpecification spec(aknFontCategory, TFontSpec(), NULL); if (pointSize > 0) { const TInt pixelSize = dev->VerticalTwipsToPixels(pointSize * KTwipsPerPoint); diff --git a/src/gui/util/qdesktopservices_s60.cpp b/src/gui/util/qdesktopservices_s60.cpp index 39240e6..66b2bac 100644 --- a/src/gui/util/qdesktopservices_s60.cpp +++ b/src/gui/util/qdesktopservices_s60.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include // CRichText #include // TDriveUnit etc @@ -216,7 +217,7 @@ static void handleOtherSchemesL(const TDesC& aUrl) buf16->Des().Copy(KBrowserPrefix); // Prefix used to launch correct browser view buf16->Des().Append(aUrl); - TApaTaskList taskList(CEikonEnv::Static()->WsSession()); + TApaTaskList taskList(S60->wsSession()); TApaTask task = taskList.FindApp(KUidBrowser); if (task.Exists()){ // Switch to existing browser instance @@ -415,11 +416,11 @@ QString QDesktopServices::storageLocation(StandardLocation type) //return QDir::homePath(); break; break; case DataLocation: - CEikonEnv::Static()->FsSession().PrivatePath(path); + qt_s60GetRFs().PrivatePath(path); path.Insert(0, writableExeDrive().Name()); break; case CacheLocation: - CEikonEnv::Static()->FsSession().PrivatePath(path); + qt_s60GetRFs().PrivatePath(path); path.Insert(0, writableExeDrive().Name()); path.Append(KCacheSubDir); break;