26 mSingletonHolder(this)
36 mWidgetMouseFocus =
nullptr;
37 mWidgetKeyFocus =
nullptr;
38 mLayerMouseFocus =
nullptr;
41 mMouseCapture[i] =
false;
43 mIsShiftPressed =
false;
44 mIsControlPressed =
false;
45 mIsAltPressed =
false;
46 mIsMetaPressed =
false;
50 mFirstPressKey =
true;
70 mIsInitialise =
false;
76 mMousePosition.set(_absx, _absy);
79 int relz = _absz - mOldAbsZ;
87 mWidgetMouseFocus->_riseMouseWheel(relz);
96 if (mLayerMouseFocus !=
nullptr)
98 IntPoint point = mLayerMouseFocus->getPosition(_absx, _absy);
101 if (mMouseCapture[i])
110 Widget* old_mouse_focus = mWidgetMouseFocus;
116 if (mWidgetMouseFocus == item)
121 if (mLayerMouseFocus !=
nullptr)
123 IntPoint point = mLayerMouseFocus->getPosition(_absx, _absy);
124 mWidgetMouseFocus->_riseMouseMove(point.
left, point.
top);
138 if (!mVectorModalRootWidget.empty())
140 if (root != mVectorModalRootWidget.back())
148 mLayerMouseFocus = root->
getLayer();
154 Widget* save_widget =
nullptr;
157 Widget* root_focus = item;
158 while (root_focus !=
nullptr)
162 save_widget = root_focus;
172 root_focus = mWidgetMouseFocus;
173 while (root_focus !=
nullptr)
175 if (root_focus == save_widget)
185 if (
isFocusMouse() && mWidgetMouseFocus->getInheritedEnabled())
187 mWidgetMouseFocus->_riseMouseLostFocus(item);
193 if (mLayerMouseFocus !=
nullptr)
194 point = mLayerMouseFocus->getPosition(_absx, _absy);
200 mWidgetMouseFocus = item;
202 if (old_mouse_focus != mWidgetMouseFocus)
219 mMouseCapture[_id.
getValue()] =
true;
232 if (!mWidgetMouseFocus->getInheritedEnabled())
238 if (mLayerMouseFocus !=
nullptr)
240 IntPoint point = mLayerMouseFocus->getPosition(_absx, _absy);
241 mLastPressed[_id.
getValue()] = point;
246 Widget* item = mWidgetMouseFocus;
256 if (mLayerMouseFocus !=
nullptr)
257 point = mLayerMouseFocus->getPosition(_absx, _absy);
258 mWidgetMouseFocus->_riseMouseButtonPressed(point.
left, point.
top, _id);
261 if (mWidgetMouseFocus)
267 Widget* pick = mWidgetMouseFocus;
292 mMouseCapture[_id.
getValue()] =
false;
299 if (!mWidgetMouseFocus->getInheritedEnabled())
303 if (mLayerMouseFocus !=
nullptr)
304 point = mLayerMouseFocus->getPosition(_absx, _absy);
305 mWidgetMouseFocus->_riseMouseButtonReleased(point.
left, point.
top, _id);
308 if (
nullptr != mWidgetMouseFocus)
314 mWidgetMouseFocus->_riseMouseButtonClick();
316 if (
nullptr != mWidgetMouseFocus)
317 mWidgetMouseFocus->_riseMouseButtonDoubleClick();
323 if (item == mWidgetMouseFocus)
325 mWidgetMouseFocus->_riseMouseButtonClick();
327 mTimerDoubleClick = 0;
344 firstEncoding(_key,
true);
347 storeKey(_key, _text);
354 mWidgetKeyFocus->_riseKeyButtonPressed(_key, _text);
363 firstEncoding(_key,
false);
371 mWidgetKeyFocus->_riseKeyButtonReleased(_key);
376 void InputManager::firstEncoding(
KeyCode _key,
bool bIsKeyPressed)
379 mIsShiftPressed = bIsKeyPressed;
381 mIsControlPressed = bIsKeyPressed;
383 mIsAltPressed = bIsKeyPressed;
385 mIsMetaPressed = bIsKeyPressed;
390 if (_widget == mWidgetKeyFocus)
393 Widget* oldKeyFocus = mWidgetKeyFocus;
394 mWidgetKeyFocus =
nullptr;
396 Widget* sharedRootFocus =
nullptr;
399 Widget* rootFocus = _widget;
400 while (rootFocus !=
nullptr)
404 sharedRootFocus = rootFocus;
414 rootFocus = oldKeyFocus;
415 while (rootFocus !=
nullptr)
417 if (rootFocus == sharedRootFocus)
426 mWidgetKeyFocus = _widget;
443 Widget* mouseFocus = mWidgetMouseFocus;
444 mWidgetMouseFocus =
nullptr;
447 Widget* root_focus = mouseFocus;
448 while (root_focus !=
nullptr)
457 if (mMouseCapture[i])
459 mMouseCapture[i] =
false;
460 if (
nullptr != mouseFocus)
463 mLastPressed[i].left,
470 if (
nullptr != mouseFocus)
475 if (mouseFocus != mWidgetMouseFocus)
480 void InputManager::_unlinkWidget(
Widget* _widget)
482 if (
nullptr == _widget)
485 if (mWidgetMouseFocus == _widget)
488 if (_widget == mWidgetKeyFocus)
492 for (VectorWidgetPtr::iterator iter = mVectorModalRootWidget.begin(); iter != mVectorModalRootWidget.end();
495 if (*iter == _widget)
497 mVectorModalRootWidget.erase(iter);
505 if (
nullptr == _widget)
511 mVectorModalRootWidget.push_back(_widget);
522 for (VectorWidgetPtr::iterator iter = mVectorModalRootWidget.begin(); iter != mVectorModalRootWidget.end();
525 if (*iter == _widget)
527 mVectorModalRootWidget.erase(iter);
532 if (!mVectorModalRootWidget.empty())
539 void InputManager::storeKey(
KeyCode _key,
Char _text)
550 mFirstPressKey =
true;
556 void InputManager::resetKey()
562 void InputManager::frameEntered(
float _frame)
564 mTimerDoubleClick += _frame;
582 mFirstPressKey =
false;
592 mWidgetKeyFocus->_riseKeyButtonPressed(mHoldKey, mHoldChar);
595 mWidgetKeyFocus->_riseKeyButtonReleased(mHoldKey);
602 if (mWidgetKeyFocus == _widget)
608 if (mLayerMouseFocus !=
nullptr)
609 return mLayerMouseFocus->getPosition(mMousePosition.left, mMousePosition.top);
610 return mMousePosition;
615 return mWidgetMouseFocus !=
nullptr;
620 return mWidgetKeyFocus !=
nullptr;
627 if (mMouseCapture[i])
640 return mWidgetMouseFocus;
645 return mWidgetKeyFocus;
652 return mLastPressed[_id.
getValue()];
659 return mMousePosition;
664 return !mVectorModalRootWidget.
empty();
669 return mIsControlPressed;
674 return mIsShiftPressed;
679 return mIsAltPressed;
684 return mIsMetaPressed;
691 mMouseCapture[i] =
false;
697 _unlinkWidget(_widget);
#define MYGUI_ASSERT(exp, dest)
#define MYGUI_LOG(level, text)
#define MYGUI_SINGLETON_DEFINITION(ClassName)
static const IntPoint & getZeroIntPoint()
static Gui & getInstance()
EventHandle_FrameEventDelegate eventFrameStart
ILayer * getLayer() const
void upLayerItem(Widget *_item)
static LayerManager & getInstance()
Widget * getWidgetFromPoint(int _left, int _top) const
const float INPUT_TIME_DOUBLE_CLICK
types::TPoint< int > IntPoint
delegates::DelegateFunction< Args... > * newDelegate(void(*_func)(Args... args))
const float INPUT_INTERVAL_KEY
const float INPUT_DELAY_FIRST_KEY