X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fcanvas%2FCanvasEventVisitor.hxx;h=84b304a5537bf56444ea094468a1e43913cf7790;hb=01a43b49a5cb55e8218beb842e5743c04666dd8d;hp=415641b0dbc6b57c7c31fec8a7054659939e7d60;hpb=77946585b1c9b54c4848b604eb1549e2ec55df12;p=simgear.git diff --git a/simgear/canvas/CanvasEventVisitor.hxx b/simgear/canvas/CanvasEventVisitor.hxx index 415641b0..84b304a5 100644 --- a/simgear/canvas/CanvasEventVisitor.hxx +++ b/simgear/canvas/CanvasEventVisitor.hxx @@ -1,5 +1,5 @@ // Visitor for traversing a canvas element hierarchy similar to the traversal -// of the DOM Level 2 Event Model +// of the DOM Level 3 Event Model // // Copyright (C) 2012 Thomas Geymayer // @@ -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