mirror of
https://github.com/edubart/otclient.git
synced 2025-10-17 13:03:27 +02:00
item menu example
This commit is contained in:
@@ -57,12 +57,10 @@ void UIButton::onStyleApply(const OTMLNodePtr& styleNode)
|
||||
}
|
||||
}
|
||||
|
||||
bool UIButton::onMouseRelease(const Point& mousePos, Fw::MouseButton button)
|
||||
void UIButton::onMouseRelease(const Point& mousePos, Fw::MouseButton button)
|
||||
{
|
||||
if(isPressed()) {
|
||||
if(m_onClick && getRect().contains(mousePos))
|
||||
m_onClick();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@@ -41,7 +41,7 @@ public:
|
||||
|
||||
protected:
|
||||
virtual void onStyleApply(const OTMLNodePtr& styleNode);
|
||||
virtual bool onMouseRelease(const Point& mousePos, Fw::MouseButton button);
|
||||
virtual void onMouseRelease(const Point& mousePos, Fw::MouseButton button);
|
||||
|
||||
SimpleCallback m_onClick;
|
||||
Point m_textTranslate;
|
||||
|
@@ -44,10 +44,15 @@ public:
|
||||
UIWidgetPtr loadUI(const std::string& file, const UIWidgetPtr& parent = nullptr);
|
||||
UIWidgetPtr loadWidgetFromOTML(const OTMLNodePtr& widgetNode, const UIWidgetPtr& parent);
|
||||
|
||||
//void setMouseGrabWidget();
|
||||
//void setKeyboardGrabWidget();
|
||||
|
||||
UIWidgetPtr getRootWidget() { return m_rootWidget; }
|
||||
|
||||
private:
|
||||
UIWidgetPtr m_rootWidget;
|
||||
//UIWidgetPtr m_mouseGrabWidget;
|
||||
//UIWidgetPtr m_keyboardGrabWidget;
|
||||
std::map<std::string, OTMLNodePtr> m_styles;
|
||||
};
|
||||
|
||||
|
@@ -909,7 +909,7 @@ void UIWidget::onHoverChange(bool hovered)
|
||||
callLuaField("onHoverChange", hovered);
|
||||
|
||||
// check for new hovered elements when the current widget is removed
|
||||
if(!hovered && !getParent())
|
||||
if(!hovered && !getParent() && g_ui.getRootWidget())
|
||||
g_ui.getRootWidget()->updateState(Fw::HoverState);
|
||||
}
|
||||
|
||||
@@ -1000,10 +1000,9 @@ bool UIWidget::onMousePress(const Point& mousePos, Fw::MouseButton button)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool UIWidget::onMouseRelease(const Point& mousePos, Fw::MouseButton button)
|
||||
void UIWidget::onMouseRelease(const Point& mousePos, Fw::MouseButton button)
|
||||
{
|
||||
if(callLuaField<bool>("onMouseRelease", mousePos, button))
|
||||
return true;
|
||||
callLuaField("onMouseRelease", mousePos, button);
|
||||
|
||||
// do a backup of children list, because it may change while looping it
|
||||
UIWidgetList children;
|
||||
@@ -1017,16 +1016,11 @@ bool UIWidget::onMouseRelease(const Point& mousePos, Fw::MouseButton button)
|
||||
}
|
||||
|
||||
for(const UIWidgetPtr& child : children) {
|
||||
bool mustEnd = child->onMouseRelease(mousePos, button);
|
||||
child->onMouseRelease(mousePos, button);
|
||||
|
||||
if(child->isPressed())
|
||||
child->setPressed(false);
|
||||
|
||||
if(mustEnd)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool UIWidget::onMouseMove(const Point& mousePos, const Point& mouseMoved)
|
||||
|
@@ -173,7 +173,7 @@ protected:
|
||||
/// Triggered when a mouse button is pressed down while mouse pointer is inside widget area
|
||||
virtual bool onMousePress(const Point& mousePos, Fw::MouseButton button);
|
||||
/// Triggered when a mouse button is released
|
||||
virtual bool onMouseRelease(const Point& mousePos, Fw::MouseButton button);
|
||||
virtual void onMouseRelease(const Point& mousePos, Fw::MouseButton button);
|
||||
/// Triggered when mouse moves (even when the mouse is outside widget area)
|
||||
virtual bool onMouseMove(const Point& mousePos, const Point& mouseMoved);
|
||||
/// Triggered when mouse middle button wheels inside widget area
|
||||
|
@@ -120,7 +120,7 @@ bool UIWindow::onMousePress(const Point& mousePos, Fw::MouseButton button)
|
||||
return UIWidget::onMousePress(mousePos, button);
|
||||
}
|
||||
|
||||
bool UIWindow::onMouseRelease(const Point& mousePos, Fw::MouseButton button)
|
||||
void UIWindow::onMouseRelease(const Point& mousePos, Fw::MouseButton button)
|
||||
{
|
||||
if(m_moving) {
|
||||
if(m_movePolicy == FREE_UPDATED_MOVE) {
|
||||
@@ -143,9 +143,8 @@ bool UIWindow::onMouseRelease(const Point& mousePos, Fw::MouseButton button)
|
||||
updateParentLayout();
|
||||
}
|
||||
m_moving = false;
|
||||
return true;
|
||||
}
|
||||
return UIWidget::onMouseRelease(mousePos, button);
|
||||
UIWidget::onMouseRelease(mousePos, button);
|
||||
}
|
||||
|
||||
bool UIWindow::onMouseMove(const Point& mousePos, const Point& mouseMoved)
|
||||
|
@@ -44,7 +44,7 @@ protected:
|
||||
virtual void onStyleApply(const OTMLNodePtr& styleNode);
|
||||
virtual void onGeometryUpdate(const Rect& oldRect, const Rect& newRect);
|
||||
virtual bool onMousePress(const Point& mousePos, Fw::MouseButton button);
|
||||
virtual bool onMouseRelease(const Point& mousePos, Fw::MouseButton button);
|
||||
virtual void onMouseRelease(const Point& mousePos, Fw::MouseButton button);
|
||||
virtual bool onMouseMove(const Point& mousePos, const Point& mouseMoved);
|
||||
virtual bool onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers);
|
||||
|
||||
|
Reference in New Issue
Block a user