From 83ad020bda7b70ad6d57bf0cfa935b7d90e8adcc Mon Sep 17 00:00:00 2001 From: dreamsourcelabTAI Date: Tue, 14 Jun 2022 11:14:09 +0800 Subject: [PATCH] fix: decoder dialog scroll bar --- DSView/pv/dialogs/decoderoptionsdlg.cpp | 2 +- DSView/pv/prop/binding/binding.cpp | 11 +++++++++-- DSView/pv/prop/binding/binding.h | 8 ++++++++ DSView/pv/prop/binding/decoderoptions.cpp | 5 ++--- DSView/pv/prop/binding/probeoptions.cpp | 4 ++-- DSView/pv/widgets/decodergroupbox.cpp | 6 ++++++ DSView/pv/widgets/decodergroupbox.h | 5 +++++ 7 files changed, 33 insertions(+), 8 deletions(-) diff --git a/DSView/pv/dialogs/decoderoptionsdlg.cpp b/DSView/pv/dialogs/decoderoptionsdlg.cpp index 50636bdf..b4cc9155 100644 --- a/DSView/pv/dialogs/decoderoptionsdlg.cpp +++ b/DSView/pv/dialogs/decoderoptionsdlg.cpp @@ -180,7 +180,7 @@ void DecoderOptionsDlg::load_options(view::DecodeTrace *trace, bool isNew) float sk = QGuiApplication::primaryScreen()->logicalDotsPerInch() / 96; int srcHeight = 600; - container_panel->setFixedHeight(_contentHeight); + container_panel->setFixedHeight(_contentHeight + 10); if (dlgHeight * sk > srcHeight) { diff --git a/DSView/pv/prop/binding/binding.cpp b/DSView/pv/prop/binding/binding.cpp index 4d861370..99708538 100755 --- a/DSView/pv/prop/binding/binding.cpp +++ b/DSView/pv/prop/binding/binding.cpp @@ -36,6 +36,10 @@ const std::vector& Binding::properties() return _properties; } +Binding::Binding(){ + _row_num = 0; +} + void Binding::commit() { for(auto &p : _properties) { @@ -55,15 +59,18 @@ void Binding::add_properties_to_form(QFormLayout *layout, QWidget *const widget = p->get_widget(layout->parentWidget(), auto_commit); - if (p->labeled_widget()) + if (p->labeled_widget()){ layout->addRow(widget); + _row_num++; + } else{ const QString &lbstr = p->label(); //remove data format options if (lbstr == "Data format"){ continue; } - layout->addRow(p->label(), widget); + layout->addRow(p->label(), widget); + _row_num++; } } } diff --git a/DSView/pv/prop/binding/binding.h b/DSView/pv/prop/binding/binding.h index 68bae0d7..a3c7e7b2 100755 --- a/DSView/pv/prop/binding/binding.h +++ b/DSView/pv/prop/binding/binding.h @@ -44,6 +44,8 @@ namespace binding { class Binding { public: + Binding(); + const std::vector& properties(); void commit(); @@ -58,10 +60,16 @@ public: static QString print_gvariant(GVariant *const gvar); + inline int get_row_count(){ + return _row_num; + } + protected: std::vector _properties; QWidget *_form; + + int _row_num; }; } // binding diff --git a/DSView/pv/prop/binding/decoderoptions.cpp b/DSView/pv/prop/binding/decoderoptions.cpp index e7162ff0..1ca3d80a 100755 --- a/DSView/pv/prop/binding/decoderoptions.cpp +++ b/DSView/pv/prop/binding/decoderoptions.cpp @@ -39,9 +39,8 @@ namespace pv { namespace prop { namespace binding { -DecoderOptions::DecoderOptions( - pv::data::DecoderStack* decoder_stack, - data::decode::Decoder *decoder) : +DecoderOptions::DecoderOptions(pv::data::DecoderStack* decoder_stack, data::decode::Decoder *decoder) : + Binding(), _decoder_stack(decoder_stack), _decoder(decoder) { diff --git a/DSView/pv/prop/binding/probeoptions.cpp b/DSView/pv/prop/binding/probeoptions.cpp index ea665886..76fdb81a 100755 --- a/DSView/pv/prop/binding/probeoptions.cpp +++ b/DSView/pv/prop/binding/probeoptions.cpp @@ -40,8 +40,8 @@ namespace pv { namespace prop { namespace binding { -ProbeOptions::ProbeOptions(struct sr_dev_inst *sdi, - struct sr_channel *probe) : +ProbeOptions::ProbeOptions(struct sr_dev_inst *sdi, struct sr_channel *probe) : + Binding(), _sdi(sdi), _probe(probe) { diff --git a/DSView/pv/widgets/decodergroupbox.cpp b/DSView/pv/widgets/decodergroupbox.cpp index 20fa6f22..b25af709 100755 --- a/DSView/pv/widgets/decodergroupbox.cpp +++ b/DSView/pv/widgets/decodergroupbox.cpp @@ -48,6 +48,8 @@ DecoderGroupBox::DecoderGroupBox(data::DecoderStack *decoder_stack, QWidget *parent) : QWidget(parent) { + _row_num = 0; + _dec = dec; _decoder_stack = decoder_stack; _widget = new QWidget(this); @@ -88,6 +90,8 @@ DecoderGroupBox::DecoderGroupBox(data::DecoderStack *decoder_stack, _layout->addWidget(_show_button, 0, 2); + _row_num++; + // add row show/hide int index = 0; @@ -107,6 +111,8 @@ DecoderGroupBox::DecoderGroupBox(data::DecoderStack *decoder_stack, _layout->addWidget(show_button, _row_show_button.size(), 2); } index++; + + _row_num++; } _layout->addLayout(dec_layout, _row_show_button.size()+1, 0, 1, 3); diff --git a/DSView/pv/widgets/decodergroupbox.h b/DSView/pv/widgets/decodergroupbox.h index 05bab08b..414b852f 100755 --- a/DSView/pv/widgets/decodergroupbox.h +++ b/DSView/pv/widgets/decodergroupbox.h @@ -52,6 +52,10 @@ public: ~DecoderGroupBox(); bool eventFilter(QObject *o, QEvent *e); + inline int get_row_count(){ + return _row_num; + } + signals: void show_hide_decoder(); void show_hide_row(); @@ -72,6 +76,7 @@ private: QPushButton *_del_button; QPushButton *_show_button; std::list _row_show_button; + int _row_num; }; } // widgets