| 439 | } |
| 440 | |
| 441 | void InputManager::_resetMouseFocusWidget() |
| 442 | { |
| 443 | Widget* mouseFocus = mWidgetMouseFocus; |
| 444 | mWidgetMouseFocus = nullptr; |
| 445 | |
| 446 | // recursively reset old widget focus |
| 447 | Widget* root_focus = mouseFocus; |
| 448 | while (root_focus != nullptr) |
| 449 | { |
| 450 | root_focus->_setRootMouseFocus(false); |
| 451 | root_focus->_riseMouseChangeRootFocus(false); |
| 452 | root_focus = root_focus->getParent(); |
| 453 | } |
| 454 | |
| 455 | for (int i = MouseButton::Button0; i < MouseButton::MAX; ++i) |
| 456 | { |
| 457 | if (mMouseCapture[i]) |
| 458 | { |
| 459 | mMouseCapture[i] = false; |
| 460 | if (nullptr != mouseFocus) |
| 461 | { |
| 462 | mouseFocus->_riseMouseButtonReleased( |
| 463 | mLastPressed[i].left, |
| 464 | mLastPressed[i].top, |
| 465 | MouseButton::Enum(i)); |
| 466 | } |
| 467 | } |
| 468 | } |
| 469 | |
| 470 | if (nullptr != mouseFocus) |
| 471 | { |
| 472 | mouseFocus->_riseMouseLostFocus(nullptr); |
| 473 | } |
| 474 | |
| 475 | if (mouseFocus != mWidgetMouseFocus) |
| 476 | eventChangeMouseFocus(mWidgetMouseFocus); |
| 477 | } |
| 478 | |
| 479 | // удаляем данный виджет из всех возможных мест |
| 480 | void InputManager::_unlinkWidget(Widget* _widget) |
no test coverage detected