summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2009-08-11 09:52:05 (GMT)
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2009-08-11 09:52:05 (GMT)
commit0ec7c55b241d7f281e49edbd7b496f7b5be01305 (patch)
treed0c9d4741327fd1dc57a0ec4755acc7977d5b79c /src
parentf79228b71b05d28b83014f262bc47e3fe9557a14 (diff)
parent7f7965212438405c64566416c0f8972f06d6dcd1 (diff)
downloadQt-0ec7c55b241d7f281e49edbd7b496f7b5be01305.zip
Qt-0ec7c55b241d7f281e49edbd7b496f7b5be01305.tar.gz
Qt-0ec7c55b241d7f281e49edbd7b496f7b5be01305.tar.bz2
Merge branch 'master' of git@scm.dev.troll.no:qt/qt-s60-public
Diffstat (limited to 'src')
-rw-r--r--src/corelib/io/qdir.cpp2
-rw-r--r--src/corelib/io/qdiriterator.cpp19
-rw-r--r--src/corelib/io/qdiriterator.h2
-rw-r--r--src/corelib/plugin/qfactoryloader.cpp13
-rw-r--r--src/corelib/tools/qdatetime.cpp3
-rw-r--r--src/corelib/tools/qscopedpointer.cpp8
-rw-r--r--src/corelib/tools/qscopedpointer.h39
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp149
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp28
-rw-r--r--src/gui/kernel/qapplication_s60.cpp7
-rw-r--r--src/gui/kernel/qdesktopwidget_s60.cpp1
-rw-r--r--src/gui/kernel/qt_s60_p.h1
-rw-r--r--src/gui/kernel/qwidget_s60.cpp11
-rw-r--r--src/gui/painting/qwindowsurface_s60.cpp8
14 files changed, 133 insertions, 158 deletions
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp
index 836fa44..5e24bf4 100644
--- a/src/corelib/io/qdir.cpp
+++ b/src/corelib/io/qdir.cpp
@@ -86,7 +86,7 @@ class QDirPrivate
QDir *q_ptr;
Q_DECLARE_PUBLIC(QDir)
- friend class QScopedPointerDeleter<QDirPrivate>;
+ friend struct QScopedPointerDeleter<QDirPrivate>;
protected:
QDirPrivate(QDir*, const QDir *copy=0);
~QDirPrivate();
diff --git a/src/corelib/io/qdiriterator.cpp b/src/corelib/io/qdiriterator.cpp
index 30d2558..2039827 100644
--- a/src/corelib/io/qdiriterator.cpp
+++ b/src/corelib/io/qdiriterator.cpp
@@ -99,6 +99,18 @@
QT_BEGIN_NAMESPACE
+class QDirIteratorPrivateIteratorStack : public QStack<QAbstractFileEngineIterator *>
+{
+public:
+ ~QDirIteratorPrivateIteratorStack();
+};
+
+QDirIteratorPrivateIteratorStack::~QDirIteratorPrivateIteratorStack()
+{
+ qDeleteAll(*this);
+}
+
+
class QDirIteratorPrivate
{
public:
@@ -112,7 +124,7 @@ public:
void checkAndPushDirectory(const QFileInfo &);
bool matchesFilters(const QString &fileName, const QFileInfo &fi) const;
- QAbstractFileEngine * const engine;
+ QScopedPointer<QAbstractFileEngine> engine;
const QString path;
const QStringList nameFilters;
@@ -123,7 +135,7 @@ public:
QVector<QRegExp> nameRegExps;
#endif
- QStack<QAbstractFileEngineIterator *> fileEngineIterators;
+ QDirIteratorPrivateIteratorStack fileEngineIterators;
QFileInfo currentFileInfo;
QFileInfo nextFileInfo;
@@ -163,7 +175,6 @@ QDirIteratorPrivate::QDirIteratorPrivate(const QString &path, const QStringList
*/
QDirIteratorPrivate::~QDirIteratorPrivate()
{
- delete engine;
}
/*!
@@ -431,8 +442,6 @@ QDirIterator::QDirIterator(const QString &path, const QStringList &nameFilters,
*/
QDirIterator::~QDirIterator()
{
- qDeleteAll(d->fileEngineIterators);
- delete d;
}
/*!
diff --git a/src/corelib/io/qdiriterator.h b/src/corelib/io/qdiriterator.h
index 3117bf9..2639e02 100644
--- a/src/corelib/io/qdiriterator.h
+++ b/src/corelib/io/qdiriterator.h
@@ -84,7 +84,7 @@ public:
private:
Q_DISABLE_COPY(QDirIterator)
- QDirIteratorPrivate *d;
+ QScopedPointer<QDirIteratorPrivate> d;
friend class QDir;
};
diff --git a/src/corelib/plugin/qfactoryloader.cpp b/src/corelib/plugin/qfactoryloader.cpp
index 3b44b47..2e852f7 100644
--- a/src/corelib/plugin/qfactoryloader.cpp
+++ b/src/corelib/plugin/qfactoryloader.cpp
@@ -64,6 +64,7 @@ class QFactoryLoaderPrivate : public QObjectPrivate
Q_DECLARE_PUBLIC(QFactoryLoader)
public:
QFactoryLoaderPrivate(){}
+ ~QFactoryLoaderPrivate();
mutable QMutex mutex;
QByteArray iid;
QList<QLibraryPrivate*> libraryList;
@@ -76,6 +77,12 @@ public:
void unloadPath(const QString &path);
};
+QFactoryLoaderPrivate::~QFactoryLoaderPrivate()
+{
+ for (int i = 0; i < libraryList.count(); ++i)
+ libraryList.at(i)->release();
+}
+
QFactoryLoader::QFactoryLoader(const char *iid,
const QString &suffix,
Qt::CaseSensitivity cs)
@@ -89,8 +96,8 @@ QFactoryLoader::QFactoryLoader(const char *iid,
QMutexLocker locker(qt_factoryloader_mutex());
- qt_factory_loaders()->append(this);
update();
+ qt_factory_loaders()->append(this);
}
@@ -197,10 +204,6 @@ void QFactoryLoader::update()
QFactoryLoader::~QFactoryLoader()
{
- Q_D(QFactoryLoader);
- for (int i = 0; i < d->libraryList.count(); ++i)
- d->libraryList.at(i)->release();
-
QMutexLocker locker(qt_factoryloader_mutex());
qt_factory_loaders()->removeAll(this);
}
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index 74fbe0a..d43b376 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -1842,7 +1842,8 @@ QTime QTime::currentTime()
#else
t = localtime(&ltime);
#endif
-
+ Q_CHECK_PTR(t);
+
ct.mds = MSECS_PER_HOUR * t->tm_hour + MSECS_PER_MIN * t->tm_min + 1000 * t->tm_sec
+ tv.tv_usec / 1000;
#else
diff --git a/src/corelib/tools/qscopedpointer.cpp b/src/corelib/tools/qscopedpointer.cpp
index 06f9e6f..5b8991e 100644
--- a/src/corelib/tools/qscopedpointer.cpp
+++ b/src/corelib/tools/qscopedpointer.cpp
@@ -207,4 +207,12 @@ QT_BEGIN_NAMESPACE
Callers of this function take ownership of the pointer.
*/
+/*! \fn bool QScopedPointer::operator!() const
+
+ Returns \c true if the pointer referenced by this object is \c null, otherwise
+ returns \c false.
+
+ \sa isNull()
+*/
+
QT_END_NAMESPACE
diff --git a/src/corelib/tools/qscopedpointer.h b/src/corelib/tools/qscopedpointer.h
index 923ae1b..344964b 100644
--- a/src/corelib/tools/qscopedpointer.h
+++ b/src/corelib/tools/qscopedpointer.h
@@ -113,16 +113,21 @@ public:
return d;
}
- inline bool operator==(const QScopedPointer<T> &other) const
+ inline bool operator==(const QScopedPointer<T, Cleanup> &other) const
{
return d == other.d;
}
- inline bool operator!=(const QScopedPointer<T> &other) const
+ inline bool operator!=(const QScopedPointer<T, Cleanup> &other) const
{
return d != other.d;
}
+ inline bool operator!() const
+ {
+ return !d;
+ }
+
#if defined(Q_CC_NOKIAX86) || defined(Q_QDOC)
inline operator bool() const
{
@@ -189,6 +194,16 @@ public:
return this->d[i];
}
+ inline bool operator==(const QScopedArrayPointer<T, Cleanup> &other) const
+ {
+ return this->d == other.d;
+ }
+
+ inline bool operator!=(const QScopedArrayPointer<T, Cleanup> &other) const
+ {
+ return this->d != other.d;
+ }
+
private:
Q_DISABLE_COPY(QScopedArrayPointer)
};
@@ -209,6 +224,16 @@ public:
return this->d;
}
+ inline bool operator==(const QCustomScopedPointer<T, Cleanup> &other) const
+ {
+ return this->d == other.d;
+ }
+
+ inline bool operator!=(const QCustomScopedPointer<T, Cleanup> &other) const
+ {
+ return this->d != other.d;
+ }
+
private:
Q_DISABLE_COPY(QCustomScopedPointer)
};
@@ -253,6 +278,16 @@ public:
QScopedPointerSharedDeleter<T>::cleanup(oldD);
}
+ inline bool operator==(const QScopedSharedPointer<T> &other) const
+ {
+ return this->d == other.d;
+ }
+
+ inline bool operator!=(const QScopedSharedPointer<T> &other) const
+ {
+ return this->d != other.d;
+ }
+
private:
Q_DISABLE_COPY(QScopedSharedPointer)
};
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 52f333b..1e7708c 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -577,7 +577,7 @@
#include <QtGui/qpixmapcache.h>
#include <QtGui/qstyleoption.h>
#include <QtGui/qevent.h>
-#include <QInputContext>
+#include <QtGui/qinputcontext.h>
#include <private/qgraphicsitem_p.h>
#include <private/qgraphicswidget_p.h>
@@ -8995,7 +8995,42 @@ bool QGraphicsTextItem::sceneEvent(QEvent *event)
return true;
}
}
- return QGraphicsItem::sceneEvent(event);
+ bool result = QGraphicsItem::sceneEvent(event);
+
+ // Ensure input context is updated.
+ switch (event->type()) {
+ case QEvent::ContextMenu:
+ case QEvent::FocusIn:
+ case QEvent::FocusOut:
+ case QEvent::GraphicsSceneDragEnter:
+ case QEvent::GraphicsSceneDragLeave:
+ case QEvent::GraphicsSceneDragMove:
+ case QEvent::GraphicsSceneDrop:
+ case QEvent::GraphicsSceneHoverEnter:
+ case QEvent::GraphicsSceneHoverLeave:
+ case QEvent::GraphicsSceneHoverMove:
+ case QEvent::GraphicsSceneMouseDoubleClick:
+ case QEvent::GraphicsSceneMousePress:
+ case QEvent::GraphicsSceneMouseMove:
+ case QEvent::GraphicsSceneMouseRelease:
+ case QEvent::KeyPress:
+ case QEvent::KeyRelease:
+ // Reset the focus widget's input context, regardless
+ // of how this item gained or lost focus.
+ if (QWidget *fw = qApp->focusWidget()) {
+ if (QInputContext *qic = fw->inputContext()) {
+ if (event->type() == QEvent::FocusIn || event->type() == QEvent::FocusOut)
+ qic->reset();
+ else
+ qic->update();
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ return result;
}
/*!
@@ -9021,11 +9056,6 @@ void QGraphicsTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
}
dd->sendControlEvent(event);
- Q_ASSERT(event->widget());
- QInputContext *qic = event->widget()->inputContext();
- if(qic) {
- qic->update();
- }
}
/*!
@@ -9039,11 +9069,6 @@ void QGraphicsTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
}
dd->sendControlEvent(event);
- Q_ASSERT(event->widget());
- QInputContext *qic = event->widget()->inputContext();
- if(qic) {
- qic->update();
- }
}
/*!
@@ -9072,14 +9097,7 @@ void QGraphicsTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
QGraphicsItem::mouseReleaseEvent(event);
}
dd->clickCausedFocus = 0;
-
dd->sendControlEvent(event);
-
- Q_ASSERT(event->widget());
- QInputContext *qic = event->widget()->inputContext();
- if(qic) {
- qic->update();
- }
}
/*!
@@ -9098,11 +9116,6 @@ void QGraphicsTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
}
dd->sendControlEvent(event);
- Q_ASSERT(event->widget());
- QInputContext *qic = event->widget()->inputContext();
- if(qic) {
- qic->update();
- }
}
/*!
@@ -9111,11 +9124,6 @@ void QGraphicsTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
void QGraphicsTextItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
dd->sendControlEvent(event);
- Q_ASSERT(event->widget());
- QInputContext *qic = event->widget()->inputContext();
- if(qic) {
- qic->update();
- }
}
/*!
@@ -9124,18 +9132,6 @@ void QGraphicsTextItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
void QGraphicsTextItem::keyPressEvent(QKeyEvent *event)
{
dd->sendControlEvent(event);
- QList<QGraphicsView *> views = scene()->views();
- for (int i = 0; i < views.size(); ++i) {
- QGraphicsView *view = views.at(i);
- Q_ASSERT(view->viewport());
- if(view->viewport()->hasFocus()) {
- QInputContext *qic = view->viewport()->inputContext();
- if(qic){
- qic->update();
- }
- break;
- }
- }
}
/*!
@@ -9144,18 +9140,6 @@ void QGraphicsTextItem::keyPressEvent(QKeyEvent *event)
void QGraphicsTextItem::keyReleaseEvent(QKeyEvent *event)
{
dd->sendControlEvent(event);
- QList<QGraphicsView *> views = scene()->views();
- for (int i = 0; i < views.size(); ++i) {
- QGraphicsView *view = views.at(i);
- Q_ASSERT(view->viewport());
- if(view->viewport()->hasFocus()) {
- QInputContext *qic = view->viewport()->inputContext();
- if(qic){
- qic->update();
- }
- break;
- }
- }
}
/*!
@@ -9168,18 +9152,6 @@ void QGraphicsTextItem::focusInEvent(QFocusEvent *event)
dd->clickCausedFocus = 1;
}
update();
- QList<QGraphicsView *> views = scene()->views();
- for (int i = 0; i < views.size(); ++i) {
- QGraphicsView *view = views.at(i);
- Q_ASSERT(view->viewport());
- if(view->viewport()->hasFocus()) {
- QInputContext *qic = view->viewport()->inputContext();
- if(qic){
- qic->reset();
- }
- break;
- }
- }
}
/*!
@@ -9189,18 +9161,6 @@ void QGraphicsTextItem::focusOutEvent(QFocusEvent *event)
{
dd->sendControlEvent(event);
update();
- QList<QGraphicsView *> views = scene()->views();
- for (int i = 0; i < views.size(); ++i) {
- QGraphicsView *view = views.at(i);
- Q_ASSERT(view->viewport());
- if(view->viewport()->hasFocus()) {
- QInputContext *qic = view->viewport()->inputContext();
- if(qic){
- qic->reset();
- }
- break;
- }
- }
}
/*!
@@ -9209,11 +9169,6 @@ void QGraphicsTextItem::focusOutEvent(QFocusEvent *event)
void QGraphicsTextItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
dd->sendControlEvent(event);
- Q_ASSERT(event->widget());
- QInputContext *qic = event->widget()->inputContext();
- if(qic) {
- qic->update();
- }
}
/*!
@@ -9222,11 +9177,6 @@ void QGraphicsTextItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
void QGraphicsTextItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
{
dd->sendControlEvent(event);
- Q_ASSERT(event->widget());
- QInputContext *qic = event->widget()->inputContext();
- if(qic) {
- qic->update();
- }
}
/*!
@@ -9235,11 +9185,6 @@ void QGraphicsTextItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
void QGraphicsTextItem::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
{
dd->sendControlEvent(event);
- Q_ASSERT(event->widget());
- QInputContext *qic = event->widget()->inputContext();
- if(qic) {
- qic->update();
- }
}
/*!
@@ -9248,11 +9193,6 @@ void QGraphicsTextItem::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
void QGraphicsTextItem::dropEvent(QGraphicsSceneDragDropEvent *event)
{
dd->sendControlEvent(event);
- Q_ASSERT(event->widget());
- QInputContext *qic = event->widget()->inputContext();
- if(qic) {
- qic->update();
- }
}
/*!
@@ -9269,11 +9209,6 @@ void QGraphicsTextItem::inputMethodEvent(QInputMethodEvent *event)
void QGraphicsTextItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
{
dd->sendControlEvent(event);
- Q_ASSERT(event->widget());
- QInputContext *qic = event->widget()->inputContext();
- if(qic) {
- qic->update();
- }
}
/*!
@@ -9282,11 +9217,6 @@ void QGraphicsTextItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
void QGraphicsTextItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
dd->sendControlEvent(event);
- Q_ASSERT(event->widget());
- QInputContext *qic = event->widget()->inputContext();
- if(qic) {
- qic->update();
- }
}
/*!
@@ -9295,11 +9225,6 @@ void QGraphicsTextItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
void QGraphicsTextItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
dd->sendControlEvent(event);
- Q_ASSERT(event->widget());
- QInputContext *qic = event->widget()->inputContext();
- if(qic) {
- qic->update();
- }
}
/*!
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 5d8bce5..0af1070 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -1007,10 +1007,10 @@ QList<QGraphicsItem *> QGraphicsViewPrivate::findItems(const QRegion &exposedReg
void QGraphicsViewPrivate::updateInputMethodSensitivity()
{
Q_Q(QGraphicsView);
- q->setAttribute(
- Qt::WA_InputMethodEnabled,
- scene && scene->focusItem()
- && scene->focusItem()->flags() & QGraphicsItem::ItemAcceptsInputMethod);
+ bool enabled = scene && scene->focusItem()
+ && (scene->focusItem()->flags() & QGraphicsItem::ItemAcceptsInputMethod);
+ q->setAttribute(Qt::WA_InputMethodEnabled, enabled);
+ q->viewport()->setAttribute(Qt::WA_InputMethodEnabled, enabled);
}
/*!
@@ -1022,16 +1022,8 @@ QGraphicsView::QGraphicsView(QWidget *parent)
setViewport(0);
setAcceptDrops(true);
setBackgroundRole(QPalette::Base);
-
- // ### Ideally this would be enabled/disabled depending on whether any
- // widgets in the current scene enabled input methods. We could do that
- // using a simple reference count. The same goes for acceptDrops and mouse
- // tracking.
+ // Investigate leaving these disabled by default.
setAttribute(Qt::WA_InputMethodEnabled);
-
- // viewport part of the graphics view has to be enabled
- // as well, because when events come this widget is asked
- // for input context and so on
viewport()->setAttribute(Qt::WA_InputMethodEnabled);
}
@@ -1046,11 +1038,8 @@ QGraphicsView::QGraphicsView(QGraphicsScene *scene, QWidget *parent)
setViewport(0);
setAcceptDrops(true);
setBackgroundRole(QPalette::Base);
+ // Investigate leaving these disabled by default.
setAttribute(Qt::WA_InputMethodEnabled);
-
- // viewport part of the graphics view has to be enabled
- // as well, because when events come this widget is asked
- // for input context and so on
viewport()->setAttribute(Qt::WA_InputMethodEnabled);
}
@@ -1063,11 +1052,8 @@ QGraphicsView::QGraphicsView(QGraphicsViewPrivate &dd, QWidget *parent)
setViewport(0);
setAcceptDrops(true);
setBackgroundRole(QPalette::Base);
+ // Investigate leaving these disabled by default.
setAttribute(Qt::WA_InputMethodEnabled);
-
- // viewport part of the graphics view has to be enabled
- // as well, because when events come this widget is asked
- // for input context and so on
viewport()->setAttribute(Qt::WA_InputMethodEnabled);
}
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 54bd44f..d2183d2 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -352,8 +352,13 @@ void QSymbianControl::HandleLongTapEventL( const TPoint& aPenEventLocation, cons
void QSymbianControl::HandlePointerEventL(const TPointerEvent& pEvent)
{
- //### refactor me, getting too complex
m_longTapDetector->PointerEventL(pEvent);
+ QT_TRYCATCH_LEAVING(HandlePointerEvent(pEvent));
+}
+
+void QSymbianControl::HandlePointerEvent(const TPointerEvent& pEvent)
+{
+ //### refactor me, getting too complex
QMouseEvent::Type type;
Qt::MouseButton button;
mapS60MouseEventTypeToQt(&type, &button, &pEvent);
diff --git a/src/gui/kernel/qdesktopwidget_s60.cpp b/src/gui/kernel/qdesktopwidget_s60.cpp
index 226a759..5734ddd 100644
--- a/src/gui/kernel/qdesktopwidget_s60.cpp
+++ b/src/gui/kernel/qdesktopwidget_s60.cpp
@@ -126,7 +126,6 @@ QDesktopWidget::QDesktopWidget()
QDesktopWidget::~QDesktopWidget()
{
- QDesktopWidgetPrivate::cleanup();
}
bool QDesktopWidget::isVirtualDesktop() const
diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h
index a54eeb8..1ac6a8e 100644
--- a/src/gui/kernel/qt_s60_p.h
+++ b/src/gui/kernel/qt_s60_p.h
@@ -150,6 +150,7 @@ protected:
void FocusChanged(TDrawNow aDrawNow);
private:
+ void HandlePointerEvent(const TPointerEvent& aPointerEvent);
TKeyResponse OfferKeyEvent(const TKeyEvent& aKeyEvent,TEventCode aType);
TKeyResponse sendKeyEvent(QWidget *widget, QKeyEvent *keyEvent);
void sendMouseEvent(QWidget *widget, QMouseEvent *mEvent);
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp
index 4f3a396..a21c0e7 100644
--- a/src/gui/kernel/qwidget_s60.cpp
+++ b/src/gui/kernel/qwidget_s60.cpp
@@ -323,7 +323,7 @@ void QWidgetPrivate::create_sys(WId window, bool /* initializeWindow */, bool de
} else {
stackingFlags = ECoeStackFlagStandard;
}
- control->ControlEnv()->AppUi()->AddToStackL(control, ECoeStackPriorityDefault, stackingFlags);
+ QT_TRAP_THROWING(control->ControlEnv()->AppUi()->AddToStackL(control, ECoeStackPriorityDefault, stackingFlags));
QTLWExtra *topExtra = topData();
topExtra->rwindow = control->DrawableWindow();
@@ -356,7 +356,7 @@ void QWidgetPrivate::create_sys(WId window, bool /* initializeWindow */, bool de
} else {
stackingFlags = ECoeStackFlagStandard;
}
- control->ControlEnv()->AppUi()->AddToStackL(control, ECoeStackPriorityDefault, stackingFlags);
+ QT_TRAP_THROWING(control->ControlEnv()->AppUi()->AddToStackL(control, ECoeStackPriorityDefault, stackingFlags));
WId parentw = parentWidget->effectiveWinId();
QT_TRAP_THROWING(control->SetContainerWindowL(*parentw));
@@ -763,10 +763,11 @@ void QWidgetPrivate::setWindowTitle_sys(const QString &caption)
Q_ASSERT(q->testAttribute(Qt::WA_WState_Created));
CAknTitlePane* titlePane = S60->titlePane();
if(titlePane) {
- if(caption.isEmpty())
- titlePane->SetTextToDefaultL();
- else
+ if(caption.isEmpty()) {
+ QT_TRAP_THROWING(titlePane->SetTextToDefaultL());
+ } else {
QT_TRAP_THROWING(titlePane->SetTextL(qt_QString2TPtrC(caption)));
+ }
}
}
#else
diff --git a/src/gui/painting/qwindowsurface_s60.cpp b/src/gui/painting/qwindowsurface_s60.cpp
index ef69c68..d13dc87 100644
--- a/src/gui/painting/qwindowsurface_s60.cpp
+++ b/src/gui/painting/qwindowsurface_s60.cpp
@@ -85,8 +85,8 @@ QS60WindowSurface::QS60WindowSurface(QWidget* widget)
QS60WindowSurface::~QS60WindowSurface()
{
- // Ensure that locking and unlocking of this surface were symmetrical
- Q_ASSERT(QS60WindowSurfacePrivate::lockedSurface != this);
+ if (QS60WindowSurfacePrivate::lockedSurface == this)
+ unlockBitmapHeap();
delete d_ptr->bitmap;
delete d_ptr;
@@ -97,7 +97,9 @@ void QS60WindowSurface::beginPaint(const QRegion &rgn)
if(!d_ptr->bitmap)
return;
- Q_ASSERT(!QS60WindowSurfacePrivate::lockedSurface);
+ if (QS60WindowSurfacePrivate::lockedSurface)
+ unlockBitmapHeap();
+
QS60WindowSurfacePrivate::lockedSurface = this;
lockBitmapHeap();