| 494 | } |
| 495 | |
| 496 | ILayerItem* Widget::getLayerItemByPoint(int _left, int _top) const |
| 497 | { |
| 498 | // проверяем попадание |
| 499 | if (!mEnabled || !mInheritedVisible || (!getNeedMouseFocus() && !getInheritsPick()) || |
| 500 | !_checkPoint(_left, _top) |
| 501 | // если есть маска, проверяем еще и по маске |
| 502 | || !isMaskPickInside(IntPoint(_left - mCoord.left, _top - mCoord.top), mCoord)) |
| 503 | return nullptr; |
| 504 | |
| 505 | // спрашиваем у детишек |
| 506 | for (VectorWidgetPtr::const_reverse_iterator widget = mWidgetChild.rbegin(); widget != mWidgetChild.rend(); |
| 507 | ++widget) |
| 508 | { |
| 509 | // общаемся только с послушными детьми |
| 510 | if ((*widget)->mWidgetStyle == WidgetStyle::Popup) |
| 511 | continue; |
| 512 | |
| 513 | ILayerItem* item = (*widget)->getLayerItemByPoint(_left - mCoord.left, _top - mCoord.top); |
| 514 | if (item != nullptr) |
| 515 | return item; |
| 516 | } |
| 517 | // спрашиваем у детишек скина |
| 518 | for (VectorWidgetPtr::const_reverse_iterator widget = mWidgetChildSkin.rbegin(); |
| 519 | widget != mWidgetChildSkin.rend(); |
| 520 | ++widget) |
| 521 | { |
| 522 | ILayerItem* item = (*widget)->getLayerItemByPoint(_left - mCoord.left, _top - mCoord.top); |
| 523 | if (item != nullptr) |
| 524 | return item; |
| 525 | } |
| 526 | |
| 527 | // непослушные дети |
| 528 | return getInheritsPick() ? nullptr : const_cast<Widget*>(this); |
| 529 | } |
| 530 | |
| 531 | void Widget::_updateAbsolutePoint() |
| 532 | { |
no test coverage detected