summaryrefslogtreecommitdiff
path: root/src/gui/kernel/qwidget_s60.cpp
diff options
context:
space:
mode:
authorGareth Stockwell <gareth.stockwell@sosco.com>2009-10-01 15:41:28 +0100
committerGareth Stockwell <gareth.stockwell@sosco.com>2009-10-01 15:41:28 +0100
commitf00aeb98d457b16ac90e98f3dd18bf4f53fefeb3 (patch)
tree275e3f2b7e73baba2469764004febfbcc3a35ad1 /src/gui/kernel/qwidget_s60.cpp
parent99d0b5de2bf4415076ceb96b2f2459e81bddfa43 (diff)
downloadqt4-tools-f00aeb98d457b16ac90e98f3dd18bf4f53fefeb3.tar.gz
Immediately activate native windows created by calling winId() on an already-visible widget
If a widget is visible when winId() is called on it, this change means that the newly-created native window will be activated immediately.
Diffstat (limited to 'src/gui/kernel/qwidget_s60.cpp')
-rw-r--r--src/gui/kernel/qwidget_s60.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp
index d6e0a97a94..c1d7262d85 100644
--- a/src/gui/kernel/qwidget_s60.cpp
+++ b/src/gui/kernel/qwidget_s60.cpp
@@ -405,6 +405,9 @@ void QWidgetPrivate::create_sys(WId window, bool /* initializeWindow */, bool de
int x, y, w, h;
data.crect.getRect(&x, &y, &w, &h);
control->SetRect(TRect(TPoint(x, y), TSize(w, h)));
+
+ if (q->isVisible() && q->testAttribute(Qt::WA_Mapped))
+ activateSymbianWindow();
}
if (destroyw) {
@@ -436,10 +439,9 @@ void QWidgetPrivate::show_sys()
if (q->internalWinId()) {
WId id = q->internalWinId();
- if (!extra->activated) {
- QT_TRAP_THROWING(id->ActivateL());
- extra->activated = 1;
- }
+ if (!extra->activated)
+ activateSymbianWindow();
+
id->MakeVisible(true);
if(q->isWindow())
@@ -455,6 +457,19 @@ void QWidgetPrivate::show_sys()
invalidateBuffer(q->rect());
}
+void QWidgetPrivate::activateSymbianWindow()
+{
+ Q_Q(QWidget);
+
+ Q_ASSERT(q->testAttribute(Qt::WA_WState_Created));
+ Q_ASSERT(q->testAttribute(Qt::WA_Mapped));
+ Q_ASSERT(!extra->activated);
+
+ WId id = q->internalWinId();
+ QT_TRAP_THROWING(id->ActivateL());
+ extra->activated = 1;
+}
+
void QWidgetPrivate::hide_sys()
{
Q_Q(QWidget);