diff --git a/DSView/pv/view/decodetrace.cpp b/DSView/pv/view/decodetrace.cpp index 8b870721..d08627ea 100644 --- a/DSView/pv/view/decodetrace.cpp +++ b/DSView/pv/view/decodetrace.cpp @@ -710,8 +710,10 @@ QComboBox* DecodeTrace::create_probe_selector( { selector->addItem(s->get_name(), qVariantFromValue((void*)s.get())); - if ((*probe_iter).second == s) - selector->setCurrentIndex(i + 1); + if (probe_iter != dec->channels().end()) { + if ((*probe_iter).second->get_index() == s->get_index()) + selector->setCurrentIndex(i + 1); + } } } diff --git a/DSView/pv/view/viewport.cpp b/DSView/pv/view/viewport.cpp index 4af34e18..16e7dcf8 100644 --- a/DSView/pv/view/viewport.cpp +++ b/DSView/pv/view/viewport.cpp @@ -381,10 +381,11 @@ void Viewport::mousePressEvent(QMouseEvent *event) const double samples_per_pixel = _view.session().get_device()->get_sample_rate() * _view.scale(); while (i != _view.get_cursorList().end()) { cursorX = (*i)->index()/samples_per_pixel - (_view.offset() / _view.scale()); - if ((*i)->grabbed()) + if ((*i)->grabbed()) { _view.get_ruler()->rel_grabbed_cursor(); - else if (qAbs(cursorX - event->pos().x()) <= HitCursorMargin) { + } else if (qAbs(cursorX - event->pos().x()) <= HitCursorMargin) { _view.get_ruler()->set_grabbed_cursor(*i); + _measure_type = LOGIC_CURS; break; } i++; @@ -521,7 +522,8 @@ void Viewport::mouseReleaseEvent(QMouseEvent *event) if(_drag_sig) _drag_sig.reset(); - if (_view.session().get_device()->dev_inst()->mode == LOGIC && + if ((_measure_type != LOGIC_MOVE && _measure_type != LOGIC_CURS) && + _view.session().get_device()->dev_inst()->mode == LOGIC && _mouse_down_point.x() == event->pos().x() && event->button() & Qt::LeftButton) { if (_measure_type == LOGIC_EDGE) { @@ -529,14 +531,14 @@ void Viewport::mouseReleaseEvent(QMouseEvent *event) _measure_shown = false; _edge_rising = 0; _edge_falling = 0; - } else if (_measure_type != LOGIC_MOVE) { + } else { _measure_type = LOGIC_EDGE; _edge_start = (_view.offset() + (event->pos().x() + 0.5) * _view.scale()) * _view.session().get_device()->get_sample_rate(); } } if (_view.session().get_device()->dev_inst()->mode == LOGIC && - _measure_type != LOGIC_EDGE) { + (_measure_type == NO_MEASURE || _measure_type == LOGIC_MOVE)) { const double strength = _drag_strength*DragTimerInterval*1.0/_time.elapsed(); if (_time.elapsed() < 200 && abs(_drag_strength) < MinorDragOffsetUp && @@ -556,6 +558,9 @@ void Viewport::mouseReleaseEvent(QMouseEvent *event) } } + if (!_view.get_ruler()->get_grabbed_cursor() && _measure_type == LOGIC_CURS) + _measure_type = NO_MEASURE; + update(); } diff --git a/DSView/pv/view/viewport.h b/DSView/pv/view/viewport.h index 9c0da6be..f74a3b17 100644 --- a/DSView/pv/view/viewport.h +++ b/DSView/pv/view/viewport.h @@ -59,6 +59,7 @@ public: LOGIC_FREQ, LOGIC_EDGE, LOGIC_MOVE, + LOGIC_CURS, DSO_FREQ }; diff --git a/libsigrok4DSL/hardware/DSL/dsl.h b/libsigrok4DSL/hardware/DSL/dsl.h index 9f1bbf73..2a693e70 100644 --- a/libsigrok4DSL/hardware/DSL/dsl.h +++ b/libsigrok4DSL/hardware/DSL/dsl.h @@ -61,8 +61,8 @@ #define MAX_ANALOG_PROBES_NUM 9 #define MAX_DSO_PROBES_NUM 2 -#define DEFAULT_SAMPLERATE SR_MHZ(100) -#define DEFAULT_SAMPLELIMIT SR_MB(16) +#define DEFAULT_SAMPLERATE SR_MHZ(1) +#define DEFAULT_SAMPLELIMIT SR_MB(1) #define VPOS_MINISTEP 0.083 #define VPOS_STEP 26.0