diff options
author | Sebastian Geerken <devnull@localhost> | 2015-01-23 23:20:59 +0100 |
---|---|---|
committer | Sebastian Geerken <devnull@localhost> | 2015-01-23 23:20:59 +0100 |
commit | cf581248257b88e98fa4315525a0ee531b4cb9c8 (patch) | |
tree | 73ecec5922d6ae58de09fb32ad4636cd6dedab17 /dw/table.cc | |
parent | e497d315b87a42184dce3f9b90e495b3a3806b14 (diff) |
Same simplifications for Widget::getWidgetAtPoint as for Widget::draw before.
Diffstat (limited to 'dw/table.cc')
-rw-r--r-- | dw/table.cc | 41 |
1 files changed, 14 insertions, 27 deletions
diff --git a/dw/table.cc b/dw/table.cc index 5570c853..9e493e51 100644 --- a/dw/table.cc +++ b/dw/table.cc @@ -415,49 +415,36 @@ bool Table::isBlockLevel () } core::Widget *Table::getWidgetAtPointLevel (int x, int y, - core::StackingIteratorStack - *iteratorStack, - Widget **interruptedWidget, - int majorLevel) + core::GettingWidgetAtPointContext + *context, + int level) { DBG_OBJ_ENTER ("events", 0, "Table::getWidgetAtPointLevel", "%d, %d, %s", - x, y, OOFStackingIterator::majorLevelText (majorLevel)); + x, y, OOFStackingIterator::majorLevelText (level)); Widget *widgetAtPoint = NULL; - switch (majorLevel) { + switch (level) { case OOFStackingIterator::IN_FLOW: - { - OOFStackingIterator *osi = - (OOFStackingIterator*)iteratorStack->getTop (); - - while (widgetAtPoint == NULL && *interruptedWidget == NULL && - osi->index >= 0) { - if (childDefined (osi->index)) { - Widget *child = children->get(osi->index)->cell.widget; - if (!core::StackingContextMgr::handledByStackingContextMgr - (child)) - widgetAtPoint = - child->getWidgetAtPointTotal (x, y, iteratorStack, - interruptedWidget); - } - - if (*interruptedWidget == NULL) - osi->index--; + for (int i = children->size () - 1; widgetAtPoint == NULL && i >= 0; + i--) { + if (childDefined (i)) { + Widget *child = children->get(i)->cell.widget; + if (!core::StackingContextMgr::handledByStackingContextMgr (child)) + widgetAtPoint = child->getWidgetAtPoint (x, y, context); } } break; default: widgetAtPoint = - OOFAwareWidget::getWidgetAtPointLevel (x, y, iteratorStack, - interruptedWidget, majorLevel); + OOFAwareWidget::getWidgetAtPointLevel (x, y, context, level); break; } - DBG_OBJ_MSGF ("events", 1, "=> %p (i: %p)", - widgetAtPoint, *interruptedWidget); + DBG_OBJ_MSGF ("events", 1, "=> %p", widgetAtPoint); DBG_OBJ_LEAVE (); + return widgetAtPoint; } |