diff --git a/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp b/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp diff --git a/src/3rdparty/phonon/mmf/videooutput_dsa.cpp b/src/3rdparty/phonon/mmf/videooutput_dsa.cpp diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index 61beb4f..99ba292 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -80,6 +80,8 @@ #include #include +#include + QT_BEGIN_NAMESPACE #if defined(QT_DEBUG) @@ -338,10 +340,13 @@ QSymbianControl::QSymbianControl(QWidget *w) , m_ignoreFocusChanged(0) , m_symbianPopupIsOpen(0) { + qDebug() << "QSymbianControl::QSymbianControl" << this << "widget" << w; } void QSymbianControl::ConstructL(bool isWindowOwning, bool desktop) { + qDebug() << "QSymbianControl::ConstructL" << this << isWindowOwning << desktop; + if (!desktop) { if (isWindowOwning or !qwidget->parentWidget()) @@ -370,6 +375,8 @@ void QSymbianControl::ConstructL(bool isWindowOwning, bool desktop) QSymbianControl::~QSymbianControl() { + qDebug() << "QSymbianControl::~QSymbianControl" << this; + if (S60->curWin == this) S60->curWin = 0; if (!QApplicationPrivate::is_app_closing) { @@ -385,6 +392,7 @@ QSymbianControl::~QSymbianControl() void QSymbianControl::setWidget(QWidget *w) { + qDebug() << "QSymbianControl::setWidget" << this << "w" << w; qwidget = w; } void QSymbianControl::HandleLongTapEventL( const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation ) @@ -816,6 +824,8 @@ TCoeInputCapabilities QSymbianControl::InputCapabilities() const void QSymbianControl::Draw(const TRect& controlRect) const { + qDebug() << "+QSymbianControl::Draw" << this << qt_TRect2QRect(controlRect); + // Set flag to avoid calling DrawNow in window surface QWidget *window = qwidget->window(); Q_ASSERT(window); @@ -824,7 +834,9 @@ void QSymbianControl::Draw(const TRect& controlRect) const if (!topExtra->inExpose) { topExtra->inExpose = true; QRect exposeRect = qt_TRect2QRect(controlRect); + qDebug() << "QSymbianControl::Draw" << this << "+syncBackingStore"; qwidget->d_func()->syncBackingStore(exposeRect); + qDebug() << "QSymbianControl::Draw" << this << "-syncBackingStore"; topExtra->inExpose = false; } @@ -890,6 +902,8 @@ void QSymbianControl::Draw(const TRect& controlRect) const // endNativePaintEvent implementation. QMetaObject::invokeMethod(qwidget, "endNativePaintEvent", Qt::QueuedConnection, Q_ARG(QRect, r)); } + + qDebug() << "-QSymbianControl::Draw" << this << qt_TRect2QRect(controlRect); } void QSymbianControl::SizeChanged() @@ -899,6 +913,8 @@ void QSymbianControl::SizeChanged() QSize oldSize = qwidget->size(); QSize newSize(Size().iWidth, Size().iHeight); + qDebug() << "QSymbianControl::SizeChanged" << this << oldSize << " -> " << newSize; + if (oldSize != newSize) { QRect cr = qwidget->geometry(); cr.setSize(newSize); @@ -930,6 +946,8 @@ void QSymbianControl::PositionChanged() QPoint oldPos = qwidget->geometry().topLeft(); QPoint newPos(Position().iX, Position().iY); + qDebug() << "QSymbianControl::PositionChanged" << this << oldPos << " -> " << newPos; + if (oldPos != newPos) { QRect cr = qwidget->geometry(); cr.moveTopLeft(newPos); @@ -949,6 +967,8 @@ void QSymbianControl::PositionChanged() void QSymbianControl::FocusChanged(TDrawNow /* aDrawNow */) { + qDebug() << "QSymbianControl::FocusChanged" << this << IsFocused() << IsVisible(); + if (m_ignoreFocusChanged || (qwidget->windowType() & Qt::WindowType_Mask) == Qt::Desktop) return; @@ -1689,6 +1709,7 @@ int QApplicationPrivate::symbianProcessWsEvent(const QSymbianEvent *symbianEvent return 1; const TWsVisibilityChangedEvent *visChangedEvent = event->VisibilityChanged(); QWidget *w = QWidgetPrivate::mapper->value(control); + qDebug() << "QApplicationPrivate::symbianProcessWsEvent" << "w" << w << "flags" << visChangedEvent->iFlags; if (!w->d_func()->maybeTopData()) break; if (visChangedEvent->iFlags & TWsVisibilityChangedEvent::ENotVisible) { diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index e180001..db12c70 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -1676,32 +1676,42 @@ bool QWidgetPrivate::isOverlapped(const QRect &rect) const void QWidgetPrivate::syncBackingStore() { + Q_Q(QWidget); if (paintOnScreen()) { repaint_sys(dirty); dirty = QRegion(); - } else if (QWidgetBackingStore *bs = maybeBackingStore()) { + } else { + QWidgetBackingStore *bs = maybeBackingStore(); + qDebug() << "QWidgetPrivate::syncBackingStore" << q << "bs" << bs; + if (bs) { #ifdef QT_MAC_USE_COCOA - Q_UNUSED(bs); - void qt_mac_set_needs_display(QWidget *, QRegion); - qt_mac_set_needs_display(q_func(), QRegion()); + Q_UNUSED(bs); + void qt_mac_set_needs_display(QWidget *, QRegion); + qt_mac_set_needs_display(q_func(), QRegion()); #else - bs->sync(); + bs->sync(); #endif + } } } void QWidgetPrivate::syncBackingStore(const QRegion ®ion) { + Q_Q(QWidget); if (paintOnScreen()) repaint_sys(region); - else if (QWidgetBackingStore *bs = maybeBackingStore()) { -#ifdef QT_MAC_USE_COCOA - Q_UNUSED(bs); - void qt_mac_set_needs_display(QWidget *, QRegion); - qt_mac_set_needs_display(q_func(), region); -#else - bs->sync(q_func(), region); -#endif + else { + QWidgetBackingStore *bs = maybeBackingStore(); + qDebug() << "QWidgetPrivate::syncBackingStore(QRegion)" << q << "bs" << bs; + if (bs) { + #ifdef QT_MAC_USE_COCOA + Q_UNUSED(bs); + void qt_mac_set_needs_display(QWidget *, QRegion); + qt_mac_set_needs_display(q_func(), region); + #else + bs->sync(q_func(), region); + #endif + } } } diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h index 555647c..591373c 100644 --- a/src/gui/kernel/qwidget_p.h +++ b/src/gui/kernel/qwidget_p.h @@ -68,6 +68,8 @@ #include "QtGui/qgraphicsview.h" #include +#include + #ifdef Q_WS_WIN #include "QtCore/qt_windows.h" #include @@ -906,8 +908,11 @@ inline void QWidgetPrivate::setSharedPainter(QPainter *painter) inline QWidgetBackingStore *QWidgetPrivate::maybeBackingStore() const { Q_Q(const QWidget); - QTLWExtra *x = q->window()->d_func()->maybeTopData(); - return x ? x->backingStore : 0; + const QWidget* window = q->window(); + QTLWExtra *x = window->d_func()->maybeTopData(); + QWidgetBackingStore *bs = x ? x->backingStore : 0; + qDebug() << "QWidgetPrivate::maybeBackingStore" << q << "window" << window << "tlwextra" << x << "backingStore" << bs; + return bs; } QT_END_NAMESPACE diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index bfa7050..c47840d 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -56,6 +56,8 @@ #include #endif +#include + // This is necessary in order to be able to perform delayed invokation on slots // which take arguments of type WId. One example is // QWidgetPrivate::_q_delayedDestroy, which is used to delay destruction of @@ -248,18 +250,22 @@ void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove) hide_sys(); data.crect = QRect(x, y, w, h); data.window_state &= ~Qt::WindowFullScreen; - } else if (q->isVisible() && q->testAttribute(Qt::WA_OutsideWSRange)) { - q->setAttribute(Qt::WA_OutsideWSRange, false); - - // put the window in its place and show it - q->internalWinId()->SetRect(TRect(TPoint(x, y), TSize(w, h))); - data.crect.setRect(x, y, w, h); - show_sys(); } else { - QRect r = QRect(x, y, w, h); - data.crect = r; - q->internalWinId()->SetRect(TRect(TPoint(x, y), TSize(w, h))); - topData()->normalGeometry = data.crect; + const bool wasOutsideWSRange = q->testAttribute(Qt::WA_OutsideWSRange); + if (wasOutsideWSRange) + q->setAttribute(Qt::WA_OutsideWSRange, false); + + if (q->isVisible() && wasOutsideWSRange) { + // put the window in its place and show it + q->internalWinId()->SetRect(TRect(TPoint(x, y), TSize(w, h))); + data.crect.setRect(x, y, w, h); + show_sys(); + } else { + QRect r = QRect(x, y, w, h); + data.crect = r; + q->internalWinId()->SetRect(TRect(TPoint(x, y), TSize(w, h))); + topData()->normalGeometry = data.crect; + } } } else { data.crect.setRect(x, y, w, h); @@ -349,6 +355,9 @@ void QWidgetPrivate::create_sys(WId window, bool /* initializeWindow */, bool de CCoeControl *const destroyw = destroyOldWindow ? data.winid : 0; + qDebug() << "QWidgetPrivate::create_sys" << q << "window" << window << "topLevel" << topLevel + << "parent" << parentWidget << "native" << (q->testAttribute(Qt::WA_NativeWindow) || paintOnScreen()); + createExtra(); if (window) { setWinId(window); @@ -452,6 +461,8 @@ void QWidgetPrivate::create_sys(WId window, bool /* initializeWindow */, bool de } if (destroyw) { + qDebug() << "QWidgetPrivate::create_sys" << q << "destroying" << destroyw; + destroyw->ControlEnv()->AppUi()->RemoveFromStack(destroyw); // Delay deletion of the control in case this function is called in the diff --git a/src/gui/painting/qwindowsurface_s60.cpp b/src/gui/painting/qwindowsurface_s60.cpp index d05c7e4..7a3373e 100644 --- a/src/gui/painting/qwindowsurface_s60.cpp +++ b/src/gui/painting/qwindowsurface_s60.cpp @@ -48,6 +48,8 @@ #include "qt_s60_p.h" #include "private/qdrawhelper_p.h" +#include + QT_BEGIN_NAMESPACE struct QS60WindowSurfacePrivate @@ -136,6 +138,8 @@ QImage* QS60WindowSurface::buffer(const QWidget *widget) void QS60WindowSurface::flush(QWidget *widget, const QRegion ®ion, const QPoint &) { + qDebug() << "+QS60WindowSurface::flush" << this << "widget" << widget; + QWidget *window = widget->window(); Q_ASSERT(window); QTLWExtra *topExtra = window->d_func()->maybeTopData(); @@ -144,16 +148,23 @@ void QS60WindowSurface::flush(QWidget *widget, const QRegion ®ion, const QPoi if (!topExtra->inExpose) { topExtra->inExpose = true; // Prevent DrawNow() from calling syncBackingStore() again TRect tr = qt_QRect2TRect(qr); + qDebug() << "QS60WindowSurface::flush" << this << "+DrawNow"; widget->winId()->DrawNow(tr); + qDebug() << "QS60WindowSurface::flush" << this << "-DrawNow"; topExtra->inExpose = false; } else { // This handles the case when syncBackingStore updates content outside of the // original drawing rectangle. This might happen if there are pending update() // events at the same time as we get a Draw() from Symbian. QRect drawRect = qt_TRect2QRect(widget->winId()->DrawableWindow()->GetDrawRect()); - if (!drawRect.contains(qr)) + if (!drawRect.contains(qr)) { + qDebug() << "QS60WindowSurface::flush" << this << "+DrawDeferred"; widget->winId()->DrawDeferred(); + qDebug() << "QS60WindowSurface::flush" << this << "-DrawDeferred"; + } } + + qDebug() << "-QS60WindowSurface::flush" << this << "widget" << widget; } bool QS60WindowSurface::scroll(const QRegion &area, int dx, int dy) diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def index 6a4f07b..2fa9545 100644 --- a/src/s60installs/bwins/QtGuiu.def +++ b/src/s60installs/bwins/QtGuiu.def @@ -11922,7 +11922,7 @@ EXPORTS ?updateCachedClipPathFromSetPosHelper@QGraphicsItemPrivate@@QAEXABVQPointF@@@Z @ 11921 NONAME ABSENT ; void QGraphicsItemPrivate::updateCachedClipPathFromSetPosHelper(class QPointF const &) ?updateCell@QCalendarWidget@@IAEXABVQDate@@@Z @ 11922 NONAME ; void QCalendarWidget::updateCell(class QDate const &) ?updateCells@QCalendarWidget@@IAEXXZ @ 11923 NONAME ; void QCalendarWidget::updateCells(void) - ?updateDisplayText@QLineControl@@AAEXXZ @ 11924 NONAME ; void QLineControl::updateDisplayText(void) + ?updateDisplayText@QLineControl@@AAEXXZ @ 11924 NONAME ABSENT ; void QLineControl::updateDisplayText(void) ?updateEditorData@QAbstractItemView@@MAEXXZ @ 11925 NONAME ; void QAbstractItemView::updateEditorData(void) ?updateEditorGeometries@QAbstractItemView@@MAEXXZ @ 11926 NONAME ; void QAbstractItemView::updateEditorGeometries(void) ?updateEditorGeometry@QAbstractItemDelegate@@UBEXPAVQWidget@@ABVQStyleOptionViewItem@@ABVQModelIndex@@@Z @ 11927 NONAME ; void QAbstractItemDelegate::updateEditorGeometry(class QWidget *, class QStyleOptionViewItem const &, class QModelIndex const &) const diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def index c648d87..89930df 100644 --- a/src/s60installs/eabi/QtCoreu.def +++ b/src/s60installs/eabi/QtCoreu.def @@ -3652,4 +3652,5 @@ EXPORTS _Z40QBasicAtomicPointer_fetchAndStoreAcquirePVPvS_ @ 3651 NONAME _Z40QBasicAtomicPointer_fetchAndStoreRelaxedPVPvS_ @ 3652 NONAME _Z40QBasicAtomicPointer_fetchAndStoreReleasePVPvS_ @ 3653 NONAME + _ZN20QStateMachinePrivate12clearHistoryEv @ 3654 NONAME diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def index a3fc452..2a9b8ee 100644 --- a/src/s60installs/eabi/QtGuiu.def +++ b/src/s60installs/eabi/QtGuiu.def @@ -1818,7 +1818,7 @@ EXPORTS _ZN12QLineControl17_q_deleteSelectedEv @ 1817 NONAME _ZN12QLineControl17processMouseEventEP11QMouseEvent @ 1818 NONAME _ZN12QLineControl17resetInputContextEv @ 1819 NONAME - _ZN12QLineControl17updateDisplayTextEv @ 1820 NONAME + _ZN12QLineControl17updateDisplayTextEv @ 1820 NONAME ABSENT _ZN12QLineControl18displayTextChangedERK7QString @ 1821 NONAME _ZN12QLineControl18removeSelectedTextEv @ 1822 NONAME _ZN12QLineControl19_q_clipboardChangedEv @ 1823 NONAME @@ -11806,4 +11806,24 @@ EXPORTS _ZN9QS60Style10timerEventEP11QTimerEvent @ 11805 NONAME _ZN9QS60Style11eventFilterEP7QObjectP6QEvent @ 11806 NONAME _ZN13QFontDatabase25removeAllApplicationFontsEv @ 11807 NONAME + _ZN11QFontEngine16getGlyphBearingsEjPfS0_ @ 11808 NONAME + _ZN12QLineControl17updateDisplayTextEb @ 11809 NONAME + _ZN14QWidgetPrivate11inTabWidgetEP7QWidget @ 11810 NONAME + _ZN14QWidgetPrivate17canKeypadNavigateEN2Qt11OrientationE @ 11811 NONAME + _ZN15QGraphicsObject12widthChangedEv @ 11812 NONAME ABSENT + _ZN15QGraphicsObject13heightChangedEv @ 11813 NONAME ABSENT + _ZN15QGraphicsObject15childrenChangedEv @ 11814 NONAME ABSENT + _ZN15QGraphicsWidget15geometryChangedEv @ 11815 NONAME ABSENT + _ZN20QGraphicsItemPrivate10resetWidthEv @ 11816 NONAME ABSENT + _ZN20QGraphicsItemPrivate11resetHeightEv @ 11817 NONAME ABSENT + _ZN20QGraphicsItemPrivate12childrenListEv @ 11818 NONAME ABSENT + _ZN20QGraphicsItemPrivate14setFocusHelperEN2Qt11FocusReasonEbb @ 11819 NONAME + _ZN20QGraphicsItemPrivate16clearFocusHelperEb @ 11820 NONAME + _ZN20QGraphicsItemPrivate6appendEP24QDeclarativeListPropertyI15QGraphicsObjectEPS1_ @ 11821 NONAME ABSENT + _ZN20QGraphicsItemPrivate8setWidthEf @ 11822 NONAME ABSENT + _ZN20QGraphicsItemPrivate9setHeightEf @ 11823 NONAME ABSENT + _ZN24QImagePixmapCleanupHooks13isImageCachedERK6QImage @ 11824 NONAME + _ZN24QImagePixmapCleanupHooks14isPixmapCachedERK7QPixmap @ 11825 NONAME + _ZNK20QGraphicsItemPrivate5widthEv @ 11826 NONAME ABSENT + _ZNK20QGraphicsItemPrivate6heightEv @ 11827 NONAME ABSENT