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)
|
if (mHovered)
|
||||||
{
|
{
|
||||||
clicked.emit();
|
clicked.emit();
|
||||||
|
return EventResponse::HANDLED;
|
||||||
}
|
}
|
||||||
|
return EventResponse::UNHANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Button::revalidate()
|
void Button::revalidate()
|
||||||
|
@ -76,7 +76,7 @@ public:
|
|||||||
|
|
||||||
void handleEnteredTree() override;
|
void handleEnteredTree() override;
|
||||||
void handleMouseMotion(const sdlpp::MouseMotionEvent& event) override;
|
void handleMouseMotion(const sdlpp::MouseMotionEvent& event) override;
|
||||||
void handleMouseButton(const sdlpp::MouseButtonEvent&) override;
|
EventResponse handleMouseButton(const sdlpp::MouseButtonEvent&) override;
|
||||||
void revalidate() override;
|
void revalidate() override;
|
||||||
private:
|
private:
|
||||||
void update();
|
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)
|
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)
|
Widget* ParentWidget::addChild(widget_ptr_t&& child)
|
||||||
@ -81,9 +85,9 @@ void WidgetTree::notifyMouseMoved(const sdlpp::MouseMotionEvent& event)
|
|||||||
mRootWidget.handleMouseMotion(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
|
void WidgetTree::invalidateWidget(Widget* widget) noexcept
|
||||||
|
@ -13,6 +13,12 @@
|
|||||||
|
|
||||||
namespace sdl_gpu_test
|
namespace sdl_gpu_test
|
||||||
{
|
{
|
||||||
|
enum class EventResponse
|
||||||
|
{
|
||||||
|
UNHANDLED,
|
||||||
|
HANDLED
|
||||||
|
};
|
||||||
|
|
||||||
class Widget
|
class Widget
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
@ -23,7 +29,7 @@ public:
|
|||||||
|
|
||||||
virtual void handleEnteredTree() {}
|
virtual void handleEnteredTree() {}
|
||||||
virtual void handleMouseMotion(const sdlpp::MouseMotionEvent& /* event */) {}
|
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() {}
|
virtual void revalidate() {}
|
||||||
|
|
||||||
@ -43,7 +49,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
void handleEnteredTree() override;
|
void handleEnteredTree() override;
|
||||||
void handleMouseMotion(const sdlpp::MouseMotionEvent& event) 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);
|
Widget* addChild(widget_ptr_t&& child);
|
||||||
|
|
||||||
@ -76,7 +82,7 @@ public:
|
|||||||
ParentWidget& getRootWidget() noexcept { return mRootWidget; }
|
ParentWidget& getRootWidget() noexcept { return mRootWidget; }
|
||||||
|
|
||||||
void notifyMouseMoved(const sdlpp::MouseMotionEvent& event);
|
void notifyMouseMoved(const sdlpp::MouseMotionEvent& event);
|
||||||
void notifyMouseButton(const sdlpp::MouseButtonEvent& event);
|
EventResponse notifyMouseButton(const sdlpp::MouseButtonEvent& event);
|
||||||
|
|
||||||
void invalidateWidget(Widget* widget) noexcept;
|
void invalidateWidget(Widget* widget) noexcept;
|
||||||
};
|
};
|
||||||
|
@ -33,7 +33,7 @@ def _pack_textures(env, target: str, source: 'list[str]'):
|
|||||||
source = source,
|
source = source,
|
||||||
action = f'{_exe_name()} $TARGET $SOURCES'
|
action = f'{_exe_name()} $TARGET $SOURCES'
|
||||||
)
|
)
|
||||||
# env.Depends(cmd, prog_packer)
|
env.Depends(cmd, prog_packer)
|
||||||
return cmd
|
return cmd
|
||||||
env.AddMethod(_pack_textures, 'PackTextures')
|
env.AddMethod(_pack_textures, 'PackTextures')
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user