Use std::move in InsetText::updateBuffer for notes and friends

Avoid as much as possible to do full copies of all counters, since
that can be expensive. Unfortunately, it is only posible when we want
to restore the saved counters.

An earlier version (05d3a649) defined swap() for Counter, but caused
problems on windows.

Part of bug #5973.
This commit is contained in:
Jean-Marc Lasgouttes 2018-09-18 23:18:17 +02:00
parent f5f2f5b7ea
commit 82516e356b

View File

@ -814,13 +814,13 @@ void InsetText::updateBuffer(ParIterator const & it, UpdateType utype)
// Note that we do not need to call:
// tclass.counters().clearLastLayout()
// since we are saving and restoring the existing counters, etc.
Counters const savecnt = tclass.counters();
Counters savecnt = tclass.counters();
tclass.counters().reset();
// we need float information even in note insets (#9760)
tclass.counters().current_float(savecnt.current_float());
tclass.counters().isSubfloat(savecnt.isSubfloat());
buffer().updateBuffer(it2, utype);
tclass.counters() = savecnt;
tclass.counters() = move(savecnt);
}
}