diff options
author | Janne Anttila <janne.anttila@digia.com> | 2010-10-07 09:41:03 (GMT) |
---|---|---|
committer | Janne Anttila <janne.anttila@digia.com> | 2010-10-07 12:59:43 (GMT) |
commit | a3c755e358596238dc7fc1c284328a6226c2ed3a (patch) | |
tree | 2cb4ef96c1344ed3115777d9196ca291eecdea52 /src/gui/kernel/qwidget_s60.cpp | |
parent | 8082a800a55875fd2e64cf2ab5c6fa2c26722132 (diff) | |
download | Qt-a3c755e358596238dc7fc1c284328a6226c2ed3a.zip Qt-a3c755e358596238dc7fc1c284328a6226c2ed3a.tar.gz Qt-a3c755e358596238dc7fc1c284328a6226c2ed3a.tar.bz2 |
Removed the need for S60main.rsc resource file in Symbian.
Qt upgrade was failing since the s60main.rsc is being locked by
S60 application framework. And when installer detects that
old version of Qt has already been installed it first tries to
uninstall the old one and then install the new one. The uninstallion
failed since the file was locked by the running Qt application.
It should be noted that this patch fixes the Qt upgradibility only
for Qt versions where patch is included. I.e. the versions before
4.7.2 need a different mechanism to be upgradable. This different
mechanism is based on partial upgrade SIS packages as described in
QT-4052.
Task-number: QT-3471
Reviewed-by: Axis
Diffstat (limited to 'src/gui/kernel/qwidget_s60.cpp')
-rw-r--r-- | src/gui/kernel/qwidget_s60.cpp | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index 4109ed8..49d2ffc 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -69,6 +69,7 @@ extern bool qt_nograb(); QWidget *QWidgetPrivate::mouseGrabber = 0; QWidget *QWidgetPrivate::keyboardGrabber = 0; +CEikButtonGroupContainer *QS60Data::cba = 0; static bool isEqual(const QList<QAction*>& a, const QList<QAction*>& b) { @@ -494,9 +495,27 @@ void QWidgetPrivate::show_sys() // Create the status pane and CBA here CEikAppUi *ui = static_cast<CEikAppUi *>(S60->appUi()); MEikAppUiFactory *factory = CEikonEnv::Static()->AppUiFactory(); - TRAP_IGNORE(factory->ReadAppInfoResourceL(0, ui)); - if (S60->buttonGroupContainer()) - S60->buttonGroupContainer()->SetCommandSetL(R_AVKON_SOFTKEYS_EMPTY_WITH_IDS); + + QT_TRAP_THROWING( + factory->CreateResourceIndependentFurnitureL(ui); + + TRect boundingRect = static_cast<CEikAppUi*>(S60->appUi())->ClientRect(); + + CEikButtonGroupContainer *cba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, + CEikButtonGroupContainer::EHorizontal,ui,R_AVKON_SOFTKEYS_EMPTY_WITH_IDS); + + CEikButtonGroupContainer *oldCba = CEikonEnv::Static()->AppUiFactory()->SwapButtonGroup(cba); + Q_ASSERT(!oldCba); + S60->setButtonGroupContainer(cba); + + CEikMenuBar *menuBar = new(ELeave) CEikMenuBar; + menuBar->ConstructL(ui, 0, R_AVKON_MENUPANE_EMPTY); + menuBar->SetMenuType(CEikMenuBar::EMenuOptions); + S60->appUi()->AddToStackL(menuBar,ECoeStackPriorityMenu,ECoeStackFlagRefusesFocus); + + CEikMenuBar *oldMenu = CEikonEnv::Static()->AppUiFactory()->SwapMenuBar(menuBar); + Q_ASSERT(!oldMenu); + ) if (S60->statusPane()) { // Use QDesktopWidget as the status pane observer to proxy for the AppUi. |