Ignore:
Timestamp:
Oct 1, 2007, 11:33:02 PM (18 years ago)
Author:
dmik
Message:

Kernel: Fixed: QWidge::pmEvent() was not called for key press/release events delivered to non-toplevel widgets.

File:
1 edited

Legend:

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

    r170 r171  
    11991199    }
    12001200
    1201     if ( widget->pmEvent( &qmsg ) )             // send through widget filter
    1202         RETURN( TRUE );
     1201    // send through widget filter
     1202    // (WM_CHAR will be handled later)
     1203    if ( msg != WM_CHAR )
     1204        if ( widget->pmEvent( &qmsg ) )
     1205            RETURN( TRUE );
    12031206
    12041207    if ( isMouseEvent ) {                       // mouse events
    1205         if ( qApp->activePopupWidget() != 0 ) { // in popup mode
    1206             QWidget* w = QApplication::widgetAt( qmsg.ptl.x, qmsg.ptl.y, TRUE );
    1207             if ( w ) {
     1208        if ( qApp->activePopupWidget() != 0 ) { // in popup mode
     1209            QWidget* w = QApplication::widgetAt( qmsg.ptl.x, qmsg.ptl.y, TRUE );
     1210            if ( w ) {
    12081211                POINTL ptl = { SHORT1FROMMP(qmsg.mp1), SHORT2FROMMP(qmsg.mp1) };
    12091212                WinMapWindowPoints( qmsg.hwnd, w->winId(), &ptl, 1 );
    12101213                qmsg.mp1 = MPFROM2SHORT( ptl.x, ptl.y );
    1211                 widget = (QETWidget*)w;
     1214                widget = (QETWidget*)w;
    12121215            }
    1213         }
     1216        }
    12141217        result = widget->translateMouseEvent( qmsg );
    12151218        rc = (MRESULT) result;
    12161219#ifndef QT_NO_WHEELEVENT
    12171220    } else if ( msg == WM_VSCROLL || msg == WM_HSCROLL ) {
    1218         result = widget->translateWheelEvent( qmsg );
     1221        result = widget->translateWheelEvent( qmsg );
    12191222        rc = (MRESULT) result;
    12201223#endif
     
    12241227#endif
    12251228    } else {
    1226         switch ( msg ) {
    1227 
     1229        switch ( msg ) {
     1230       
    12281231        case WM_TRANSLATEACCEL:
    12291232            if ( widget->isTopLevel() ) {
     
    12631266//                    || widget->winId() == WinQueryFocus( HWND_DESKTOP ) ) // We faked the message to go to exactly that widget.
    12641267                widget = (QETWidget*)widget->topLevelWidget();
     1268
     1269            if ( widget->pmEvent( &qmsg ) )
     1270                RETURN( TRUE );
     1271
    12651272            if ( widget->isEnabled() ) {
    12661273/// @todo (dmik) we should not pass WM_CHAR to the default window proc,
Note: See TracChangeset for help on using the changeset viewer.