28 mXmlPointerTagName(
"Pointer"),
29 mXmlPropertyTagName(
"Property"),
30 mXmlDefaultPointerValue(
"Default"),
31 mSingletonHolder(this)
52 mMousePointer =
nullptr;
53 mWidgetOwner =
nullptr;
56 mSkinName =
"ImageBox";
75 _destroyAllChildWidget();
77 mWidgetOwner =
nullptr;
83 mIsInitialise =
false;
88#ifndef MYGUI_DONT_USE_OBSOLETE
95 if (node->
getName() == mXmlPropertyTagName)
101 else if (key ==
"Layer")
103 else if (key ==
"Skin")
109 void PointerManager::notifyFrameStart(
float _time)
112 if (mOldPoint != mPoint)
116 if (
nullptr != mMousePointer && mPointer !=
nullptr)
123 if (
nullptr != mMousePointer)
130 if (
nullptr == mMousePointer)
134 if (result ==
nullptr)
142 mPointer = result->
castType<IPointer>();
146 mWidgetOwner = _owner;
149 void PointerManager::_unlinkWidget(Widget* _widget)
151 if (_widget == mWidgetOwner)
153 else if (_widget == mMousePointer)
154 mMousePointer =
nullptr;
163 Widget* PointerManager::baseCreateWidget(
165 std::string_view _type,
166 std::string_view _skin,
169 std::string_view _layer,
170 std::string_view _name)
174 .
createWidget(_style, _type, _skin, _coord,
nullptr,
nullptr, _name);
175 mWidgetChild.push_back(widget);
186 void PointerManager::_destroyAllChildWidget()
189 while (!mWidgetChild.empty())
192 Widget* widget = mWidgetChild.back();
193 mWidgetChild.pop_back();
196 manager.unlinkFromUnlinkers(widget);
207 mDefaultName = _value;
220 void PointerManager::Update()
222 if (mMousePointer ==
nullptr)
223 mMousePointer =
static_cast<ImageBox*
>(baseCreateWidget(
230 std::string_view{}));
236 if (!_name.empty() && _name != mXmlDefaultPointerValue)
239 if (result ==
nullptr)
245 void PointerManager::notifyChangeMouseFocus(
Widget* _widget)
247 std::string_view pointer;
250 if (pointer != mCurrentMousePointer)
252 mCurrentMousePointer = pointer;
253 if (mCurrentMousePointer.empty())
#define MYGUI_ASSERT(exp, dest)
#define MYGUI_LOG(level, text)
#define MYGUI_SINGLETON_DEFINITION(ClassName)
void registerFactory(std::string_view _category, std::string_view _type, Delegate::IDelegate *_delegate)
static FactoryManager & getInstance()
void unregisterFactory(std::string_view _category, std::string_view _type)
static Gui & getInstance()
EventHandle_FrameEventDelegate eventFrameStart
Type * castType(bool _throw=true)
virtual void setImage(ImageBox *_image)=0
virtual void setPosition(ImageBox *_image, const IntPoint &_point)=0
widget description should be here.
static std::string_view getClassTypeName()
static LayerManager & getInstance()
void attachToLayerNode(std::string_view _name, Widget *_item)
void loadOldPointerFormat(xml::ElementPtr _node, std::string_view _file, Version _version, std::string_view _tag)
void resetToDefaultPointer()
static std::string_view getClassTypeName()
void setPointer(std::string_view _name)
const std::string & getDefaultPointer() const
void setVisible(bool _visible)
const std::string & getLayerName() const
EventPairConvertStringView< delegates::MultiDelegate< const std::string & >, delegates::MultiDelegate< std::string_view > > eventChangeMousePointer
void setDefaultPointer(std::string_view _value)
void setLayerName(std::string_view _value)
IPointer * getByName(std::string_view _name) const
void unregisterLoadXmlDelegate(std::string_view _key)
const std::string & getCategoryName() const
LoadXmlDelegate & registerLoadXmlDelegate(std::string_view _key)
IResource * getByName(std::string_view _name, bool _throw=true) const
static ResourceManager & getInstance()
bool findAttribute(std::string_view _name, std::string &_value)
ElementEnumerator getElementEnumerator()
const std::string & getName() const
types::TCoord< int > IntCoord
delegates::DelegateFunction< Args... > * newDelegate(void(*_func)(Args... args))