27 mWidgetMouseFocus(nullptr),
28 mWidgetKeyFocus(nullptr),
29 mLayerMouseFocus(nullptr),
31 mIsShiftPressed(false),
32 mIsControlPressed(false),
35 mFirstPressKey(false),
48 mWidgetMouseFocus =
nullptr;
49 mWidgetKeyFocus =
nullptr;
50 mLayerMouseFocus =
nullptr;
53 mMouseCapture[i] =
false;
55 mIsShiftPressed =
false;
56 mIsControlPressed =
false;
59 mFirstPressKey =
true;
79 mIsInitialise =
false;
85 mMousePosition.
set(_absx, _absy);
88 int relz = _absz - mOldAbsZ;
104 if (mLayerMouseFocus !=
nullptr)
109 if (mMouseCapture[i])
122 Widget* old_mouse_focus = mWidgetMouseFocus;
128 if (mWidgetMouseFocus == item)
133 if (mLayerMouseFocus !=
nullptr)
149 if (!mVectorModalRootWidget.empty())
151 if (root != mVectorModalRootWidget.back())
159 mLayerMouseFocus = root->
getLayer();
165 Widget* save_widget =
nullptr;
168 Widget* root_focus = item;
169 while (root_focus !=
nullptr)
173 save_widget = root_focus;
183 root_focus = mWidgetMouseFocus;
184 while (root_focus !=
nullptr)
186 if (root_focus == save_widget)
204 if (mLayerMouseFocus !=
nullptr)
205 point = mLayerMouseFocus->
getPosition(_absx, _absy);
211 mWidgetMouseFocus = item;
213 if (old_mouse_focus != mWidgetMouseFocus)
243 mMouseCapture[_id.
getValue()] =
true;
245 if (mLayerMouseFocus !=
nullptr)
248 mLastPressed[_id.
getValue()] = point;
253 Widget* item = mWidgetMouseFocus;
263 if (mLayerMouseFocus !=
nullptr)
264 point = mLayerMouseFocus->
getPosition(_absx, _absy);
268 if (mWidgetMouseFocus)
274 Widget* pick = mWidgetMouseFocus;
305 mMouseCapture[_id.
getValue()] =
false;
310 if (mLayerMouseFocus !=
nullptr)
311 point = mLayerMouseFocus->
getPosition(_absx, _absy);
315 if (
nullptr != mWidgetMouseFocus)
323 if (
nullptr != mWidgetMouseFocus)
330 if ( item == mWidgetMouseFocus)
334 mTimerDoubleClick = 0;
351 firstEncoding(_key,
true);
354 storeKey(_key, _text);
370 firstEncoding(_key,
false);
383 void InputManager::firstEncoding(
KeyCode _key,
bool bIsKeyPressed)
386 mIsShiftPressed = bIsKeyPressed;
388 mIsControlPressed = bIsKeyPressed;
393 if (_widget == mWidgetKeyFocus)
396 Widget* oldKeyFocus = mWidgetKeyFocus;
397 mWidgetKeyFocus =
nullptr;
399 Widget* sharedRootFocus =
nullptr;
402 Widget* rootFocus = _widget;
403 while (rootFocus !=
nullptr)
407 sharedRootFocus = rootFocus;
417 rootFocus = oldKeyFocus;
418 while (rootFocus !=
nullptr)
420 if (rootFocus == sharedRootFocus)
429 mWidgetKeyFocus = _widget;
446 Widget* mouseFocus = mWidgetMouseFocus;
447 mWidgetMouseFocus =
nullptr;
450 Widget* root_focus = mouseFocus;
451 while (root_focus !=
nullptr)
460 if (mMouseCapture[i])
462 mMouseCapture[i] =
false;
467 if (
nullptr != mouseFocus)
472 if (mouseFocus != mWidgetMouseFocus)
477 void InputManager::_unlinkWidget(
Widget* _widget)
479 if (
nullptr == _widget)
482 if (mWidgetMouseFocus == _widget)
485 if (_widget == mWidgetKeyFocus)
489 for (VectorWidgetPtr::iterator iter = mVectorModalRootWidget.begin(); iter != mVectorModalRootWidget.end(); ++iter)
491 if (*iter == _widget)
493 mVectorModalRootWidget.erase(iter);
501 if (
nullptr == _widget)
507 mVectorModalRootWidget.push_back(_widget);
518 for (VectorWidgetPtr::iterator iter = mVectorModalRootWidget.begin(); iter != mVectorModalRootWidget.end(); ++iter)
520 if (*iter == _widget)
522 mVectorModalRootWidget.erase(iter);
527 if (!mVectorModalRootWidget.empty())
534 void InputManager::storeKey(
KeyCode _key,
Char _text)
545 mFirstPressKey =
true;
551 void InputManager::resetKey()
557 void InputManager::frameEntered(
float _frame)
559 mTimerDoubleClick += _frame;
577 mFirstPressKey =
false;
598 if (mWidgetKeyFocus == _widget)
604 if (mLayerMouseFocus !=
nullptr)
606 return mMousePosition;
611 return mWidgetMouseFocus !=
nullptr;
616 return mWidgetKeyFocus !=
nullptr;
623 if (mMouseCapture[i])
636 return mWidgetMouseFocus;
641 return mWidgetKeyFocus;
648 return mLastPressed[_id.
getValue()];
655 return mMousePosition;
660 return !mVectorModalRootWidget.empty();
665 return mIsControlPressed;
670 return mIsShiftPressed;
677 mMouseCapture[i] =
false;
683 _unlinkWidget(_widget);