Ignore:
Timestamp:
Feb 11, 2010, 11:19:06 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.1 sources.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/gui/kernel/qapplication_p.h

    r428 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtGui module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
     
    5656
    5757#include "QtGui/qapplication.h"
     58#include "QtGui/qevent.h"
    5859#include "QtGui/qfont.h"
    5960#include "QtGui/qcursor.h"
     
    7172#include <private/qgraphicssystem_qws_p.h>
    7273#endif
     74#ifdef Q_OS_SYMBIAN
     75#include <w32std.h>
     76#endif
    7377
    7478QT_BEGIN_NAMESPACE
     
    7882class QGraphicsSystem;
    7983class QInputContext;
    80 class QKeyEvent;
    81 class QMouseEvent;
    8284class QObject;
    83 class QWheelEvent;
    8485class QWidget;
     86class QSocketNotifier;
     87class QGestureManager;
    8588
    8689extern bool qt_is_gui_used;
     
    101104class QWSManager;
    102105class QDirectPainter;
     106struct QWSServerCleaner { ~QWSServerCleaner(); };
    103107#endif
    104108
     
    159163{
    160164    QPointF ret;
     165
    161166    if (sign(outExtentX) == sign(maxX))
    162         ret.setX(((coordX - minX) * qAbs(outExtentX) / qAbs(qreal(maxX))) + outOriginX);
     167        ret.setX(((coordX - minX) * qAbs(outExtentX) / qAbs(qreal(maxX - minX))) + outOriginX);
    163168    else
    164         ret.setX(((qAbs(maxX) - (coordX - minX)) * qAbs(outExtentX) / qAbs(qreal(maxX)))
     169        ret.setX(((qAbs(maxX) - (coordX - minX)) * qAbs(outExtentX) / qAbs(qreal(maxX - minX)))
    165170                 + outOriginX);
    166171
    167172    if (sign(outExtentY) == sign(maxY))
    168         ret.setY(((coordY - minY) * qAbs(outExtentY) / qAbs(qreal(maxY))) + outOriginY);
     173        ret.setY(((coordY - minY) * qAbs(outExtentY) / qAbs(qreal(maxY - minY))) + outOriginY);
    169174    else
    170         ret.setY(((qAbs(maxY) - (coordY - minY)) * qAbs(outExtentY) / qAbs(qreal(maxY)))
     175        ret.setY(((qAbs(maxY) - (coordY - minY)) * qAbs(outExtentY) / qAbs(qreal(maxY - minY)))
    171176                 + outOriginY);
     177
    172178    return ret;
    173179}
     
    189195}
    190196#endif
     197
     198#if defined(Q_WS_WIN)
     199typedef BOOL (WINAPI *PtrRegisterTouchWindow)(HWND, ULONG);
     200typedef BOOL (WINAPI *PtrGetTouchInputInfo)(HANDLE, UINT, PVOID, int);
     201typedef BOOL (WINAPI *PtrCloseTouchInputHandle)(HANDLE);
     202
     203typedef BOOL (WINAPI *PtrGetGestureInfo)(HANDLE, PVOID);
     204typedef BOOL (WINAPI *PtrGetGestureExtraArgs)(HANDLE, UINT, PBYTE);
     205typedef BOOL (WINAPI *PtrCloseGestureInfoHandle)(HANDLE);
     206typedef BOOL (WINAPI *PtrSetGestureConfig)(HWND, DWORD, UINT, PVOID, UINT);
     207typedef BOOL (WINAPI *PtrGetGestureConfig)(HWND, DWORD, DWORD, PUINT, PVOID, UINT);
     208
     209typedef BOOL (WINAPI *PtrBeginPanningFeedback)(HWND);
     210typedef BOOL (WINAPI *PtrUpdatePanningFeedback)(HWND, LONG, LONG, BOOL);
     211typedef BOOL (WINAPI *PtrEndPanningFeedback)(HWND, BOOL);
     212
     213#ifndef WM_GESTURE
     214#  define WM_GESTURE 0x0119
     215
     216#  define GID_BEGIN                       1
     217#  define GID_END                         2
     218#  define GID_ZOOM                        3
     219#  define GID_PAN                         4
     220#  define GID_ROTATE                      5
     221#  define GID_TWOFINGERTAP                6
     222#  define GID_ROLLOVER                    7
     223
     224typedef struct tagGESTUREINFO
     225{
     226    UINT cbSize;
     227    DWORD dwFlags;
     228    DWORD dwID;
     229    HWND hwndTarget;
     230    POINTS ptsLocation;
     231    DWORD dwInstanceID;
     232    DWORD dwSequenceID;
     233    ULONGLONG ullArguments;
     234    UINT cbExtraArgs;
     235} GESTUREINFO;
     236
     237#  define GC_PAN                                      0x00000001
     238#  define GC_PAN_WITH_SINGLE_FINGER_VERTICALLY        0x00000002
     239#  define GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY      0x00000004
     240
     241#  define GC_ZOOM                                     0x00000001
     242#  define GC_ROTATE                                   0x00000001
     243
     244typedef struct tagGESTURECONFIG
     245{
     246    DWORD dwID;
     247    DWORD dwWant;
     248    DWORD dwBlock;
     249} GESTURECONFIG;
     250
     251#  define GID_ROTATE_ANGLE_FROM_ARGUMENT(arg) ((((double)(arg) / 65535.0) * 4.0 * 3.14159265) - 2.0*3.14159265)
     252
     253#endif // WM_GESTURE
     254
     255#if defined(Q_WS_WINCE_WM) && defined(QT_WINCE_GESTURES)
     256#undef GID_ZOOM
     257#define GID_ZOOM 0xf000
     258#undef GID_ROTATE
     259#define GID_ROTATE 0xf001
     260#undef GID_TWOFINGERTAP
     261#define GID_TWOFINGERTAP 0xf002
     262#undef GID_ROLLOVER
     263#define GID_ROLLOVER 0xf003
     264#endif
     265
     266#endif // Q_WS_WIN
    191267
    192268class QScopedLoopLevelCounter
     
    201277};
    202278
     279typedef QHash<QByteArray, QFont> FontHash;
     280FontHash *qt_app_fonts_hash();
     281
     282typedef QHash<QByteArray, QPalette> PaletteHash;
     283PaletteHash *qt_app_palettes_hash();
     284
    203285class Q_GUI_EXPORT QApplicationPrivate : public QCoreApplicationPrivate
    204286{
     
    210292#if defined(Q_WS_X11)
    211293#ifndef QT_NO_SETTINGS
    212     static QString kdeHome();
    213294    static bool x11_apply_settings();
    214295#endif
     
    220301    static bool quitOnLastWindowClosed;
    221302    static void emitLastWindowClosed();
    222 #ifdef Q_OS_WINCE
     303#ifdef Q_WS_WINCE
    223304    static int autoMaximizeThreshold;
     305#endif
    224306    static bool autoSipEnabled;
    225 #endif
     307    static QString desktopStyleKey();
    226308
    227309    static QGraphicsSystem *graphicsSystem()
     
    234316    void createEventDispatcher();
    235317    QString appName() const;
    236 
    237318    static void dispatchEnterLeave(QWidget *enter, QWidget *leave);
    238319
     
    271352        KB_Gnome = 16,
    272353        KB_CDE = 32,
     354        KB_S60 = 64,
    273355        KB_All = 0xffff
    274356    };
     
    357439    static bool animate_toolbox;
    358440    static bool widgetCount; // Coupled with -widgetcount switch
     441    static bool load_testability; // Coupled with -testability switch
    359442#ifdef Q_WS_MAC
    360443    static bool native_modal_dialog_active;
    361 #endif
    362 #if defined(Q_WS_WIN) && !defined(Q_OS_WINCE)
    363     static bool inSizeMove;
    364444#endif
    365445
     
    384464#ifdef Q_WS_QWS
    385465    QPointer<QWSManager> last_manager;
     466    QWSServerCleaner qwsServerCleaner;
    386467# ifndef QT_NO_DIRECTPAINTER
    387468    QMap<WId, QDirectPainter *> *directPainters;
     
    394475    static QApplicationPrivate *instance() { return self; }
    395476
    396     static QString *styleOverride;
     477    static QString styleOverride;
    397478
    398479    static int app_compile_version;
    399480
    400481#ifdef QT_KEYPAD_NAVIGATION
    401     static bool keypadNavigation;
    402482    static QWidget *oldEditFocus;
     483    static Qt::NavigationMode navigationMode;
    403484#endif
    404485
     
    406487    void _q_alertTimeOut();
    407488    QHash<QWidget *, QTimer *> alertTimerHash;
    408 #endif
    409 #if defined(QT_MAC_USE_COCOA)
    410     void _q_runAppModalWindow();
    411 #endif
    412 #if defined(QT_MAC_USE_COCOA)
    413     void _q_runModalWindow();
    414489#endif
    415490#ifndef QT_NO_STYLE_STYLESHEET
     
    421496                                      QWidget *buttonDown, QWidget *alienWidget);
    422497    static bool sendMouseEvent(QWidget *receiver, QMouseEvent *event, QWidget *alienWidget,
    423                                QWidget *native, QWidget **buttonDown, QPointer<QWidget> &lastMouseReceiver);
    424 #if defined(Q_WS_WIN) || defined(Q_WS_PM) || defined(Q_WS_X11)
     498                               QWidget *native, QWidget **buttonDown, QPointer<QWidget> &lastMouseReceiver,
     499                               bool spontaneous = true);
     500#ifdef Q_OS_SYMBIAN
     501    static void setNavigationMode(Qt::NavigationMode mode);
     502    static TUint resolveS60ScanCode(TInt scanCode, TUint keysym);
     503    QSet<WId> nativeWindows;
     504
     505    int symbianProcessWsEvent(const TWsEvent *event);
     506    int symbianHandleCommand(int command);
     507    int symbianResourceChange(int type);
     508
     509#endif
     510#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_PM)
    425511    void sendSyntheticEnterLeave(QWidget *widget);
    426512#endif
    427513#if defined(Q_WS_PM) && !defined(QT_NO_SESSIONMANAGER)
    428514    bool canQuit();
     515#endif
     516
     517    QGestureManager *gestureManager;
     518    QWidget *gestureWidget;
     519
     520    QMap<int, QWeakPointer<QWidget> > widgetForTouchPointId;
     521    QMap<int, QTouchEvent::TouchPoint> appCurrentTouchPoints;
     522    static void updateTouchPointsForWidget(QWidget *widget, QTouchEvent *touchEvent);
     523    void initializeMultitouch();
     524    void initializeMultitouch_sys();
     525    void cleanupMultitouch();
     526    void cleanupMultitouch_sys();
     527    int findClosestTouchPointId(const QPointF &screenPos);
     528    void appendTouchPoint(const QTouchEvent::TouchPoint &touchPoint);
     529    void removeTouchPoint(int touchPointId);
     530    static void translateRawTouchEvent(QWidget *widget,
     531                                       QTouchEvent::DeviceType deviceType,
     532                                       const QList<QTouchEvent::TouchPoint> &touchPoints);
     533
     534#if defined(Q_WS_WIN)
     535    static PtrRegisterTouchWindow RegisterTouchWindow;
     536    static PtrGetTouchInputInfo GetTouchInputInfo;
     537    static PtrCloseTouchInputHandle CloseTouchInputHandle;
     538
     539    QHash<DWORD, int> touchInputIDToTouchPointID;
     540    bool translateTouchEvent(const MSG &msg);
     541
     542    PtrGetGestureInfo GetGestureInfo;
     543    PtrGetGestureExtraArgs GetGestureExtraArgs;
     544    PtrCloseGestureInfoHandle CloseGestureInfoHandle;
     545    PtrSetGestureConfig SetGestureConfig;
     546    PtrGetGestureConfig GetGestureConfig;
     547    PtrBeginPanningFeedback BeginPanningFeedback;
     548    PtrUpdatePanningFeedback UpdatePanningFeedback;
     549    PtrEndPanningFeedback EndPanningFeedback;
     550#endif
     551
     552#ifdef QT_RX71_MULTITOUCH
     553    bool hasRX71MultiTouch;
     554
     555    struct RX71TouchPointState {
     556        QSocketNotifier *socketNotifier;
     557        QTouchEvent::TouchPoint touchPoint;
     558
     559        int minX, maxX, scaleX;
     560        int minY, maxY, scaleY;
     561        int minZ, maxZ;
     562    };
     563    QList<RX71TouchPointState> allRX71TouchPoints;
     564
     565    bool readRX71MultiTouchEvents(int deviceNumber);
     566    void fakeMouseEventFromRX71TouchEvent();
     567    void _q_readRX71MultiTouchEvents();
     568#endif
     569
     570#if defined(Q_WS_S60)
     571    int maxTouchPressure;
     572    QList<QTouchEvent::TouchPoint> appAllTouchPoints;
    429573#endif
    430574
     
    434578#endif
    435579
     580#ifdef Q_OS_SYMBIAN
     581    static QHash<TInt, TUint> scanCodeCache;
     582#endif
     583
    436584    static QApplicationPrivate *self;
     585
     586    static void giveFocusAccordingToFocusPolicy(QWidget *w,
     587                                                Qt::FocusPolicy focusPolicy,
     588                                                Qt::FocusReason focusReason);
    437589    static bool shouldSetFocus(QWidget *w, Qt::FocusPolicy policy);
     590
     591
     592    static bool isAlien(QWidget *);
    438593};
    439594
     595Q_GUI_EXPORT void qt_translateRawTouchEvent(QWidget *window,
     596                                            QTouchEvent::DeviceType deviceType,
     597                                            const QList<QTouchEvent::TouchPoint> &touchPoints);
     598
     599#if defined(Q_WS_WIN)
     600  extern void qt_win_set_cursor(QWidget *, bool);
     601#elif defined(Q_WS_X11)
     602  extern void qt_x11_enforce_cursor(QWidget *, bool);
     603  extern void qt_x11_enforce_cursor(QWidget *);
     604#elif defined(Q_OS_SYMBIAN)
     605  extern void qt_symbian_set_cursor(QWidget *, bool);
     606#elif defined(Q_WS_PM)
     607  extern void qt_pm_set_cursor(QWidget *, bool);
     608#endif
     609
    440610QT_END_NAMESPACE
    441611
Note: See TracChangeset for help on using the changeset viewer.