aboutsummaryrefslogtreecommitdiff
path: root/dw/table.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dw/table.cc')
-rw-r--r--dw/table.cc43
1 files changed, 27 insertions, 16 deletions
diff --git a/dw/table.cc b/dw/table.cc
index 5e4083ff..f9858ddd 100644
--- a/dw/table.cc
+++ b/dw/table.cc
@@ -356,21 +356,24 @@ bool Table::isBlockLevel ()
return true;
}
-void Table::draw (core::View *view, core::Rectangle *area)
+core::Widget *Table::drawLevel (core::View *view, core::Rectangle *area,
+ lout::container::untyped::Stack *iterator,
+ int majorLevel)
{
- DBG_OBJ_ENTER ("draw", 0, "draw", "%d, %d, %d * %d",
- area->x, area->y, area->width, area->height);
+ DBG_OBJ_ENTER ("draw", 0, "Table/drawLevel", "(%d, %d, %d * %d), %s",
+ area->x, area->y, area->width, area->height,
+ OOFStackIterator::majorLevelText (majorLevel));
- // Can be optimized, by iterating on the lines in area.
- drawWidgetBox (view, area, false);
+ Widget *retWidget = NULL;
#if 0
+ // This old code belongs perhaps to the background. Check when reactivated.
int offx = getStyle()->boxOffsetX () + getStyle()->hBorderSpacing;
int offy = getStyle()->boxOffsetY () + getStyle()->vBorderSpacing;
int width = getContentWidth ();
-
+
// This part seems unnecessary. It also segfaulted sometimes when
- // cumHeight size was less than numRows. --jcid
+ // cumHeight size was less than numRows. --jcid
for (int row = 0; row < numRows; row++) {
if (rowStyle->get (row))
drawBox (view, rowStyle->get (row), area,
@@ -381,19 +384,27 @@ void Table::draw (core::View *view, core::Rectangle *area)
}
#endif
- for (int i = 0; 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))
- child->draw (view, &childArea);
+ 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);
+ }
}
- }
+ break;
- drawOOF (view, area);
+ default:
+ retWidget = OOFAwareWidget::drawLevel (view, area, iterator, majorLevel);
+ break;
+ }
+ DBG_OBJ_MSGF ("draw", 1, "=> %p", retWidget);
DBG_OBJ_LEAVE ();
+ return retWidget;
}
void Table::removeChild (Widget *child)