summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authoraxis <qt-info@nokia.com>2010-01-07 15:01:58 (GMT)
committeraxis <qt-info@nokia.com>2010-01-08 15:11:27 (GMT)
commit4a84b272459160780529f654e6aee3abf8569b51 (patch)
tree766aaa2c34e0e7a9014971e6f59658ff2291b848 /src
parent07b484b7c4685cfc2187be840a01e15f0fe08ff5 (diff)
downloadQt-4a84b272459160780529f654e6aee3abf8569b51.zip
Qt-4a84b272459160780529f654e6aee3abf8569b51.tar.gz
Qt-4a84b272459160780529f654e6aee3abf8569b51.tar.bz2
Added a flag to avoid construction of application panes.
This is purely an optimization for fullscreen-only apps. Task: QTBUG-6098 RevBy: Jason Barron RevBy: mread AutoTest: Included
Diffstat (limited to 'src')
-rw-r--r--src/corelib/global/qnamespace.h1
-rw-r--r--src/corelib/global/qnamespace.qdoc6
-rw-r--r--src/gui/dialogs/qdialog.cpp9
-rw-r--r--src/gui/kernel/qsoftkeymanager.cpp3
-rw-r--r--src/gui/s60framework/qs60mainappui.cpp12
5 files changed, 26 insertions, 5 deletions
diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h
index 0ee9cd2..c40308c 100644
--- a/src/corelib/global/qnamespace.h
+++ b/src/corelib/global/qnamespace.h
@@ -511,6 +511,7 @@ public:
AA_MacPluginApplication = 5,
AA_DontUseNativeMenuBar = 6,
AA_MacDontSwapCtrlAndMeta = 7,
+ AA_S60DontConstructApplicationPanes = 8,
// Add new attributes before this line
AA_AttributeCount
diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index 70ca507..5a80d56 100644
--- a/src/corelib/global/qnamespace.qdoc
+++ b/src/corelib/global/qnamespace.qdoc
@@ -163,6 +163,12 @@
Command+C on the keyboard regardless of the value set, though what is output for
QKeySequence::toString(QKeySequence::PortableText) will be different).
+ \value AA_S60DontConstructApplicationPanes Stops Qt from initializing the S60 status
+ pane and softkey pane on Symbian. This is useful to save memory and reduce
+ startup time for applications that will run in fullscreen mode during their
+ whole lifetime. This attribute must be set before QApplication is
+ constructed.
+
\omitvalue AA_AttributeCount
*/
diff --git a/src/gui/dialogs/qdialog.cpp b/src/gui/dialogs/qdialog.cpp
index ed2d676..d7653e5 100644
--- a/src/gui/dialogs/qdialog.cpp
+++ b/src/gui/dialogs/qdialog.cpp
@@ -888,7 +888,14 @@ bool QDialog::s60AdjustedPosition()
if (doS60Positioning) {
// naive way to deduce screen orientation
if (S60->screenHeightInPixels > S60->screenWidthInPixels) {
- p.setY(S60->screenHeightInPixels-height()-qt_TSize2QSize(S60->buttonGroupContainer()->Size()).height());
+ int cbaHeight;
+ const CEikButtonGroupContainer* bgContainer = S60->buttonGroupContainer();
+ if (!bgContainer) {
+ cbaHeight = 0;
+ } else {
+ cbaHeight = qt_TSize2QSize(bgContainer->Size()).height();
+ }
+ p.setY(S60->screenHeightInPixels-height()-cbaHeight);
p.setX(0);
} else {
const int scrollbarWidth = style()->pixelMetric(QStyle::PM_ScrollBarExtent);
diff --git a/src/gui/kernel/qsoftkeymanager.cpp b/src/gui/kernel/qsoftkeymanager.cpp
index 0e98f39..b09ab8f 100644
--- a/src/gui/kernel/qsoftkeymanager.cpp
+++ b/src/gui/kernel/qsoftkeymanager.cpp
@@ -211,7 +211,8 @@ bool QSoftKeyManager::event(QEvent *e)
void QSoftKeyManagerPrivate::updateSoftKeys_sys(const QList<QAction*> &softkeys)
{
// lets not update softkeys if s60 native dialog or menu is shown
- if (CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog())
+ if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes)
+ || CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog())
return;
CEikButtonGroupContainer* nativeContainer = S60->buttonGroupContainer();
diff --git a/src/gui/s60framework/qs60mainappui.cpp b/src/gui/s60framework/qs60mainappui.cpp
index 4c4c994..4813fb2 100644
--- a/src/gui/s60framework/qs60mainappui.cpp
+++ b/src/gui/s60framework/qs60mainappui.cpp
@@ -104,10 +104,16 @@ void QS60MainAppUi::ConstructL()
// ENoAppResourceFile and ENonStandardResourceFile makes UI to work without
// resource files in most SDKs. S60 3rd FP1 public seems to require resource file
// even these flags are defined
- BaseConstructL(CAknAppUi::EAknEnableSkin);
+ TInt flags = CAknAppUi::EAknEnableSkin;
+ if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes)) {
+ flags |= CAknAppUi::ENoScreenFurniture | CAknAppUi::ENonStandardResourceFile;
+ }
+ BaseConstructL(flags);
- CEikButtonGroupContainer* nativeContainer = Cba();
- nativeContainer->SetCommandSetL(R_AVKON_SOFTKEYS_EMPTY_WITH_IDS);
+ if (!QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes)) {
+ CEikButtonGroupContainer* nativeContainer = Cba();
+ nativeContainer->SetCommandSetL(R_AVKON_SOFTKEYS_EMPTY_WITH_IDS);
+ }
}
/*!