aboutsummaryrefslogtreecommitdiff
path: root/dw/oofpositionedmgr.cc
diff options
context:
space:
mode:
authorSebastian Geerken <devnull@localhost>2014-10-23 12:29:38 +0200
committerSebastian Geerken <devnull@localhost>2014-10-23 12:29:38 +0200
commitd39956a7b0a38ebeda147d52aa734e992c425d9f (patch)
treeaa66d82bb61a4c38ff0de04bec8dad62d69f6294 /dw/oofpositionedmgr.cc
parent3afc8db366cdfed92f5c53a606cfc82e551c9084 (diff)
More work on drawing: interruptions work now halfway.
Diffstat (limited to 'dw/oofpositionedmgr.cc')
-rw-r--r--dw/oofpositionedmgr.cc22
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);