X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fdecodetrace.cpp;h=b4857336f9e6e1e350bc73e91ef6409bcc3f7e2e;hb=ded43869b4d6169b7f269af0623ef0a682e5b910;hp=b0395eaa05dc685828a6d31d3d69a1383be59361;hpb=20f59e957e70250cfb876ac7a1743134d6b83339;p=pulseview.git diff --git a/pv/views/trace/decodetrace.cpp b/pv/views/trace/decodetrace.cpp index b0395ea..b485733 100644 --- a/pv/views/trace/decodetrace.cpp +++ b/pv/views/trace/decodetrace.cpp @@ -248,11 +248,13 @@ void DecodeTrace::paint_mid(QPainter &p, ViewItemPaintParams &pp) // Draw the hatching draw_unresolved_period(p, annotation_height, pp.left(), pp.right()); - if ((int)visible_rows_.size() > max_visible_rows_) - owner_->extents_changed(false, true); + if ((int)visible_rows_.size() > max_visible_rows_) { + max_visible_rows_ = (int)visible_rows_.size(); - // Update the maximum row count if needed - max_visible_rows_ = max(max_visible_rows_, (int)visible_rows_.size()); + // Call order is important, otherwise the lazy event handler won't work + owner_->extents_changed(false, true); + owner_->row_item_appearance_changed(false, true); + } } void DecodeTrace::paint_fore(QPainter &p, ViewItemPaintParams &pp) @@ -716,6 +718,12 @@ void DecodeTrace::hover_point_changed() assert(view); QPoint hp = view->hover_point(); + + if (hp.x() == 0) { + QToolTip::hideText(); + return; + } + QString ann = get_annotation_at_point(hp); assert(view); @@ -942,6 +950,10 @@ void DecodeTrace::on_delete_decoder(int index) { decode_signal_->remove_decoder(index); + // Force re-calculation of the trace height, see paint_mid() + max_visible_rows_ = 0; + owner_->extents_changed(false, true); + // Update the popup create_popup_form(); } @@ -953,6 +965,12 @@ void DecodeTrace::on_show_hide_decoder(int index) assert(index < (int)decoder_forms_.size()); decoder_forms_[index]->set_decoder_visible(state); + if (!state) { + // Force re-calculation of the trace height, see paint_mid() + max_visible_rows_ = 0; + owner_->extents_changed(false, true); + } + if (owner_) owner_->row_item_appearance_changed(false, true); }