aboutsummaryrefslogtreecommitdiff
path: root/dw/table.cc
diff options
context:
space:
mode:
authorSebastian Geerken <devnull@localhost>2015-01-23 23:20:59 +0100
committerSebastian Geerken <devnull@localhost>2015-01-23 23:20:59 +0100
commitcf581248257b88e98fa4315525a0ee531b4cb9c8 (patch)
tree73ecec5922d6ae58de09fb32ad4636cd6dedab17 /dw/table.cc
parente497d315b87a42184dce3f9b90e495b3a3806b14 (diff)
Same simplifications for Widget::getWidgetAtPoint as for Widget::draw before.
Diffstat (limited to 'dw/table.cc')
-rw-r--r--dw/table.cc41
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;
}