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/oofpositionedmgr.cc | |
parent | 3afc8db366cdfed92f5c53a606cfc82e551c9084 (diff) |
More work on drawing: interruptions work now halfway.
Diffstat (limited to 'dw/oofpositionedmgr.cc')
-rw-r--r-- | dw/oofpositionedmgr.cc | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/dw/oofpositionedmgr.cc b/dw/oofpositionedmgr.cc index 07bc45aa..c0c31417 100644 --- a/dw/oofpositionedmgr.cc +++ b/dw/oofpositionedmgr.cc @@ -169,7 +169,7 @@ bool OOFPositionedMgr::haveExtremesChanged () Widget *OOFPositionedMgr::draw (View *view, Rectangle *area, - lout::container::untyped::Stack *iterator, + StackingIteratorStack *iteratorStack, int *index) { DBG_OBJ_ENTER ("draw", 0, "draw", "(%d, %d, %d * %d), [%d]", @@ -177,12 +177,20 @@ Widget *OOFPositionedMgr::draw (View *view, Rectangle *area, Widget *retWidget = NULL; - for (; retWidget == NULL && *index < children->size(); (*index)++) { - Widget *childWidget = children->get(*index)->widget; - Rectangle childArea; - if (!StackingContextMgr::handledByStackingContextMgr (childWidget) && - childWidget->intersects (area, &childArea)) - retWidget = childWidget->drawTotal (view, &childArea, iterator); + while (retWidget == NULL && *index < children->size()) { + Child *child = children->get(*index); + + if (!OOFAwareWidget:: doesWidgetOOFInterruptDrawing + (child->widget, child->generator, container)) { + Rectangle childArea; + if (!StackingContextMgr::handledByStackingContextMgr (child->widget) && + child->widget->intersects (area, &childArea)) + retWidget = + child->widget->drawTotal (view, &childArea, iteratorStack); + } + + if (retWidget == NULL) + (*index)++; } DBG_OBJ_MSGF ("draw", 1, "=> %p", retWidget); |