Changeset - 8a60379a2f32
[Not reviewed]
Hasan Yavuz Ă–ZDERYA - 9 years ago 2017-04-24 16:14:51
hy@ozderya.net
fix scrollbar glitch at start
1 file changed with 7 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/scrollzoomer.cpp
Show inline comments
 
@@ -220,48 +220,53 @@ void ScrollZoomer::setCornerWidget( QWid
 

	
 
QWidget *ScrollZoomer::cornerWidget() const
 
{
 
    return d_cornerWidget;
 
}
 

	
 
bool ScrollZoomer::eventFilter( QObject *object, QEvent *event )
 
{
 
    if ( object == canvas() )
 
    {
 
        switch( event->type() )
 
        {
 
            case QEvent::Resize:
 
            {
 
                int left, top, right, bottom;
 
                canvas()->getContentsMargins( &left, &top, &right, &bottom );
 

	
 
                QRect rect;
 
                rect.setSize( static_cast<QResizeEvent *>( event )->size() );
 
                rect.adjust( left, top, -right, -bottom );
 

	
 
                layoutScrollBars( rect );
 
                break;
 
            }
 
            case QEvent::Show:
 
            {
 
                layoutScrollBars( canvas()->contentsRect() );
 
                break;
 
            }
 
            case QEvent::ChildRemoved:
 
            {
 
                const QObject *child =
 
                    static_cast<QChildEvent *>( event )->child();
 

	
 
                if ( child == d_cornerWidget )
 
                    d_cornerWidget = NULL;
 
                else if ( child == d_hScrollData->scrollBar )
 
                    d_hScrollData->scrollBar = NULL;
 
                else if ( child == d_vScrollData->scrollBar )
 
                    d_vScrollData->scrollBar = NULL;
 
                break;
 
            }
 
            default:
 
                break;
 
        }
 
    }
 
    return QwtPlotZoomer::eventFilter( object, event );
 
}
 

	
 
bool ScrollZoomer::needScrollBar( Qt::Orientation orientation ) const
 
{
 
    Qt::ScrollBarPolicy mode;
 
    double zoomMin, zoomMax, baseMin, baseMax;
 
@@ -382,48 +387,50 @@ void ScrollZoomer::updateScrollBars()
 
    }
 

	
 
    if ( showHScrollBar && showVScrollBar )
 
    {
 
        if ( d_cornerWidget == NULL )
 
        {
 
            d_cornerWidget = new QWidget( canvas() );
 
            d_cornerWidget->setAutoFillBackground( true );
 
            d_cornerWidget->setPalette( plot()->palette() );
 
        }
 
        d_cornerWidget->show();
 
    }
 
    else
 
    {
 
        if ( d_cornerWidget )
 
            d_cornerWidget->hide();
 
    }
 

	
 
    layoutScrollBars( canvas()->contentsRect() );
 
    plot()->updateLayout();
 
}
 

	
 
void ScrollZoomer::layoutScrollBars( const QRect &rect )
 
{
 
    qDebug() << "layoutScrollBars" << rect;
 

	
 
    int hPos = xAxis();
 
    if ( hScrollBarPosition() == OppositeToScale )
 
        hPos = oppositeAxis( hPos );
 

	
 
    int vPos = yAxis();
 
    if ( vScrollBarPosition() == OppositeToScale )
 
        vPos = oppositeAxis( vPos );
 

	
 
    ScrollBar *hScrollBar = horizontalScrollBar();
 
    ScrollBar *vScrollBar = verticalScrollBar();
 

	
 
    const int hdim = hScrollBar ? hScrollBar->extent() : 0;
 
    const int vdim = vScrollBar ? vScrollBar->extent() : 0;
 

	
 
    if ( hScrollBar && hScrollBar->isVisible() )
 
    {
 
        int x = rect.x();
 
        int y = ( hPos == QwtPlot::xTop )
 
            ? rect.top() : rect.bottom() - hdim + 1;
 
        int w = rect.width();
 

	
 
        if ( vScrollBar && vScrollBar->isVisible() )
 
        {
 
            if ( vPos == QwtPlot::yLeft )
0 comments (0 inline, 0 general)