summaryrefslogtreecommitdiff
path: root/dw/stackingcontextmgr.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/stackingcontextmgr.cc
parent3afc8db366cdfed92f5c53a606cfc82e551c9084 (diff)
More work on drawing: interruptions work now halfway.
Diffstat (limited to 'dw/stackingcontextmgr.cc')
-rw-r--r--dw/stackingcontextmgr.cc26
1 files changed, 14 insertions, 12 deletions
diff --git a/dw/stackingcontextmgr.cc b/dw/stackingcontextmgr.cc
index c104f5ee..70b4dd75 100644
--- a/dw/stackingcontextmgr.cc
+++ b/dw/stackingcontextmgr.cc
@@ -61,34 +61,33 @@ void StackingContextMgr::addChildSCWidget (Widget *widget)
}
Widget *StackingContextMgr::drawBottom (View *view, Rectangle *area,
- lout::container::untyped::Stack
- *iterator,
+ StackingIteratorStack *iteratorStack,
int *zIndexOffset, int *index)
{
DBG_OBJ_ENTER ("draw", 0, "drawBottom", "(%d, %d, %d * %d), [%d], [%d]",
area->x, area->y, area->width, area->height, *zIndexOffset,
*index);
Widget *retWidget =
- draw (view, area, iterator, index, INT_MIN, -1, zIndexOffset);
+ draw (view, area, iteratorStack, index, INT_MIN, -1, zIndexOffset);
DBG_OBJ_LEAVE ();
return retWidget;
}
Widget *StackingContextMgr::drawTop (View *view, Rectangle *area,
- lout::container::untyped::Stack *iterator,
+ StackingIteratorStack *iteratorStack,
int *zIndexOffset, int *index)
{
DBG_OBJ_ENTER ("draw", 0, "drawTop", "(%d, %d, %d * %d), [%d], [%d]",
area->x, area->y, area->width, area->height, *zIndexOffset,
*index);
Widget *retWidget =
- draw (view, area, iterator, index, 0, INT_MAX, zIndexOffset);
+ draw (view, area, iteratorStack, index, 0, INT_MAX, zIndexOffset);
DBG_OBJ_LEAVE ();
return retWidget;
}
Widget *StackingContextMgr::draw (View *view, Rectangle *area,
- lout::container::untyped::Stack *iterator,
+ StackingIteratorStack *iteratorStack,
int *zIndexOffset, int startZIndex,
int endZIndex, int *index)
{
@@ -102,24 +101,27 @@ Widget *StackingContextMgr::draw (View *view, Rectangle *area,
Widget *retWidget = NULL;
int startZIndexEff = max (minZIndex, startZIndex),
endZIndexEff = min (maxZIndex, endZIndex);
- for (; retWidget == NULL && *zIndexOffset + startZIndexEff <= endZIndexEff;
- (*zIndexOffset)++) {
+ while (retWidget == NULL && *zIndexOffset + startZIndexEff <= endZIndexEff) {
DBG_OBJ_MSGF ("draw", 1, "drawing zIndex = %d + %d",
*zIndexOffset, startZIndexEff);
DBG_OBJ_MSG_START ();
- // TODO This is wrong.
- for (; retWidget == NULL && *index < childSCWidgets->size ();
- (*index)++) {
+ while (retWidget == NULL && *index < childSCWidgets->size ()) {
Widget *child = childSCWidgets->get (*index);
DBG_OBJ_MSGF ("draw", 2, "widget %p has zIndex = %d",
child, child->getStyle()->zIndex);
Rectangle childArea;
if (child->getStyle()->zIndex == *zIndexOffset + startZIndexEff &&
child->intersects (area, &childArea))
- retWidget = child->drawTotal (view, &childArea, iterator);
+ retWidget = child->drawTotal (view, &childArea, iteratorStack);
+
+ if (retWidget == NULL)
+ (*index)++;
}
+ if (retWidget == NULL)
+ (*zIndexOffset)++;
+
DBG_OBJ_MSG_END ();
}