| 651 | } |
| 652 | |
| 653 | void ItemBox::notifyRootMouseChangeFocus(Widget* _sender, bool _focus) |
| 654 | { |
| 655 | size_t index = calcIndexByWidget(_sender); |
| 656 | if (_focus) |
| 657 | { |
| 658 | MYGUI_ASSERT_RANGE(index, mItemsInfo.size(), "ItemBox::notifyRootMouseChangeFocus"); |
| 659 | |
| 660 | // сбрасываем старый |
| 661 | if (mIndexActive != ITEM_NONE) |
| 662 | { |
| 663 | size_t old_index = mIndexActive; |
| 664 | mIndexActive = ITEM_NONE; |
| 665 | IBDrawItemInfo data(old_index, mIndexSelect, mIndexActive, mIndexAccept, mIndexRefuse, false, false); |
| 666 | requestDrawItem(this, mVectorItems[old_index - (mFirstVisibleIndex * mCountItemInLine)], data); |
| 667 | } |
| 668 | |
| 669 | mIndexActive = index; |
| 670 | IBDrawItemInfo data(index, mIndexSelect, mIndexActive, mIndexAccept, mIndexRefuse, false, false); |
| 671 | requestDrawItem(this, mVectorItems[*_sender->_getInternalData<size_t>()], data); |
| 672 | } |
| 673 | else |
| 674 | { |
| 675 | // при сбросе виджет может быть уже скрыт, и соответсвенно отсутсвовать индекс |
| 676 | // сбрасываем индекс, только если мы и есть актив |
| 677 | if (index < mItemsInfo.size() && mIndexActive == index) |
| 678 | { |
| 679 | mIndexActive = ITEM_NONE; |
| 680 | IBDrawItemInfo data(index, mIndexSelect, mIndexActive, mIndexAccept, mIndexRefuse, false, false); |
| 681 | requestDrawItem(this, mVectorItems[*_sender->_getInternalData<size_t>()], data); |
| 682 | } |
| 683 | } |
| 684 | } |
| 685 | |
| 686 | void ItemBox::updateMetrics() |
| 687 | { |
nothing calls this directly
no test coverage detected