本文整理汇总了C++中WidgetPtr::_onMouseSetFocus方法的典型用法代码示例。如果您正苦于以下问题:C++ WidgetPtr::_onMouseSetFocus方法的具体用法?C++ WidgetPtr::_onMouseSetFocus怎么用?C++ WidgetPtr::_onMouseSetFocus使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WidgetPtr
的用法示例。
在下文中一共展示了WidgetPtr::_onMouseSetFocus方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: injectMouseMove
bool InputManager::injectMouseMove(int _absx, int _absy, int _absz)
{
// запоминаем позицию
mMousePosition.set(_absx, _absy);
// вычисляем прирост по колеса
int relz = _absz - mOldAbsZ;
mOldAbsZ = _absz;
// двигаем курсор
PointerManager::getInstance().setPosition(mMousePosition);
// проверка на скролл
if (relz != 0) {
bool isFocus = isFocusMouse();
if (mWidgetMouseFocus != null) mWidgetMouseFocus->_onMouseWheel(relz);
return isFocus;
}
if (mIsWidgetMouseCapture) {
if (mWidgetMouseFocus != null) mWidgetMouseFocus->_onMouseDrag(_absx, _absy);
else mIsWidgetMouseCapture = false;
return true;
}
// ищем активное окно
LayerItem * rootItem = null;
WidgetPtr item = static_cast<WidgetPtr>(LayerManager::getInstance()._findLayerItem(_absx, _absy, rootItem));
// спускаемся по владельцу
if (null != rootItem) {
while (null != static_cast<WidgetPtr>(rootItem)->_getOwner()) {
rootItem = static_cast<WidgetPtr>(rootItem)->_getOwner();
}
}
// ничего не изменилось
if (mWidgetMouseFocus == item) {
bool isFocus = isFocusMouse();
if (mWidgetMouseFocus != null) mWidgetMouseFocus->_onMouseMove(_absx, _absy);
return isFocus;
}
// проверяем на модальность
if (0 != mVectorModalRootWidget.size()) {
if (rootItem != mVectorModalRootWidget.back()) {
rootItem = null;
item = null;
}
}
// смена фокуса, проверяем на доступность виджета
if ((mWidgetMouseFocus != null) && (mWidgetMouseFocus->isEnabled())) {
mWidgetMouseFocus->_onMouseLostFocus(item);
}
if ((item != null) && (item->isEnabled())) {
if (item->getPointer() != mPointer) {
mPointer = item->getPointer();
if (mPointer.empty()) {
PointerManager::getInstance().setDefaultPointer();
eventChangeMousePointer(PointerManager::getInstance().getDefaultPointer());
}
else {
PointerManager::getInstance().setPointer(mPointer, item);
eventChangeMousePointer(mPointer);
}
}
item->_onMouseMove(_absx, _absy);
item->_onMouseSetFocus(mWidgetMouseFocus);
}
// сбрасываем курсор
else if (false == mPointer.empty()) {
PointerManager::getInstance().setDefaultPointer();
mPointer.clear();
eventChangeMousePointer(PointerManager::getInstance().getDefaultPointer());
}
// изменился рутовый элемент
if (rootItem != mWidgetRootMouseFocus) {
if (mWidgetRootMouseFocus != null) mWidgetRootMouseFocus->_onMouseChangeRootFocus(false);
if (rootItem != null) static_cast<WidgetPtr>(rootItem)->_onMouseChangeRootFocus(true);
mWidgetRootMouseFocus = static_cast<WidgetPtr>(rootItem);
}
// запоминаем текущее окно
mWidgetMouseFocus = item;
return isFocusMouse();
}