X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fcanvas%2FCanvasEventVisitor.hxx;h=84b304a5537bf56444ea094468a1e43913cf7790;hb=36cb7a752b5d86d636aebd2379773923e0cbed1a;hp=e12b908856086abefd5bfc78884dbb8a3d4cfee6;hpb=46442ef50c5a2b7c8e41e5c025f86c1cd35e6e15;p=simgear.git diff --git a/simgear/canvas/CanvasEventVisitor.hxx b/simgear/canvas/CanvasEventVisitor.hxx index e12b9088..84b304a5 100644 --- a/simgear/canvas/CanvasEventVisitor.hxx +++ b/simgear/canvas/CanvasEventVisitor.hxx @@ -21,7 +21,7 @@ #define CANVAS_EVENT_VISITOR_HXX_ #include "canvas_fwd.hxx" -#include +#include "CanvasEventManager.hxx" namespace simgear { @@ -38,26 +38,27 @@ namespace canvas TRAVERSE_DOWN }; + /** + * + * @param mode + * @param pos Mouse position + * @param root Element to dispatch events to if no element is hit + */ EventVisitor( TraverseMode mode, const osg::Vec2f& pos, - const osg::Vec2f& delta ); + const ElementPtr& root = ElementPtr() ); virtual ~EventVisitor(); virtual bool traverse(Element& el); virtual bool apply(Element& el); - bool propagateEvent(const EventPtr& event); + const EventPropagationPath& getPropagationPath() const; protected: - struct EventTarget - { - Element* element; - osg::Vec2f local_pos, - local_delta; - }; - typedef std::deque EventTargets; - EventTargets _target_path; - TraverseMode _traverse_mode; + TraverseMode _traverse_mode; + EventPropagationPath _target_path; + ElementPtr _root; + }; } // namespace canvas