Something went wrong. Try again.
art software for the rest of us
drawing paint image sdl art
Something went wrong. Try again.
1.1 kB · 43 lines
C
1234567891011121314151617181920212223242526272829303132333435363738394041424344#pragma once
#include "../../Widgets/Widget.h"#include "../../Input/PointerStream.h"#include <memory>
namespace UI {
class InputRouter {private: struct WidgetReference { Widget* pointer = nullptr; std::weak_ptr<void> lifetime; };
WidgetReference rootWidget; WidgetReference hoveredWidget; WidgetReference activeWidget; WidgetReference focusedWidget; bool ancestorConsumedPointer = false; // needs multitouch/pointerstream support
static bool IsAlive(const WidgetReference& reference); static void SetReference(WidgetReference& reference, Widget* widget); static void ClearReference(WidgetReference& reference);
public: InputRouter(); explicit InputRouter(Widget* root);
void SetRootWidget(Widget* root); Widget* GetRootWidget() const;
Widget* GetHoveredWidget() const; Widget* GetActiveWidget() const; Widget* GetFocusedWidget() const;
void SetFocusedWidget(Widget* widget); void ProcessPointerHover(Point scaledPoint);
bool ProcessPointerStream(const std::shared_ptr<PointerStream>& stream);};
}