41 const std::string
XML_TYPE(
"Pointer");
63 mMousePointer =
nullptr;
64 mWidgetOwner =
nullptr;
67 mSkinName =
"StaticImage";
75 if (!mIsInitialise)
return;
85 _destroyAllChildWidget();
87 mWidgetOwner =
nullptr;
93 mIsInitialise =
false;
119 while (info.
next(
"Info"))
122 if (name.empty())
continue;
126 std::string type = (shared_text.empty() && texture.empty()) ?
"ResourceImageSetPointer" :
"ResourceManualPointer";
163 if (!shared_text.empty() || !texture.empty())
167 prop->
addAttribute(
"value", shared_text.empty() ? texture : shared_text);
178 if (key ==
"Default")
180 else if (key ==
"Layer")
182 else if (key ==
"Skin")
190 if (!pointer.empty())
195 void PointerManager::notifyFrameStart(
float _time)
198 if (
nullptr != mMousePointer && mPointer !=
nullptr)
204 if (
nullptr != mMousePointer) mMousePointer->
setVisible(_visible);
210 if (
nullptr == mMousePointer)
214 if (result ==
nullptr)
222 mPointer = result->
castType<IPointer>();
226 mWidgetOwner = _owner;
229 void PointerManager::_unlinkWidget(Widget* _widget)
231 if (_widget == mWidgetOwner)
setPointer(mDefaultName,
nullptr);
232 else if (_widget == mMousePointer) mMousePointer =
nullptr;
241 Widget* PointerManager::baseCreateWidget(
WidgetStyle _style,
const std::string& _type,
const std::string& _skin,
const IntCoord& _coord,
Align _align,
const std::string& _layer,
const std::string& _name)
244 mWidgetChild.push_back(widget);
252 void PointerManager::_destroyChildWidget(Widget* _widget)
254 MYGUI_ASSERT(
nullptr != _widget,
"invalid widget pointer");
256 VectorWidgetPtr::iterator iter = std::find(mWidgetChild.begin(), mWidgetChild.end(), _widget);
257 if (iter != mWidgetChild.end())
263 *iter = mWidgetChild.back();
264 mWidgetChild.pop_back();
274 MYGUI_EXCEPT(
"Widget '" << _widget->getName() <<
"' not found");
279 void PointerManager::_destroyAllChildWidget()
282 while (!mWidgetChild.empty())
285 Widget* widget = mWidgetChild.back();
286 mWidgetChild.pop_back();
289 manager.unlinkFromUnlinkers(widget);
300 mDefaultName = _value;
313 void PointerManager::Update()
315 if (mMousePointer ==
nullptr)
325 if (result ==
nullptr)
331 void PointerManager::notifyChangeMouseFocus(
Widget* _widget)
333 std::string pointer = _widget ==
nullptr ?
"" : _widget->
getPointer();
334 if (pointer != mCurrentMousePointer)
336 mCurrentMousePointer = pointer;
337 if (mCurrentMousePointer.empty())