Changeset 498


Ignore:
Timestamp:
Feb 1, 2010, 12:24:47 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

gui/kernel: Implemented delivering of QEvent::NonClientAreaMouse* events to top-level widgets (#122).

Location:
trunk/src/gui/kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gui/kernel/qapplication_pm.cpp

    r496 r498  
    146146//  void        markFrameStrutDirty() { data->fstrut_dirty = 1; }
    147147    bool        translateMouseEvent(const QMSG &qmsg);
     148
    148149#ifndef QT_NO_WHEELEVENT
    149150    bool        translateWheelEvent(const QMSG &qmsg);
     
    729730}
    730731
     732
     733
     734
     735
     736
     737
     738
     739
     740
     741
     742
     743
     744
     745
     746
     747
     748
     749
     750
     751
     752
     753
     754
     755
     756
     757
     758
     759
     760
    731761// QtWndProc() receives all messages from the main event loop
    732762
     
    745775        QETWidget *widget = 0;
    746776
    747         bool isTranslatableMouseEvent =
    748             (msg >= WM_MOUSEFIRST && msg <= WM_MOUSELAST) ||
    749             (msg >= WM_EXTMOUSEFIRST && msg <= WM_EXTMOUSELAST);
    750 
    751         QMSG qmsg; // create QMSG structure
    752         qmsg.hwnd = hwnd;
    753         qmsg.msg = msg;
    754         qmsg.mp1 = mp1;
    755         qmsg.mp2 = mp2;
    756         qmsg.time = WinQueryMsgTime(0);
    757 
    758         if (isTranslatableMouseEvent || msg == WM_CONTEXTMENU) {
    759             qmsg.ptl.x = (short)SHORT1FROMMP(mp1);
    760             qmsg.ptl.y = (short)SHORT2FROMMP(mp1);
    761             WinMapWindowPoints(qmsg.hwnd, HWND_DESKTOP, &qmsg.ptl, 1);
    762         } else {
    763             WinQueryMsgPos(0, &qmsg.ptl);
    764         }
    765         // flip y coordinate
    766         qmsg.ptl.y = QApplication::desktop()->height() - (qmsg.ptl.y + 1);
     777        QtQmsg qmsg(hwnd, msg, mp1, mp2);
    767778
    768779#if defined(QT_DEBUGMSGFLOW)
     
    904915            return rc;
    905916
    906         if (isTranslatableMouseEvent) {
     917        if (isTranslatableMouseEvent) {
    907918            if (qApp->activePopupWidget() != 0) { // in popup mode
    908919                QWidget *w = QApplication::widgetAt(qmsg.ptl.x, qmsg.ptl.y);
     
    12371248        Q_ASSERT(widget->isWindow());
    12381249
    1239         QMSG qmsg; // create QMSG structure
    1240         qmsg.hwnd = hwnd;
    1241         qmsg.msg = msg;
    1242         qmsg.mp1 = mp1;
    1243         qmsg.mp2 = mp2;
     1250        QtQmsg qmsg(hwnd, msg, mp1, mp2);
    12441251
    12451252#if defined(QT_DEBUGMSGFLOW)
     
    12501257        }
    12511258#endif
     1259
     1260
     1261
    12521262
    12531263        switch(msg) {
     
    13131323}
    13141324
     1325
     1326
     1327
     1328
     1329
     1330
     1331
     1332
     1333
     1334
     1335
     1336
     1337
     1338
     1339
     1340
     1341
     1342
     1343
     1344
     1345
     1346
     1347
     1348
     1349
     1350
     1351
     1352
     1353
     1354
     1355
     1356
     1357
     1358
     1359
     1360
     1361
     1362
     1363
     1364
     1365
     1366
     1367
    13151368/*****************************************************************************
    13161369  Modal widgets; We have implemented our own modal widget mechanism
     
    16021655//
    16031656
    1604 static ushort mouseTbl[] = {
     1657static ushort mouseTbl[] = {
    16051658    WM_MOUSEMOVE,           QEvent::MouseMove,                  0,
    16061659    WM_BUTTON1DOWN,         QEvent::MouseButtonPress,       Qt::LeftButton,
     
    16141667    WM_BUTTON3DBLCLK,   QEvent::MouseButtonDblClick,    Qt::MidButton,
    16151668    WM_CONTEXTMENU,     QEvent::ContextMenu,            0,
     1669
     1670
     1671
     1672
     1673
     1674
     1675
     1676
     1677
     1678
     1679
     1680
     1681
     1682
    16161683    0,                          0,                                              0
    16171684};
     
    19692036            res = res && e.isAccepted();
    19702037        }
    1971 
    1972         if (type != QEvent::MouseMove)
    1973             pos.rx() = pos.ry() = -9999;        // init for move compression
    19742038    }
    19752039
    19762040    return res;
     2041
     2042
     2043
     2044
     2045
     2046
     2047
     2048
     2049
     2050
     2051
     2052
     2053
     2054
     2055
     2056
     2057
     2058
     2059
     2060
     2061
     2062
     2063
     2064
     2065
     2066
     2067
     2068
     2069
     2070
     2071
     2072
     2073
     2074
     2075
     2076
     2077
     2078
     2079
     2080
    19772081}
    19782082
  • trunk/src/gui/kernel/qwidget_pm.cpp

    r497 r498  
    7171extern PFNWP QtOldFrameProc;
    7272extern MRESULT EXPENTRY QtFrameProc(HWND, ULONG, MPARAM, MPARAM);
     73
     74
    7375
    7476#if !defined(QT_NO_SESSIONMANAGER)
     
    11611163                QtOldFrameProc = oldProc;
    11621164
     1165
     1166
     1167
     1168
     1169
     1170
     1171
     1172
     1173
     1174
     1175
     1176
     1177
     1178
     1179
    11631180            removeSysMenuAccels(fId);
    11641181
Note: See TracChangeset for help on using the changeset viewer.