forked from qt-creator/qt-creator
Timeline: Be more exact about height of model aggregator
Only emit the change signal if the height has actually changed. Change-Id: Ic4bf67f25cb4a7f204815b4e6b0c6bd88c71944a Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
This commit is contained in:
@@ -53,10 +53,6 @@ TimelineModelAggregator::TimelineModelAggregator(TimelineNotesModel *notes, QObj
|
|||||||
: QObject(parent), d(new TimelineModelAggregatorPrivate(this))
|
: QObject(parent), d(new TimelineModelAggregatorPrivate(this))
|
||||||
{
|
{
|
||||||
d->notesModel = notes;
|
d->notesModel = notes;
|
||||||
connect(this, &TimelineModelAggregator::modelsChanged,
|
|
||||||
this, &TimelineModelAggregator::heightChanged);
|
|
||||||
connect(this, &TimelineModelAggregator::stateChanged,
|
|
||||||
this, &TimelineModelAggregator::heightChanged);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TimelineModelAggregator::~TimelineModelAggregator()
|
TimelineModelAggregator::~TimelineModelAggregator()
|
||||||
@@ -76,6 +72,8 @@ void TimelineModelAggregator::addModel(TimelineModel *m)
|
|||||||
if (d->notesModel)
|
if (d->notesModel)
|
||||||
d->notesModel->addTimelineModel(m);
|
d->notesModel->addTimelineModel(m);
|
||||||
emit modelsChanged();
|
emit modelsChanged();
|
||||||
|
if (m->height() != 0)
|
||||||
|
emit heightChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
const TimelineModel *TimelineModelAggregator::model(int modelIndex) const
|
const TimelineModel *TimelineModelAggregator::model(int modelIndex) const
|
||||||
@@ -98,10 +96,13 @@ TimelineNotesModel *TimelineModelAggregator::notes() const
|
|||||||
|
|
||||||
void TimelineModelAggregator::clear()
|
void TimelineModelAggregator::clear()
|
||||||
{
|
{
|
||||||
|
int prevHeight = height();
|
||||||
d->modelList.clear();
|
d->modelList.clear();
|
||||||
if (d->notesModel)
|
if (d->notesModel)
|
||||||
d->notesModel->clear();
|
d->notesModel->clear();
|
||||||
emit modelsChanged();
|
emit modelsChanged();
|
||||||
|
if (height() != prevHeight)
|
||||||
|
emit heightChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
int TimelineModelAggregator::modelOffset(int modelIndex) const
|
int TimelineModelAggregator::modelOffset(int modelIndex) const
|
||||||
|
@@ -54,13 +54,17 @@ void tst_TimelineModelAggregator::height()
|
|||||||
Timeline::TimelineModelAggregator aggregator(0);
|
Timeline::TimelineModelAggregator aggregator(0);
|
||||||
QCOMPARE(aggregator.height(), 0);
|
QCOMPARE(aggregator.height(), 0);
|
||||||
|
|
||||||
|
QSignalSpy heightSpy(&aggregator, SIGNAL(heightChanged()));
|
||||||
Timeline::TimelineModel *model = new Timeline::TimelineModel(25, QString());
|
Timeline::TimelineModel *model = new Timeline::TimelineModel(25, QString());
|
||||||
aggregator.addModel(model);
|
aggregator.addModel(model);
|
||||||
QCOMPARE(aggregator.height(), 0);
|
QCOMPARE(aggregator.height(), 0);
|
||||||
|
QCOMPARE(heightSpy.count(), 0);
|
||||||
aggregator.addModel(new HeightTestModel);
|
aggregator.addModel(new HeightTestModel);
|
||||||
QVERIFY(aggregator.height() > 0);
|
QVERIFY(aggregator.height() > 0);
|
||||||
|
QCOMPARE(heightSpy.count(), 1);
|
||||||
aggregator.clear();
|
aggregator.clear();
|
||||||
QCOMPARE(aggregator.height(), 0);
|
QCOMPARE(aggregator.height(), 0);
|
||||||
|
QCOMPARE(heightSpy.count(), 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_TimelineModelAggregator::addRemoveModel()
|
void tst_TimelineModelAggregator::addRemoveModel()
|
||||||
|
Reference in New Issue
Block a user