// 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 <tomgey@gmail.com>
//
#define CANVAS_EVENT_VISITOR_HXX_
#include "canvas_fwd.hxx"
-#include <deque>
+#include "CanvasEventManager.hxx"
namespace simgear
{
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<EventTarget> EventTargets;
- EventTargets _target_path;
- TraverseMode _traverse_mode;
+ TraverseMode _traverse_mode;
+ EventPropagationPath _target_path;
+ ElementPtr _root;
+
};
} // namespace canvas