diff options
Diffstat (limited to 'dw')
-rw-r--r-- | dw/oofawarewidget.hh | 3 | ||||
-rw-r--r-- | dw/textblock.cc | 8 |
2 files changed, 10 insertions, 1 deletions
diff --git a/dw/oofawarewidget.hh b/dw/oofawarewidget.hh index e49cce14..8d18675e 100644 --- a/dw/oofawarewidget.hh +++ b/dw/oofawarewidget.hh @@ -249,7 +249,8 @@ public: core::DrawingContext *context); /** - * ... + * Update content in flow, down from `ref`. Uses e. g. when floats sizes have + * changed. */ virtual void updateReference (int ref); diff --git a/dw/textblock.cc b/dw/textblock.cc index f851fd4e..dbf6e8e1 100644 --- a/dw/textblock.cc +++ b/dw/textblock.cc @@ -3034,6 +3034,14 @@ void Textblock::queueDrawRange (int index1, int index2) void Textblock::updateReference (int ref) { + // The condition "(lines->size () > 0)" prevents CPU hogging in some cases, + // see devdoc/dw-miscellaneous.doc, "Relation between + // dw::core::Widget::markSizeChange and dw::core::Widget::queueResize". + // + // This condition is safe, since an implementation of + // dw::oof::OOFAwareWidget::updateReference should only affect content in + // flow, not widgets out of flow, like floats. + if (lines->size () > 0) queueResize (ref, false); } |