diff options
author | Sebastian Geerken <devnull@localhost> | 2014-10-23 12:29:38 +0200 |
---|---|---|
committer | Sebastian Geerken <devnull@localhost> | 2014-10-23 12:29:38 +0200 |
commit | d39956a7b0a38ebeda147d52aa734e992c425d9f (patch) | |
tree | aa66d82bb61a4c38ff0de04bec8dad62d69f6294 /dw/table.cc | |
parent | 3afc8db366cdfed92f5c53a606cfc82e551c9084 (diff) |
More work on drawing: interruptions work now halfway.
Diffstat (limited to 'dw/table.cc')
-rw-r--r-- | dw/table.cc | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/dw/table.cc b/dw/table.cc index f9858ddd..3e53ec58 100644 --- a/dw/table.cc +++ b/dw/table.cc @@ -357,7 +357,7 @@ bool Table::isBlockLevel () } core::Widget *Table::drawLevel (core::View *view, core::Rectangle *area, - lout::container::untyped::Stack *iterator, + core::StackingIteratorStack *iteratorStack, int majorLevel) { DBG_OBJ_ENTER ("draw", 0, "Table/drawLevel", "(%d, %d, %d * %d), %s", @@ -386,19 +386,29 @@ core::Widget *Table::drawLevel (core::View *view, core::Rectangle *area, switch (majorLevel) { case OOFStackIterator::IN_FLOW: - for (int i = 0; retWidget == NULL && i < children->size (); i++) { - if (childDefined (i)) { - Widget *child = children->get(i)->cell.widget; - core::Rectangle childArea; - if (!core::StackingContextMgr::handledByStackingContextMgr (child) - && child->intersects (area, &childArea)) - retWidget = child->drawTotal (view, &childArea, iterator); + { + OOFStackIterator *osi = (OOFStackIterator*)iteratorStack->getTop (); + + while (retWidget == NULL && osi->index < children->size ()) { + if (childDefined (osi->index)) { + Widget *child = children->get(osi->index)->cell.widget; + core::Rectangle childArea; + if (!core::StackingContextMgr::handledByStackingContextMgr + (child) + && child->intersects (area, &childArea)) + retWidget = + child->drawTotal (view, &childArea, iteratorStack); + } + + if (retWidget == NULL) + osi->index++; } } break; default: - retWidget = OOFAwareWidget::drawLevel (view, area, iterator, majorLevel); + retWidget = + OOFAwareWidget::drawLevel (view, area, iteratorStack, majorLevel); break; } |