Fixed build and added EventResponse for mouse button events.
This commit is contained in:
parent
edf8108ea9
commit
f34bf88237
2
external/scons-plus-plus
vendored
2
external/scons-plus-plus
vendored
@ -1 +1 @@
|
||||
Subproject commit a7c736de56b438d2e47b074fc1b06d05cd7a0c35
|
||||
Subproject commit 0a29b416391359a84cb847f57fc391da71a8e3cb
|
@ -106,12 +106,14 @@ void Button::handleMouseMotion(const sdlpp::MouseMotionEvent& event)
|
||||
}
|
||||
}
|
||||
|
||||
void Button::handleMouseButton(const sdlpp::MouseButtonEvent&)
|
||||
EventResponse Button::handleMouseButton(const sdlpp::MouseButtonEvent&)
|
||||
{
|
||||
if (mHovered)
|
||||
{
|
||||
clicked.emit();
|
||||
return EventResponse::HANDLED;
|
||||
}
|
||||
return EventResponse::UNHANDLED;
|
||||
}
|
||||
|
||||
void Button::revalidate()
|
||||
|
@ -76,7 +76,7 @@ public:
|
||||
|
||||
void handleEnteredTree() override;
|
||||
void handleMouseMotion(const sdlpp::MouseMotionEvent& event) override;
|
||||
void handleMouseButton(const sdlpp::MouseButtonEvent&) override;
|
||||
EventResponse handleMouseButton(const sdlpp::MouseButtonEvent&) override;
|
||||
void revalidate() override;
|
||||
private:
|
||||
void update();
|
||||
|
@ -39,12 +39,16 @@ void ParentWidget::handleMouseMotion(const sdlpp::MouseMotionEvent& event)
|
||||
}
|
||||
}
|
||||
|
||||
void ParentWidget::handleMouseButton(const sdlpp::MouseButtonEvent& event)
|
||||
EventResponse ParentWidget::handleMouseButton(const sdlpp::MouseButtonEvent& event)
|
||||
{
|
||||
for (widget_ptr_t& child : mChildren)
|
||||
{
|
||||
child->handleMouseButton(event);
|
||||
if (const EventResponse response = child->handleMouseButton(event); response == EventResponse::HANDLED)
|
||||
{
|
||||
return EventResponse::HANDLED;
|
||||
}
|
||||
}
|
||||
return EventResponse::UNHANDLED;
|
||||
}
|
||||
|
||||
Widget* ParentWidget::addChild(widget_ptr_t&& child)
|
||||
@ -81,9 +85,9 @@ void WidgetTree::notifyMouseMoved(const sdlpp::MouseMotionEvent& event)
|
||||
mRootWidget.handleMouseMotion(event);
|
||||
}
|
||||
|
||||
void WidgetTree::notifyMouseButton(const sdlpp::MouseButtonEvent& event)
|
||||
EventResponse WidgetTree::notifyMouseButton(const sdlpp::MouseButtonEvent& event)
|
||||
{
|
||||
mRootWidget.handleMouseButton(event);
|
||||
return mRootWidget.handleMouseButton(event);
|
||||
}
|
||||
|
||||
void WidgetTree::invalidateWidget(Widget* widget) noexcept
|
||||
|
@ -13,6 +13,12 @@
|
||||
|
||||
namespace sdl_gpu_test
|
||||
{
|
||||
enum class EventResponse
|
||||
{
|
||||
UNHANDLED,
|
||||
HANDLED
|
||||
};
|
||||
|
||||
class Widget
|
||||
{
|
||||
protected:
|
||||
@ -23,7 +29,7 @@ public:
|
||||
|
||||
virtual void handleEnteredTree() {}
|
||||
virtual void handleMouseMotion(const sdlpp::MouseMotionEvent& /* event */) {}
|
||||
virtual void handleMouseButton(const sdlpp::MouseButtonEvent& /* event */) {}
|
||||
virtual EventResponse handleMouseButton(const sdlpp::MouseButtonEvent& /* event */) { return EventResponse::UNHANDLED; }
|
||||
|
||||
virtual void revalidate() {}
|
||||
|
||||
@ -43,7 +49,7 @@ private:
|
||||
public:
|
||||
void handleEnteredTree() override;
|
||||
void handleMouseMotion(const sdlpp::MouseMotionEvent& event) override;
|
||||
void handleMouseButton(const sdlpp::MouseButtonEvent&) override;
|
||||
EventResponse handleMouseButton(const sdlpp::MouseButtonEvent& event) override;
|
||||
|
||||
Widget* addChild(widget_ptr_t&& child);
|
||||
|
||||
@ -76,7 +82,7 @@ public:
|
||||
ParentWidget& getRootWidget() noexcept { return mRootWidget; }
|
||||
|
||||
void notifyMouseMoved(const sdlpp::MouseMotionEvent& event);
|
||||
void notifyMouseButton(const sdlpp::MouseButtonEvent& event);
|
||||
EventResponse notifyMouseButton(const sdlpp::MouseButtonEvent& event);
|
||||
|
||||
void invalidateWidget(Widget* widget) noexcept;
|
||||
};
|
||||
|
@ -33,7 +33,7 @@ def _pack_textures(env, target: str, source: 'list[str]'):
|
||||
source = source,
|
||||
action = f'{_exe_name()} $TARGET $SOURCES'
|
||||
)
|
||||
# env.Depends(cmd, prog_packer)
|
||||
env.Depends(cmd, prog_packer)
|
||||
return cmd
|
||||
env.AddMethod(_pack_textures, 'PackTextures')
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user