diff options
author | aavit <qt-info@nokia.com> | 2011-11-02 08:25:56 (GMT) |
---|---|---|
committer | aavit <qt-info@nokia.com> | 2011-11-02 08:25:56 (GMT) |
commit | 582dec4b753b84cc69eb140290ceff346bce76b9 (patch) | |
tree | 5655a148070fd4aa1fb4728b404d31f72f9e02be /src/gui | |
parent | 257824bc7b2416e0b66d98423e25525da9141d1f (diff) | |
parent | 621431fe5128c6d61095dc6cf92d8b34c4c4284b (diff) | |
download | Qt-582dec4b753b84cc69eb140290ceff346bce76b9.zip Qt-582dec4b753b84cc69eb140290ceff346bce76b9.tar.gz Qt-582dec4b753b84cc69eb140290ceff346bce76b9.tar.bz2 |
Merge remote-tracking branch 'qt-mainline/4.8'
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/dialogs/dialogs.pri | 6 | ||||
-rw-r--r-- | src/gui/inputmethod/qcoefepinputcontext_p.h | 1 | ||||
-rw-r--r-- | src/gui/inputmethod/qcoefepinputcontext_s60.cpp | 37 | ||||
-rw-r--r-- | src/gui/kernel/qapplication.cpp | 28 | ||||
-rw-r--r-- | src/gui/kernel/qapplication.h | 4 | ||||
-rw-r--r-- | src/gui/kernel/qapplication_p.h | 3 | ||||
-rw-r--r-- | src/gui/kernel/qapplication_s60.cpp | 180 | ||||
-rw-r--r-- | src/gui/kernel/qt_s60_p.h | 19 | ||||
-rw-r--r-- | src/gui/kernel/qwidget_s60.cpp | 6 | ||||
-rw-r--r-- | src/gui/painting/qgraphicssystemex_symbian.cpp | 6 | ||||
-rw-r--r-- | src/gui/painting/qpainter.cpp | 22 | ||||
-rw-r--r-- | src/gui/styles/qs60style_p.h | 4 | ||||
-rw-r--r-- | src/gui/styles/qs60style_s60.cpp | 10 | ||||
-rw-r--r-- | src/gui/styles/styles.pri | 6 | ||||
-rw-r--r-- | src/gui/util/util.pri | 6 | ||||
-rw-r--r-- | src/gui/widgets/qlabel.cpp | 2 |
16 files changed, 258 insertions, 82 deletions
diff --git a/src/gui/dialogs/dialogs.pri b/src/gui/dialogs/dialogs.pri index 1dddb44..fc1ea9e 100644 --- a/src/gui/dialogs/dialogs.pri +++ b/src/gui/dialogs/dialogs.pri @@ -109,11 +109,7 @@ SOURCES += \ dialogs/qprintpreviewdialog.cpp symbian:contains(QT_CONFIG, s60) { - contains(CONFIG, is_using_gnupoc) { - LIBS += -lcommondialogs - } else { - LIBS += -lCommonDialogs - } + LIBS += -lcommondialogs SOURCES += dialogs/qfiledialog_symbian.cpp \ dialogs/qcolordialog_symbian.cpp } diff --git a/src/gui/inputmethod/qcoefepinputcontext_p.h b/src/gui/inputmethod/qcoefepinputcontext_p.h index ad51b4b..90d47f9 100644 --- a/src/gui/inputmethod/qcoefepinputcontext_p.h +++ b/src/gui/inputmethod/qcoefepinputcontext_p.h @@ -205,6 +205,7 @@ private: QBasicTimer m_tempPreeditStringTimeout; bool m_hasTempPreeditString; QString m_cachedPreeditString; + int m_cachedCursorAndAnchorPosition; int m_splitViewResizeBy; Qt::WindowStates m_splitViewPreviousWindowStates; diff --git a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp index 8f13c53..ed7411f 100644 --- a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp +++ b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp @@ -380,6 +380,7 @@ QCoeFepInputContext::QCoeFepInputContext(QObject *parent) m_formatRetriever(0), m_pointerHandler(0), m_hasTempPreeditString(false), + m_cachedCursorAndAnchorPosition(-1), m_splitViewResizeBy(0), m_splitViewPreviousWindowStates(Qt::WindowNoState), m_splitViewPreviousFocusItem(0), @@ -448,9 +449,18 @@ void QCoeFepInputContext::reset() } // Store a copy of preedit text, if prediction is active and input context is reseted. // This is to ensure that we can replace preedit string after losing focus to FEP manager's - // internal sub-windows. - if (m_cachedPreeditString.isEmpty() && !(currentHints & Qt::ImhNoPredictiveText)) + // internal sub-windows. Additionally, store the cursor position if there is no selected text. + // This allows input context to replace preedit strings if they are not at the end of current + // text. + if (m_cachedPreeditString.isEmpty() && !(currentHints & Qt::ImhNoPredictiveText)) { m_cachedPreeditString = m_preeditString; + if (focusWidget() && !m_cachedPreeditString.isEmpty()) { + int cursor = focusWidget()->inputMethodQuery(Qt::ImCursorPosition).toInt(); + int anchor = focusWidget()->inputMethodQuery(Qt::ImAnchorPosition).toInt(); + if (cursor == anchor) + m_cachedCursorAndAnchorPosition = cursor; + } + } commitCurrentString(true); // QGraphicsScene calls reset() when changing focus item. Unfortunately, the new focus item is @@ -491,6 +501,7 @@ void QCoeFepInputContext::setFocusWidget(QWidget *w) void QCoeFepInputContext::widgetDestroyed(QWidget *w) { m_cachedPreeditString.clear(); + m_cachedCursorAndAnchorPosition = -1; // Make sure that the input capabilities of whatever new widget got focused are queried. CCoeControl *ctrl = w->effectiveWinId(); @@ -1350,6 +1361,7 @@ void QCoeFepInputContext::StartFepInlineEditL(const TDesC& aInitialInlineText, return; m_cachedPreeditString.clear(); + m_cachedCursorAndAnchorPosition = -1; commitTemporaryPreeditString(); @@ -1408,8 +1420,16 @@ void QCoeFepInputContext::UpdateFepInlineTextL(const TDesC& aNewInlineText, QString newPreeditString = qt_TDesC2QString(aNewInlineText); QInputMethodEvent event(newPreeditString, attributes); if (!m_cachedPreeditString.isEmpty()) { - event.setCommitString(QLatin1String(""), -m_cachedPreeditString.length(), m_cachedPreeditString.length()); + int cursorPos = w->inputMethodQuery(Qt::ImCursorPosition).toInt(); + // Predicted word is either replaced from the end of the word (normal case), + // or from stored location, if the predicted word is either in the beginning of, + // or in the middle of already committed word. + int diff = cursorPos - m_cachedCursorAndAnchorPosition; + int replaceLocation = (diff != m_cachedPreeditString.length()) ? diff : m_cachedPreeditString.length(); + + event.setCommitString(QLatin1String(""), -replaceLocation, m_cachedPreeditString.length()); m_cachedPreeditString.clear(); + m_cachedCursorAndAnchorPosition = -1; } else if (newPreeditString.isEmpty() && m_preeditString.isEmpty()) { // In Symbian world this means "erase last character". event.setCommitString(QLatin1String(""), -1, 1); @@ -1507,6 +1527,10 @@ void QCoeFepInputContext::SetCursorSelectionForFepL(const TCursorSelection& aCur int pos = aCursorSelection.iAnchorPos; int length = aCursorSelection.iCursorPos - pos; + if (m_cachedCursorAndAnchorPosition != -1) { + pos = m_cachedCursorAndAnchorPosition; + length = 0; + } QList<QInputMethodEvent::Attribute> attributes; attributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, pos, length, QVariant()); @@ -1524,6 +1548,13 @@ void QCoeFepInputContext::GetCursorSelectionForFep(TCursorSelection& aCursorSele int cursor = w->inputMethodQuery(Qt::ImCursorPosition).toInt() + m_preeditString.size(); int anchor = w->inputMethodQuery(Qt::ImAnchorPosition).toInt() + m_preeditString.size(); + + // If the position is stored, use that value, so that word replacement from proposed word + // lists are added to the correct position. + if (m_cachedCursorAndAnchorPosition != -1) { + cursor = m_cachedCursorAndAnchorPosition; + anchor = m_cachedCursorAndAnchorPosition; + } QString text = w->inputMethodQuery(Qt::ImSurroundingText).value<QString>(); int combinedSize = text.size() + m_preeditString.size(); if (combinedSize < anchor || combinedSize < cursor) { diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index 35a9559..3605472 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -3426,7 +3426,35 @@ QString QApplication::sessionKey() const } #endif +/*! + \since 4.7.4 + \fn void QApplication::aboutToReleaseGpuResources() + + This signal is emitted when application is about to release all + GPU resources associated to contexts owned by application. + + The signal is particularly useful if your application has allocated + GPU resources directly apart from Qt and needs to do some last-second + cleanup. + + \warning This signal is only emitted on Symbian. + + \sa aboutToUseGpuResources() +*/ +/*! + \since 4.7.4 + \fn void QApplication::aboutToUseGpuResources() + + This signal is emitted when application is about to use GPU resources. + + The signal is particularly useful if your application needs to know + when GPU resources are be available. + + \warning This signal is only emitted on Symbian. + + \sa aboutToFreeGpuResources() +*/ /*! \since 4.2 diff --git a/src/gui/kernel/qapplication.h b/src/gui/kernel/qapplication.h index 1548849..3334056 100644 --- a/src/gui/kernel/qapplication.h +++ b/src/gui/kernel/qapplication.h @@ -305,6 +305,10 @@ Q_SIGNALS: void commitDataRequest(QSessionManager &sessionManager); void saveStateRequest(QSessionManager &sessionManager); #endif +#ifdef Q_OS_SYMBIAN + void aboutToReleaseGpuResources(); + void aboutToUseGpuResources(); +#endif public: QString styleSheet() const; diff --git a/src/gui/kernel/qapplication_p.h b/src/gui/kernel/qapplication_p.h index 0756d6c..c4cb19c 100644 --- a/src/gui/kernel/qapplication_p.h +++ b/src/gui/kernel/qapplication_p.h @@ -564,6 +564,9 @@ public: void symbianHandleLiteModeStartup(); void _q_aboutToQuit(); + + void emitAboutToReleaseGpuResources(); + void emitAboutToUseGpuResources(); #endif #if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC) || defined(Q_WS_QPA) void sendSyntheticEnterLeave(QWidget *widget); diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index 7d198ce..46b16cb 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -92,6 +92,10 @@ #include <graphics/wstfxconst.h> #endif +#ifdef COE_GROUPED_POINTER_EVENT_VERSION +#include <coeeventdata.h> +#endif + QT_BEGIN_NAMESPACE // Goom Events through Window Server @@ -235,6 +239,9 @@ void QS60Data::controlVisibilityChanged(CCoeControl *control, bool visible) if (QTLWExtra *topData = qt_widget_private(window)->maybeTopData()) { QWidgetBackingStoreTracker &backingStore = topData->backingStore; if (visible) { + QApplicationPrivate *d = QApplicationPrivate::instance(); + d->emitAboutToUseGpuResources(); + if (backingStore.data()) { backingStore.registerWidget(widget); } else { @@ -244,6 +251,9 @@ void QS60Data::controlVisibilityChanged(CCoeControl *control, bool visible) widget->repaint(); } } else { + QApplicationPrivate *d = QApplicationPrivate::instance(); + d->emitAboutToReleaseGpuResources(); + // In certain special scenarios we may get an ENotVisible event // without a previous EPartiallyVisible. The backingstore must // still be destroyed, hence the registerWidget() call below. @@ -584,7 +594,11 @@ QSymbianControl::~QSymbianControl() { // Ensure backing store is deleted before the top-level // window is destroyed - qt_widget_private(qwidget)->topData()->backingStore.destroy(); + QT_TRY { + qt_widget_private(qwidget)->topData()->backingStore.destroy(); + } QT_CATCH(const std::exception&) { + // ignore exceptions, nothing can be done + } if (S60->curWin == this) S60->curWin = 0; @@ -667,71 +681,121 @@ void QSymbianControl::HandleLongTapEventL( const TPoint& aPenEventLocation, cons } #ifdef QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER +#ifdef COE_GROUPED_POINTER_EVENT_VERSION +void QSymbianControl::translateMultiEventPointerEvent(const CCoeEventData &eventData ) +{ + TUint count = eventData.Count(); + QVector<TouchEventParams> touches; + touches.reserve(count); + for (int i = 0; i < count; i++) { + const TPointerEvent *pointerEvent = eventData.Pointer(i); + const TAdvancedPointerEvent *advEvent = pointerEvent->AdvancedPointerEvent(); + if (advEvent) + touches.push_back(TouchEventFromAdvancedPointerEvent(advEvent)); + } + if (touches.size()) + processTouchEvents(touches); +} +#endif + void QSymbianControl::translateAdvancedPointerEvent(const TAdvancedPointerEvent *event) { + processTouchEvents(QVector<TouchEventParams>(1, TouchEventFromAdvancedPointerEvent(event))); +} + +QSymbianControl::TouchEventParams QSymbianControl::TouchEventFromAdvancedPointerEvent(const TAdvancedPointerEvent *event) +{ QApplicationPrivate *d = QApplicationPrivate::instance(); QPointF screenPos = qwidget->mapToGlobal(translatePointForFixedNativeOrientation(event->iPosition)); qreal pressure; - if(d->pressureSupported + if (d->pressureSupported && event->Pressure() > 0) //workaround for misconfigured HAL pressure = event->Pressure() / qreal(d->maxTouchPressure); else pressure = qreal(1.0); - processTouchEvent(event->PointerNumber(), event->iType, screenPos, pressure); + return TouchEventParams(event->PointerNumber(), event->iType, screenPos, pressure); } #endif -void QSymbianControl::processTouchEvent(int pointerNumber, TPointerEvent::TType type, QPointF screenPos, qreal pressure) +QSymbianControl::TouchEventParams::TouchEventParams() +{} + +QSymbianControl::TouchEventParams::TouchEventParams(int pointerNumber, TPointerEvent::TType type, QPointF screenPos, qreal pressure) + : pointerNumber(pointerNumber), + type(type), + screenPos(screenPos), + pressure(pressure) +{} + +void QSymbianControl::processTouchEvents(const QVector<TouchEventParams> &touches) { QRect screenGeometry = qApp->desktop()->screenGeometry(qwidget); QApplicationPrivate *d = QApplicationPrivate::instance(); + // get the maximum pointer number + int numUpdates = touches.size(); + int maxPointerNumber = 0; + for (int i = 0; i < numUpdates; ++i) { + const TouchEventParams &touch = touches[i]; + maxPointerNumber = qMax(maxPointerNumber, touch.pointerNumber); + } + + // ensure there are sufficient touch events in the list, + // touch events will be indexed by pointerNumber QList<QTouchEvent::TouchPoint> points = d->appAllTouchPoints; - while (points.count() <= pointerNumber) + while (points.count() <= maxPointerNumber) points.append(QTouchEvent::TouchPoint(points.count())); - Qt::TouchPointStates allStates = 0; + // first set all active touch points to stationary for (int i = 0; i < points.count(); ++i) { QTouchEvent::TouchPoint &touchPoint = points[i]; + if (touchPoint.state() != Qt::TouchPointReleased) { + touchPoint.setState(Qt::TouchPointStationary); + } + } - if (touchPoint.id() == pointerNumber) { - Qt::TouchPointStates state; - switch (type) { - case TPointerEvent::EButton1Down: + // Add all info about moving or state changed touch points + for (int i = 0; i < numUpdates; ++i) { + const TouchEventParams &touch = touches[i]; + QTouchEvent::TouchPoint &touchPoint = points[touch.pointerNumber]; + Qt::TouchPointStates state; + switch (touch.type) { + case TPointerEvent::EButton1Down: #ifdef QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER - case TPointerEvent::EEnterHighPressure: + case TPointerEvent::EEnterHighPressure: #endif - state = Qt::TouchPointPressed; - break; - case TPointerEvent::EButton1Up: + state = Qt::TouchPointPressed; + break; + case TPointerEvent::EButton1Up: #ifdef QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER - case TPointerEvent::EExitCloseProximity: -#endif - state = Qt::TouchPointReleased; - break; - case TPointerEvent::EDrag: - state = Qt::TouchPointMoved; - break; - default: - // how likely is this to happen? - state = Qt::TouchPointStationary; - break; - } - if (pointerNumber == 0) - state |= Qt::TouchPointPrimary; - touchPoint.setState(state); + case TPointerEvent::EExitCloseProximity: +#endif + state = Qt::TouchPointReleased; + break; + case TPointerEvent::EDrag: + state = Qt::TouchPointMoved; + break; + default: + // how likely is this to happen? + state = Qt::TouchPointStationary; + break; + } + if (touch.pointerNumber == 0) + state |= Qt::TouchPointPrimary; + touchPoint.setState(state); - touchPoint.setScreenPos(screenPos); - touchPoint.setNormalizedPos(QPointF(screenPos.x() / screenGeometry.width(), - screenPos.y() / screenGeometry.height())); + touchPoint.setScreenPos(touch.screenPos); + touchPoint.setNormalizedPos(QPointF(touch.screenPos.x() / screenGeometry.width(), + touch.screenPos.y() / screenGeometry.height())); - touchPoint.setPressure(pressure); - } else if (touchPoint.state() != Qt::TouchPointReleased) { - // all other active touch points should be marked as stationary - touchPoint.setState(Qt::TouchPointStationary); - } + touchPoint.setPressure(touch.pressure); + } + // check the resulting state of all touch points + Qt::TouchPointStates allStates = 0; + for (int i = 0; i < points.count(); ++i) { + QTouchEvent::TouchPoint &touchPoint = points[i]; allStates |= touchPoint.state(); } @@ -750,6 +814,28 @@ void QSymbianControl::processTouchEvent(int pointerNumber, TPointerEvent::TType void QSymbianControl::HandlePointerEventL(const TPointerEvent& pEvent) { #ifdef QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER +#ifdef COE_GROUPED_POINTER_EVENT_VERSION + if (pEvent.iType == TPointerEvent::EDataCCoeEventData) { + // only advanced pointers can be data type pointer events + const TAdvancedPointerEvent *advEvent = pEvent.AdvancedPointerEvent(); + if (!advEvent) + return; + const CCoeEventData& eventData = CCoeEventData::EventData(*advEvent); + if (eventData.Type() == CWsEventWithData::EPointerEvent) { + QT_TRYCATCH_LEAVING(translateMultiEventPointerEvent(eventData)); + // pointer 0 events and unnumbered events should also be handled as mouse events + for (int i=0; i<eventData.Count(); i++) { + const TPointerEvent *pointerEvent = eventData.Pointer(i); + const TAdvancedPointerEvent *advEvent = pointerEvent->AdvancedPointerEvent(); + if (!advEvent || advEvent->PointerNumber() == 0) { + m_longTapDetector->PointerEventL(*pointerEvent); + QT_TRYCATCH_LEAVING(HandlePointerEvent(*pointerEvent)); + } + } + return; + } + } +#endif if (pEvent.IsAdvancedPointerEvent()) { const TAdvancedPointerEvent *advancedPointerEvent = pEvent.AdvancedPointerEvent(); translateAdvancedPointerEvent(advancedPointerEvent); @@ -823,7 +909,7 @@ void QSymbianControl::HandlePointerEvent(const TPointerEvent& pEvent) //Generate single touch event for S60 5.0 (has touchscreen, does not have advanced pointers) #ifndef QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER if (S60->hasTouchscreen) { - processTouchEvent(0, pEvent.iType, QPointF(globalPos), 1.0); + processTouchEvents(QVector<TouchEventParams>(1, TouchEventParams(0, pEvent.iType, QPointF(globalPos), 1.0))); } #endif @@ -2795,6 +2881,24 @@ void QApplicationPrivate::_q_aboutToQuit() #endif } +void QApplicationPrivate::emitAboutToReleaseGpuResources() +{ +#ifdef Q_SYMBIAN_SUPPORTS_SURFACES + Q_Q(QApplication); + QPointer<QApplication> guard(q); + emit q->aboutToReleaseGpuResources(); +#endif +} + +void QApplicationPrivate::emitAboutToUseGpuResources() +{ +#ifdef Q_SYMBIAN_SUPPORTS_SURFACES + Q_Q(QApplication); + QPointer<QApplication> guard(q); + emit q->aboutToUseGpuResources(); +#endif +} + QS60ThreadLocalData::QS60ThreadLocalData() { CCoeEnv *env = CCoeEnv::Static(); diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h index 5ad5b00..5b5d5ce 100644 --- a/src/gui/kernel/qt_s60_p.h +++ b/src/gui/kernel/qt_s60_p.h @@ -102,6 +102,10 @@ class QSymbianTypeFaceExtras; typedef QHash<QString, const QSymbianTypeFaceExtras *> QSymbianTypeFaceExtrasHash; typedef void (*QThreadLocalReleaseFunc)(); +#ifdef COE_GROUPED_POINTER_EVENT_VERSION +class CCoeEventData; +#endif + class Q_AUTOTEST_EXPORT QS60ThreadLocalData { public: @@ -308,10 +312,23 @@ private: const QPoint &globalPos, Qt::MouseButton button, Qt::KeyboardModifiers modifiers); - void processTouchEvent(int pointerNumber, TPointerEvent::TType type, QPointF screenPos, qreal pressure); + struct TouchEventParams + { + TouchEventParams(); + TouchEventParams(int pointerNumber, TPointerEvent::TType type, QPointF screenPos, qreal pressure); + int pointerNumber; + TPointerEvent::TType type; + QPointF screenPos; + qreal pressure; + }; + void processTouchEvents(const QVector<TouchEventParams> &touches); void HandleLongTapEventL( const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation ); #ifdef QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER +#ifdef COE_GROUPED_POINTER_EVENT_VERSION + void translateMultiEventPointerEvent(const CCoeEventData &eventData ); +#endif void translateAdvancedPointerEvent(const TAdvancedPointerEvent *event); + TouchEventParams TouchEventFromAdvancedPointerEvent(const TAdvancedPointerEvent *event); #endif bool isSplitViewWidget(QWidget *widget); bool hasFocusedAndVisibleChild(QWidget *parentWidget); diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index 396c306..a37c265 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -1040,8 +1040,12 @@ void QWidgetPrivate::registerTouchWindow() RWindow *rwindow = static_cast<RWindow *>(q->effectiveWinId()->DrawableWindow()); QSymbianControl *window = static_cast<QSymbianControl *>(q->effectiveWinId()); //Enabling advanced pointer events for controls that already have active windows causes a panic. - if (!window->isControlActive()) + if (!window->isControlActive()) { rwindow->EnableAdvancedPointers(); +#ifdef COE_GROUPED_POINTER_EVENT_VERSION + qt_symbian_throwIfError(window->ConfigureEventData(CCoeControl::EEventDataAllowGroupedPointerEvents)); +#endif + } } #endif } diff --git a/src/gui/painting/qgraphicssystemex_symbian.cpp b/src/gui/painting/qgraphicssystemex_symbian.cpp index 32e040f..5a182ff 100644 --- a/src/gui/painting/qgraphicssystemex_symbian.cpp +++ b/src/gui/painting/qgraphicssystemex_symbian.cpp @@ -46,7 +46,7 @@ #include <e32property.h> -#ifdef Q_SYMBIAN_SUPPORTS_SURFACES +#if defined(Q_SYMBIAN_SUPPORTS_SURFACES) && !defined (QT_NO_EGL) #include "private/qegl_p.h" #endif @@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE static bool bcm2727Initialized = false; static bool bcm2727 = false; -#ifdef Q_SYMBIAN_SUPPORTS_SURFACES +#if defined(Q_SYMBIAN_SUPPORTS_SURFACES) && !defined (QT_NO_EGL) typedef EGLBoolean (*NOK_resource_profiling)(EGLDisplay, EGLint, EGLint*, EGLint, EGLint*); #define EGL_PROF_TOTAL_MEMORY_NOK 0x3070 #endif @@ -69,7 +69,7 @@ bool QSymbianGraphicsSystemEx::hasBCM2727() if (bcm2727Initialized) return bcm2727; -#ifdef Q_SYMBIAN_SUPPORTS_SURFACES +#if defined(Q_SYMBIAN_SUPPORTS_SURFACES) && !defined (QT_NO_EGL) EGLDisplay display = QEgl::display(); #if 1 // Hacky but fast ~0ms. diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index fb5ce96..72357a6 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -9509,7 +9509,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode void *visual = QPaintDevice::x11AppVisual(screen); \newcode - void *visual = qApp->x11Info(screen).visual(); + void *visual = widget->x11Info().appVisual(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9521,7 +9521,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode unsigned long colormap = QPaintDevice::x11AppColormap(screen); \newcode - unsigned long colormap = qApp->x11Info(screen).colormap(); + unsigned long colormap = widget->x11Info().appColormap(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9533,7 +9533,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode Display *display = QPaintDevice::x11AppDisplay(); \newcode - Display *display = qApp->x11Info().display(); + Display *display = widget->x11Info().display(); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9545,7 +9545,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode int screen = QPaintDevice::x11AppScreen(); \newcode - int screen = qApp->x11Info().screen(); + int screen = widget->x11Info().appScreen(); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9557,7 +9557,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode int depth = QPaintDevice::x11AppDepth(screen); \newcode - int depth = qApp->x11Info(screen).depth(); + int depth = widget->x11Info().appDepth(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9569,7 +9569,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode int cells = QPaintDevice::x11AppCells(screen); \newcode - int cells = qApp->x11Info(screen).cells(); + int cells = widget->x11Info().appCells(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9581,7 +9581,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode unsigned long window = QPaintDevice::x11AppRootWindow(screen); \newcode - unsigned long window = qApp->x11Info(screen).appRootWindow(); + unsigned long window = widget->x11Info().appRootWindow(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9593,7 +9593,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode bool isDefault = QPaintDevice::x11AppDefaultColormap(screen); \newcode - bool isDefault = qApp->x11Info(screen).defaultColormap(); + bool isDefault = widget->x11Info().appDefaultColormap(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9605,7 +9605,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode bool isDefault = QPaintDevice::x11AppDefaultVisual(screen); \newcode - bool isDefault = qApp->x11Info(screen).defaultVisual(); + bool isDefault = widget->x11Info().appDefaultVisual(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9625,7 +9625,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode bool isDefault = QPaintDevice::x11AppDpiX(screen); \newcode - bool isDefault = qApp->x11Info(screen).appDpiX(); + bool isDefault = widget->x11Info().appDpiX(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9637,7 +9637,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode bool isDefault = QPaintDevice::x11AppDpiY(screen); \newcode - bool isDefault = qApp->x11Info(screen).appDpiY(); + bool isDefault = widget->x11Info().appDpiY(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() diff --git a/src/gui/styles/qs60style_p.h b/src/gui/styles/qs60style_p.h index 2fa8c7f..ad55761 100644 --- a/src/gui/styles/qs60style_p.h +++ b/src/gui/styles/qs60style_p.h @@ -473,8 +473,8 @@ public: private: //data members //TODO: consider changing these to non-pointers as the classes are rather small anyway - AnimationData *m_defaultData; - AnimationDataV2 *m_currentData; + QScopedPointer<AnimationData> m_defaultData; + QScopedPointer<AnimationDataV2> m_currentData; }; #endif //Q_WS_S60 diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp index cfb10fa..eb59115 100644 --- a/src/gui/styles/qs60style_s60.cpp +++ b/src/gui/styles/qs60style_s60.cpp @@ -132,14 +132,12 @@ AnimationDataV2::~AnimationDataV2() QS60StyleAnimation::QS60StyleAnimation(const QS60StyleEnums::SkinParts part, int frames, int interval) { - QT_TRAP_THROWING(m_defaultData = new (ELeave) AnimationData(part, frames, interval)); - QT_TRAP_THROWING(m_currentData = new (ELeave) AnimationDataV2(*m_defaultData)); + m_defaultData.reset(new AnimationData(part, frames, interval)); + m_currentData.reset(new AnimationDataV2(*m_defaultData)); } QS60StyleAnimation::~QS60StyleAnimation() { - delete m_currentData; - delete m_defaultData; } void QS60StyleAnimation::setAnimationObject(CAknBitmapAnimation* animation) @@ -152,9 +150,7 @@ void QS60StyleAnimation::setAnimationObject(CAknBitmapAnimation* animation) void QS60StyleAnimation::resetToDefaults() { - delete m_currentData; - m_currentData = 0; - QT_TRAP_THROWING(m_currentData = new (ELeave) AnimationDataV2(*m_defaultData)); + m_currentData.reset(new AnimationDataV2(*m_defaultData)); } class QS60StyleModeSpecifics diff --git a/src/gui/styles/styles.pri b/src/gui/styles/styles.pri index b6eeec9..45ed8eb 100644 --- a/src/gui/styles/styles.pri +++ b/src/gui/styles/styles.pri @@ -172,11 +172,7 @@ contains( styles, s60 ):contains(QT_CONFIG, s60) { symbian { SOURCES += styles/qs60style_s60.cpp LIBS += -legul -lbmpanim - contains(CONFIG, is_using_gnupoc) { - LIBS += -laknicon -laknskins -laknskinsrv -lfontutils - } else { - LIBS += -lAknIcon -lAKNSKINS -lAKNSKINSRV -lFontUtils - } + LIBS += -laknicon -laknskins -laknskinsrv -lfontutils } else { SOURCES += styles/qs60style_simulated.cpp RESOURCES += styles/qstyle_s60_simulated.qrc diff --git a/src/gui/util/util.pri b/src/gui/util/util.pri index 7395604..7cf1a55 100644 --- a/src/gui/util/util.pri +++ b/src/gui/util/util.pri @@ -57,9 +57,5 @@ symbian { DEFINES += USE_SCHEMEHANDLER } - contains(CONFIG, is_using_gnupoc) { - LIBS += -ldirectorylocalizer - } else { - LIBS += -lDirectoryLocalizer - } + LIBS += -ldirectorylocalizer } diff --git a/src/gui/widgets/qlabel.cpp b/src/gui/widgets/qlabel.cpp index c0be3e1..2b6eeb7 100644 --- a/src/gui/widgets/qlabel.cpp +++ b/src/gui/widgets/qlabel.cpp @@ -60,7 +60,7 @@ #endif #ifdef Q_OS_SYMBIAN -#include "qt_s60_p.h" +#include "private/qt_s60_p.h" #endif QT_BEGIN_NAMESPACE |