Changeset 8127 in ntrip for trunk/BNC/qwt/qwt_panner.cpp


Ignore:
Timestamp:
May 10, 2017, 3:20:54 PM (7 years ago)
Author:
stoecker
Message:

update qwt and qwtpolar, many QT5 fixes (unfinished)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/qwt/qwt_panner.cpp

    r4271 r8127  
    1010#include "qwt_panner.h"
    1111#include "qwt_picker.h"
     12#include "qwt_painter.h"
    1213#include <qpainter.h>
    1314#include <qpixmap.h>
     
    2324    for ( int i = 0; i < children.size(); i++ )
    2425    {
    25         QObject *obj = children[i];
    26         if ( obj->inherits( "QwtPicker" ) )
    27         {
    28             QwtPicker *picker = ( QwtPicker * )obj;
    29             if ( picker->isEnabled() )
    30                 pickers += picker;
    31         }
     26        QwtPicker *picker = qobject_cast<QwtPicker *>( children[i] );
     27        if ( picker && picker->isEnabled() )
     28            pickers += picker;
    3229    }
    3330
     
    4037    PrivateData():
    4138        button( Qt::LeftButton ),
    42         buttonState( Qt::NoButton ),
     39        buttonModifiers( Qt::NoModifier ),
    4340        abortKey( Qt::Key_Escape ),
    44         abortKeyState( Qt::NoButton ),
     41        abortKeyModifiers( Qt::NoModifier ),
    4542#ifndef QT_NO_CURSOR
    4643        cursor( NULL ),
     
    6158    }
    6259
    63     int button;
    64     int buttonState;
     60    Qt::MouseButton button;
     61    Qt::KeyboardModifiers  buttonModifiers;
     62
    6563    int abortKey;
    66     int abortKeyState;
     64    Qt::KeyboardModifiers abortKeyModifiers;
    6765
    6866    QPoint initialPos;
     
    106104
    107105/*!
    108    Change the mouse button
    109    The defaults are Qt::LeftButton and Qt::NoButton
    110 */
    111 void QwtPanner::setMouseButton( int button, int buttonState )
     106   Change the mouse button and modifiers used for panning
     107   The defaults are Qt::LeftButton and Qt::NoModifier
     108*/
     109void QwtPanner::setMouseButton( Qt::MouseButton button,
     110    Qt::KeyboardModifiers modifiers )
    112111{
    113112    d_data->button = button;
    114     d_data->buttonState = buttonState;
    115 }
    116 
    117 //! Get the mouse button
    118 void QwtPanner::getMouseButton( int &button, int &buttonState ) const
     113    d_data->buttonModifiers = modifiers;
     114}
     115
     116//! Get mouse button and modifiers used for panning
     117void QwtPanner::getMouseButton( Qt::MouseButton &button,
     118    Qt::KeyboardModifiers &modifiers ) const
    119119{
    120120    button = d_data->button;
    121     buttonState = d_data->buttonState;
     121    modifiers = d_data->buttonModifiers;
    122122}
    123123
    124124/*!
    125125   Change the abort key
    126    The defaults are Qt::Key_Escape and Qt::NoButton
     126   The defaults are Qt::Key_Escape and Qt::NoModifiers
    127127
    128128   \param key Key ( See Qt::Keycode )
    129    \param state State
    130 */
    131 void QwtPanner::setAbortKey( int key, int state )
     129   \param modifiers Keyboard modifiers
     130*/
     131void QwtPanner::setAbortKey( int key,
     132    Qt::KeyboardModifiers modifiers )
    132133{
    133134    d_data->abortKey = key;
    134     d_data->abortKeyState = state;
    135 }
    136 
    137 //! Get the abort key
    138 void QwtPanner::getAbortKey( int &key, int &state ) const
     135    d_data->abortKeyModifiers = modifiers;
     136}
     137
     138//! Get the abort key and modifiers
     139void QwtPanner::getAbortKey( int &key,
     140    Qt::KeyboardModifiers &modifiers ) const
    139141{
    140142    key = d_data->abortKey;
    141     state = d_data->abortKeyState;
     143    modifiers = d_data->abortKeyModifiers;
    142144}
    143145
     
    223225
    224226/*!
    225    Return true if a orientatio is enabled
     227   \return True if an orientation is enabled
    226228   \sa orientations(), setOrientations()
    227229*/
     
    257259
    258260    QPixmap pm( size() );
    259     pm.fill( parentWidget(), 0, 0 );
     261    QwtPainter::fillPixmap( parentWidget(), pm );
    260262
    261263    QPainter painter( &pm );
     
    298300/*!
    299301  Grab the widget into a pixmap.
     302  \return Grabbed pixmap
    300303*/
    301304QPixmap QwtPanner::grab() const
    302305{
     306#if QT_VERSION >= 0x050000
     307    return parentWidget()->grab( parentWidget()->rect() );
     308#else
    303309    return QPixmap::grabWidget( parentWidget() );
     310#endif
    304311}
    305312
     
    307314  \brief Event filter
    308315
    309   When isEnabled() the mouse events of the observed widget are filtered.
     316  When isEnabled() is true mouse events of the
     317  observed widget are filtered.
    310318
    311319  \param object Object to be filtered
    312320  \param event Event
    313321
     322  \return Always false, beside for paint events for the
     323          parent widget.
     324
    314325  \sa widgetMousePressEvent(), widgetMouseReleaseEvent(),
    315326      widgetMouseMoveEvent()
     
    324335        case QEvent::MouseButtonPress:
    325336        {
    326             widgetMousePressEvent( ( QMouseEvent * )event );
     337            widgetMousePressEvent( static_cast<QMouseEvent *>( event ) );
    327338            break;
    328339        }
    329340        case QEvent::MouseMove:
    330341        {
    331             widgetMouseMoveEvent( ( QMouseEvent * )event );
     342            widgetMouseMoveEvent( static_cast<QMouseEvent *>( event ) );
    332343            break;
    333344        }
    334345        case QEvent::MouseButtonRelease:
    335346        {
    336             widgetMouseReleaseEvent( ( QMouseEvent * )event );
     347            widgetMouseReleaseEvent( static_cast<QMouseEvent *>( event ) );
    337348            break;
    338349        }
    339350        case QEvent::KeyPress:
    340351        {
    341             widgetKeyPressEvent( ( QKeyEvent * )event );
     352            widgetKeyPressEvent( static_cast<QKeyEvent *>( event ) );
    342353            break;
    343354        }
    344355        case QEvent::KeyRelease:
    345356        {
    346             widgetKeyReleaseEvent( ( QKeyEvent * )event );
     357            widgetKeyReleaseEvent( static_cast<QKeyEvent *>( event ) );
    347358            break;
    348359        }
     
    368379void QwtPanner::widgetMousePressEvent( QMouseEvent *mouseEvent )
    369380{
    370     if ( mouseEvent->button() != d_data->button )
     381    if ( ( mouseEvent->button() != d_data->button )
     382        || ( mouseEvent->modifiers() != d_data->buttonModifiers ) )
     383    {
    371384        return;
     385    }
    372386
    373387    QWidget *w = parentWidget();
     
    375389        return;
    376390
    377     if ( ( mouseEvent->modifiers() & Qt::KeyboardModifierMask ) !=
    378         ( int )( d_data->buttonState & Qt::KeyboardModifierMask ) )
    379     {
    380         return;
    381     }
    382 
    383391#ifndef QT_NO_CURSOR
    384392    showCursor( true );
     
    391399    // We don't want to grab the picker !
    392400    QVector<QwtPicker *> pickers = qwtActivePickers( parentWidget() );
    393     for ( int i = 0; i < ( int )pickers.size(); i++ )
     401    for ( int i = 0; i < pickers.size(); i++ )
    394402        pickers[i]->setEnabled( false );
    395403
     
    397405    d_data->contentsMask = contentsMask();
    398406
    399     for ( int i = 0; i < ( int )pickers.size(); i++ )
     407    for ( int i = 0; i < pickers.size(); i++ )
    400408        pickers[i]->setEnabled( true );
    401409
     
    472480void QwtPanner::widgetKeyPressEvent( QKeyEvent *keyEvent )
    473481{
    474     if ( keyEvent->key() == d_data->abortKey )
    475     {
    476         const bool matched =
    477             ( keyEvent->modifiers() & Qt::KeyboardModifierMask ) ==
    478                 ( int )( d_data->abortKeyState & Qt::KeyboardModifierMask );
    479         if ( matched )
    480         {
    481             hide();
    482 #ifndef QT_NO_CURSOR
    483             showCursor( false );
    484 #endif
    485             d_data->pixmap = QPixmap();
    486         }
     482    if ( ( keyEvent->key() == d_data->abortKey )
     483        && ( keyEvent->modifiers() == d_data->abortKeyModifiers ) )
     484    {
     485        hide();
     486
     487#ifndef QT_NO_CURSOR
     488        showCursor( false );
     489#endif
     490        d_data->pixmap = QPixmap();
    487491    }
    488492}
Note: See TracChangeset for help on using the changeset viewer.