projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't retain uneeded pointers to UI elements
[pulseview.git]
/
pv
/
popups
/
probes.cpp
diff --git
a/pv/popups/probes.cpp
b/pv/popups/probes.cpp
index 5499df62cd9496dc141ee3ef5cc2a45fb596b69a..51ba3ddca8b2744bfd60e89a109906ab741f60dd 100644
(file)
--- a/
pv/popups/probes.cpp
+++ b/
pv/popups/probes.cpp
@@
-35,6
+35,7
@@
Probes::Probes(SigSession &session, QWidget *parent) :
_session(session),
_layout(this),
_probes(this),
_session(session),
_layout(this),
_probes(this),
+ _updating_probes(false),
_probes_bar(this),
_enable_all_probes(this),
_disable_all_probes(this)
_probes_bar(this),
_enable_all_probes(this),
_disable_all_probes(this)
@@
-56,27
+57,39
@@
Probes::Probes(SigSession &session, QWidget *parent) :
_layout.addWidget(&_probes_bar);
_layout.addWidget(&_probes_bar);
+ connect(&_probes, SIGNAL(itemChanged(QListWidgetItem*)),
+ this, SLOT(item_changed(QListWidgetItem*)));
+}
+
+void Probes::set_all_probes(bool set)
+{
+ using pv::view::Signal;
+
+ _updating_probes = true;
+
const vector< shared_ptr<pv::view::Signal> > sigs =
_session.get_signals();
for (unsigned int i = 0; i < sigs.size(); i++)
{
const shared_ptr<pv::view::Signal> &s = sigs[i];
assert(s);
const vector< shared_ptr<pv::view::Signal> > sigs =
_session.get_signals();
for (unsigned int i = 0; i < sigs.size(); i++)
{
const shared_ptr<pv::view::Signal> &s = sigs[i];
assert(s);
- QListWidgetItem *const item = new QListWidgetItem(
- s->get_name(), &_probes);
+ s->enable(set);
+
+ QListWidgetItem *const item = _probes.item(i);
assert(item);
assert(item);
- item->setData(UserRole, qVariantFromValue(i));
- item->setCheckState(s->enabled() ? Checked : Unchecked);
- _probes.addItem(item);
+ item->setCheckState(set ? Qt::Checked : Qt::Unchecked);
}
}
- connect(&_probes, SIGNAL(itemChanged(QListWidgetItem*)),
- this, SLOT(item_changed(QListWidgetItem*)));
+ _updating_probes = false;
}
}
-void Probes::s
et_all_probes(bool set
)
+void Probes::s
howEvent(QShowEvent *e
)
{
{
- using pv::view::Signal;
+ pv::widgets::Popup::showEvent(e);
+
+ _updating_probes = true;
+
+ _probes.clear();
const vector< shared_ptr<pv::view::Signal> > sigs =
_session.get_signals();
const vector< shared_ptr<pv::view::Signal> > sigs =
_session.get_signals();
@@
-84,18
+97,24
@@
void Probes::set_all_probes(bool set)
{
const shared_ptr<pv::view::Signal> &s = sigs[i];
assert(s);
{
const shared_ptr<pv::view::Signal> &s = sigs[i];
assert(s);
- s->enable(set);
-
- QListWidgetItem *const item = _probes.item(i);
+ QListWidgetItem *const item = new QListWidgetItem(
+ s->get_name(), &_probes);
assert(item);
assert(item);
- item->setCheckState(set ? Qt::Checked : Qt::Unchecked);
+ item->setCheckState(s->enabled() ? Checked : Unchecked);
+ item->setData(UserRole, qVariantFromValue(i));
+ _probes.addItem(item);
}
}
+
+ _updating_probes = false;
}
void Probes::item_changed(QListWidgetItem *item)
{
using pv::view::Signal;
}
void Probes::item_changed(QListWidgetItem *item)
{
using pv::view::Signal;
+ if (_updating_probes)
+ return;
+
assert(item);
const vector< shared_ptr<pv::view::Signal> > sigs =
_session.get_signals();
assert(item);
const vector< shared_ptr<pv::view::Signal> > sigs =
_session.get_signals();