mirror of
https://github.com/edubart/otclient.git
synced 2025-12-26 17:57:11 +01:00
OMG the chat is finally scrolling!
* implement UIScrollArea * rework console to allow scrolling * many core ui changes in the way.. so maybe we will have new bugs * fix in UIScrollBar
This commit is contained in:
@@ -87,22 +87,16 @@ void UIManager::inputEvent(const InputEvent& event)
|
||||
}
|
||||
break;
|
||||
case Fw::MouseReleaseInputEvent: {
|
||||
bool accepted = false;
|
||||
m_mouseReceiver->propagateOnMouseRelease(event.mousePos, event.mouseButton);
|
||||
if(event.mouseButton == Fw::MouseLeftButton) {
|
||||
// release pressed widget
|
||||
if(m_pressedWidget) {
|
||||
if(updatePressedWidget(nullptr, event.mousePos))
|
||||
accepted = true;
|
||||
}
|
||||
if(m_pressedWidget)
|
||||
updatePressedWidget(nullptr, event.mousePos);
|
||||
|
||||
// release dragging widget
|
||||
if(m_draggingWidget) {
|
||||
if(updateDraggingWidget(nullptr, event.mousePos))
|
||||
accepted = true;
|
||||
}
|
||||
if(m_draggingWidget)
|
||||
updateDraggingWidget(nullptr, event.mousePos);
|
||||
}
|
||||
if(!accepted)
|
||||
m_mouseReceiver->propagateOnMouseRelease(event.mousePos, event.mouseButton);
|
||||
break;
|
||||
}
|
||||
case Fw::MouseMoveInputEvent: {
|
||||
@@ -131,14 +125,7 @@ bool UIManager::updatePressedWidget(const UIWidgetPtr& newPressedWidget, const P
|
||||
bool accepted = false;
|
||||
|
||||
UIWidgetPtr oldPressedWidget = m_pressedWidget;
|
||||
m_pressedWidget = newPressedWidget;
|
||||
|
||||
if(newPressedWidget)
|
||||
newPressedWidget->updateState(Fw::PressedState);
|
||||
|
||||
if(oldPressedWidget) {
|
||||
oldPressedWidget->updateState(Fw::PressedState);
|
||||
|
||||
if(oldPressedWidget->isEnabled()) {
|
||||
// when releasing mouse inside pressed widget area send onClick event
|
||||
if(!clickedPos.isNull() && oldPressedWidget->containsPoint(clickedPos)) {
|
||||
@@ -150,6 +137,14 @@ bool UIManager::updatePressedWidget(const UIWidgetPtr& newPressedWidget, const P
|
||||
}
|
||||
}
|
||||
|
||||
m_pressedWidget = newPressedWidget;
|
||||
|
||||
if(newPressedWidget)
|
||||
newPressedWidget->updateState(Fw::PressedState);
|
||||
|
||||
if(oldPressedWidget)
|
||||
oldPressedWidget->updateState(Fw::PressedState);
|
||||
|
||||
return accepted;
|
||||
}
|
||||
|
||||
@@ -363,7 +358,12 @@ UIWidgetPtr UIManager::loadUI(const std::string& file, const UIWidgetPtr& parent
|
||||
UIWidgetPtr UIManager::createWidgetFromStyle(const std::string& styleName, const UIWidgetPtr& parent)
|
||||
{
|
||||
OTMLNodePtr node = OTMLNode::create(styleName);
|
||||
return createWidgetFromOTML(node, parent);
|
||||
try {
|
||||
return createWidgetFromOTML(node, parent);
|
||||
} catch(Exception& e) {
|
||||
logError("failed to create widget from style '", styleName, "': ", e.what());
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
UIWidgetPtr UIManager::createWidgetFromOTML(const OTMLNodePtr& widgetNode, const UIWidgetPtr& parent)
|
||||
|
||||
Reference in New Issue
Block a user