diff options
author | Sebastian Geerken <devnull@localhost> | 2014-10-23 14:47:36 +0200 |
---|---|---|
committer | Sebastian Geerken <devnull@localhost> | 2014-10-23 14:47:36 +0200 |
commit | 80898e60379898a69a09fa2bbfec02ae95c28ffd (patch) | |
tree | 9f921bc1d5674fa3587b4719de40786bc24cd77e /dw | |
parent | 9eaaa3b90cba69593ab664b552ac5f5e4a299140 (diff) |
Bugfix in drawing interruption.
Diffstat (limited to 'dw')
-rw-r--r-- | dw/oofawarewidget.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/dw/oofawarewidget.cc b/dw/oofawarewidget.cc index 8381fcd3..ed8fe693 100644 --- a/dw/oofawarewidget.cc +++ b/dw/oofawarewidget.cc @@ -355,12 +355,15 @@ Widget *OOFAwareWidget::draw (View *view, Rectangle *area, DBG_OBJ_ENTER ("draw", 0, "draw", "%d, %d, %d * %d", area->x, area->y, area->width, area->height); - OOFStackingIterator *osi = (OOFStackingIterator*)iteratorStack->getTop (); Widget *retWidget = NULL; - while (retWidget == NULL && osi->majorLevel < OOFStackingIterator::END) { - retWidget = drawLevel (view, area, iteratorStack, osi->majorLevel); - + while (retWidget == NULL && + ((OOFStackingIterator*)iteratorStack->getTop())->majorLevel + < OOFStackingIterator::END) { + retWidget = drawLevel (view, area, iteratorStack, + ((OOFStackingIterator*)iteratorStack->getTop()) + ->majorLevel); + if (retWidget) { if (retWidget->getParent () == this) { DBG_OBJ_MSGF ("draw", 1, "interrupted at %p, drawing seperately", @@ -381,12 +384,15 @@ Widget *OOFAwareWidget::draw (View *view, Rectangle *area, assert (retWidget2 == NULL); } - osi->registerWidgetDrawnAfterInterruption (retWidget); + ((OOFStackingIterator*)iteratorStack->getTop()) + ->registerWidgetDrawnAfterInterruption (retWidget); retWidget = NULL; // Continue with the current state of "iterator". DBG_OBJ_MSG ("draw", 1, "done with interruption"); } } else { + OOFStackingIterator* osi = + (OOFStackingIterator*)iteratorStack->getTop(); osi->majorLevel++; osi->minorLevel = osi->index = 0; } |