]> sigrok.org Git - pulseview.git/commitdiff
Ignore H-scroll events while scrollbar is begin updated.
authorJoel Holdsworth <redacted>
Sun, 31 Mar 2013 17:57:38 +0000 (18:57 +0100)
committerJoel Holdsworth <redacted>
Sun, 31 Mar 2013 17:57:38 +0000 (18:57 +0100)
This is an alternative approach to resolving bug 7.

pv/view/view.cpp
pv/view/view.h

index 34676334dc67867ba9b17fa064498232693e74e0..0f9edb3f39719d53a2d991f2a25383e89386e0e6 100644 (file)
@@ -70,6 +70,7 @@ View::View(SigSession &session, QWidget *parent) :
        _scale(1e-6),
        _offset(0),
        _v_offset(0),
+       _updating_scroll(false),
        _show_cursors(false),
        _cursors(pair<Cursor, Cursor>(Cursor(*this, 0.0),
                Cursor(*this, 1.0))),
@@ -210,6 +211,8 @@ void View::update_scroll()
 
        horizontalScrollBar()->setPageStep(areaSize.width());
 
+       _updating_scroll = true;
+
        if (length < MaxScrollValue) {
                horizontalScrollBar()->setRange(0, length);
                horizontalScrollBar()->setSliderPosition(offset);
@@ -219,6 +222,8 @@ void View::update_scroll()
                        _offset * MaxScrollValue / (_scale * length));
        }
 
+       _updating_scroll = false;
+
        // Set the vertical scrollbar
        verticalScrollBar()->setPageStep(areaSize.height());
        verticalScrollBar()->setRange(0,
@@ -290,6 +295,9 @@ void View::resizeEvent(QResizeEvent*)
 
 void View::h_scroll_value_changed(int value)
 {
+       if (_updating_scroll)
+               return;
+
        const int range = horizontalScrollBar()->maximum();
        if (range < MaxScrollValue)
                _offset = _scale * value;
index 5a10ee9ecea7be2b9dacd69c6bb964d0a215de23..980ccf1f61e8488d38dea381953ab15bb8d6d112 100644 (file)
@@ -154,6 +154,7 @@ private:
        double _offset;
 
        int _v_offset;
+       bool _updating_scroll;
 
        bool _show_cursors;
        std::pair<Cursor, Cursor> _cursors;