Changeset 115


Ignore:
Timestamp:
Aug 10, 2006, 8:19:08 PM (19 years ago)
Author:
dmik
Message:

Kernel: WinUpdateWindow() is called on every WM_ERASEBACKGROUND also when no QT_PM_NO_WIDGETMASK macro is defined (i.e. when we support widget masks), for better visual effect (no unpainted areas flashes at program startup, on resize, etc.)

File:
1 edited

Legend:

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

    r110 r115  
    7474
    7575extern void qt_ensure_pm();
    76 
    77 /// @todo (dmik) how we can use buttons 4 and 5 on OS/2?
    78 //// support for xbuttons
    79 //#ifndef WM_XBUTTONDOWN
    80 //#define WM_XBUTTONDOWN                  0x020B
    81 //#define WM_XBUTTONUP                    0x020C
    82 //#define WM_XBUTTONDBLCLK                0x020D
    83 //#define GET_KEYSTATE_WPARAM(wParam)     (LOWORD(wParam))
    84 //#define GET_XBUTTON_WPARAM(wParam)      (HIWORD(wParam))
    85 //#define XBUTTON1      0x0001
    86 //#define XBUTTON2      0x0002
    87 //#define MK_XBUTTON1         0x0020
    88 //#define MK_XBUTTON2         0x0040
    89 //#endif
    9076
    9177/// @todo (dmik) hmm, extended keys under OS/2?
     
    497483#endif // QT_DEBUG
    498484
    499     // No message boxes but important ones
    500 //@@TODO (dmik): configuring error popups per process is not usual practice
    501 //      in OS/2 (since global AUTOFAIL/SUPPRESSPOPUPS control this). remove it?
    502     DosError( FERR_DISABLEHARDERR | FERR_ENABLEEXCEPTION );
    503 
    504485    // Ensure we are in PM mode
    505486    qt_ensure_pm();
    506     // Force creation of the main event loop to make it possible to
    507     // create windows before the application invikes exec()
     487    // Force creation of the main event queue to make it possible to
     488    // create windows before the application invokes exec()
    508489    QApplication::eventLoop();
    509 
    510 
    511 //@@TODO (dmik): do we need appInst anywhere? if yes, make it obtaining its
    512 //  value using the return value of qt_ensure_pm() since it also uses PIB.
    513 //    if ( appInst == 0 ) {
    514 //        PPIB ppib;
    515 //        DosGetInfoBlocks( NULL, &ppib );
    516 //        appInst = ppib->pib_hmte;
    517 //    }
    518490
    519491    // Misc. initialization
     
    540512        qt_set_pm_resources();
    541513
    542 //@@TODO (dmik): remove?
     514/// @todo (dmik) remove?
    543515//    QInputContext::init();
    544516}
     
    1021993    // flip y coordinate
    1022994    qmsg.ptl.y = QApplication::desktop()->height() - (qmsg.ptl.y + 1);
    1023 
    1024 /// @todo (dmik) do we need this?
    1025 //    /*
    1026 //    // sometimes the autograb is not released, so the clickevent is sent
    1027 //    // to the wrong window. We ignore this for now, because it doesn't
    1028 //    // cause any problems.
    1029 //    if ( msg.message == WM_LBUTTONDOWN || msg.message == WM_RBUTTONDOWN || msg.message == WM_MBUTTONDOWN ) {
    1030 //      HWND handle = WindowFromPoint( msg.pt );
    1031 //      if ( msg.hwnd != handle ) {
    1032 //          msg.hwnd = handle;
    1033 //          hwnd = handle;
    1034 //      }
    1035 //    }
    1036 //    */
    1037995
    1038996    if ( qt_pmEventFilter( &qmsg, rc ) )        // send through app filter
     
    11321090        case WM_BUTTON2DOWN:
    11331091        case WM_BUTTON3DOWN:
    1134 /// @todo (dmik) later (extra buttons)
    1135 //        case WM_XBUTTONDOWN:
    11361092            if ( ignoreNextMouseReleaseEvent )
    11371093                ignoreNextMouseReleaseEvent = FALSE;
     
    11401096        case WM_BUTTON2UP:
    11411097        case WM_BUTTON3UP:
    1142 /// @todo (dmik) later (extra buttons)
    1143 //        case WM_XBUTTONUP:
    11441098            if ( ignoreNextMouseReleaseEvent ) {
    11451099                ignoreNextMouseReleaseEvent = FALSE;
     
    13811335//#endif
    13821336
    1383 /// @todo (dmik) later
     1337/// @todo (dmik) later (WM_KBDLAYERCHANGED (0xBD4)?)
    13841338//      case WM_SETTINGCHANGE:
    13851339//          if ( !msg.wParam ) {
     
    13911345//          break;
    13921346//
    1393 //#ifndef Q_OS_TEMP
    1394 //      case WM_NCLBUTTONDBLCLK:
    1395 //          if ( wParam == HTCAPTION ) {
    1396 //              bool window_state_changed = FALSE;
    1397 //              if ( widget->isMaximized() ) {
    1398 //                  window_state_changed = TRUE;
    1399 //                  widget->clearWState(Qt::WState_Maximized);
    1400 //              } else if (widget->testWFlags(Qt::WStyle_Maximize)){
    1401 //                  window_state_changed = TRUE;
    1402 //                  widget->setWState(Qt::WState_Maximized);
    1403 //              }
    1404 //
    1405 //              if (window_state_changed) {
    1406 //                  QEvent e(QEvent::WindowStateChange);
    1407 //                  qt_sendSpontaneousEvent(widget, &e);
    1408 //              }
    1409 //          }
    1410 //          result = FALSE;
    1411 //          break;
    1412 //#endif
    14131347        case WM_PAINT:                          // paint event
    14141348            result = widget->translatePaintEvent( qmsg );
    14151349            break;
    14161350        case WM_ERASEBACKGROUND:                // erase window background
    1417 #if defined (QT_PM_NO_WIDGETMASK)
    14181351            // flush WM_PAINT messages here to update window contents
    14191352            // instantly while tracking the resize frame (normally these
     
    14261359            // clients only, so we would have to do all calculations ourselves).
    14271360            WinUpdateWindow( widget->winId() );
    1428 #else
    1429             // We flush WM_PAINT messages in QETWidget::translateConfigEvent().
    1430 #endif
    14311361            RETURN( FALSE );
    14321362            break;
     
    24202350    type   = (QEvent::Type)mouseTbl[++i];       // event type
    24212351    button = mouseTbl[++i];                     // which button
    2422 /// @todo (dmik) later (extra buttons)
    2423 //    if ( button > Qt::MidButton ) {
    2424 //      switch( GET_XBUTTON_WPARAM( msg.wParam ) ) {
    2425 //      case XBUTTON1:
    2426 //          button = Qt::MidButton*2; //### XButton1;
    2427 //          break;
    2428 //      case XBUTTON2:
    2429 //          button = Qt::MidButton*4; //### XButton2;
    2430 //          break;
    2431 //      }
    2432 //    }
    24332352    state  = translateButtonState( SHORT2FROMMP(qmsg.mp2), type, button ); // button state
    24342353
     
    33613280                if ( !testWFlags( WStaticContents ) )
    33623281                    repaint( !testWFlags(WResizeNoErase) );
    3363 #if !defined (QT_PM_NO_WIDGETMASK)
    3364                 // Flush WM_PAINT messages here to update window contents
    3365                 // instantly while tracking the resize frame (normally these
    3366                 // messages are delivered after resizing is stopped for some
    3367                 // time). It makes resizing a bit slower but gives a better look
    3368                 // (no invalid window contents can be seen during resize).
    3369                 // The alternative could be to erase the background only
    3370                 // (similarly to Win32), but we need to do it for every
    3371                 // non-toplevel window, which can be also time-consuming
    3372                 WinUpdateWindow( winId() );
    3373 #endif
    33743282            } else {
    33753283                QResizeEvent *e = new QResizeEvent( newSize, oldSize );
Note: See TracChangeset for help on using the changeset viewer.