]> git.mxchange.org Git - simgear.git/blobdiff - simgear/canvas/CanvasEventVisitor.hxx
canvas::Layout: clear parent/canvas after calling onRemove.
[simgear.git] / simgear / canvas / CanvasEventVisitor.hxx
index e12b908856086abefd5bfc78884dbb8a3d4cfee6..84b304a5537bf56444ea094468a1e43913cf7790 100644 (file)
@@ -21,7 +21,7 @@
 #define CANVAS_EVENT_VISITOR_HXX_
 
 #include "canvas_fwd.hxx"
-#include <deque>
+#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<EventTarget> EventTargets;
 
-      EventTargets  _target_path;
-      TraverseMode  _traverse_mode;
+      TraverseMode          _traverse_mode;
+      EventPropagationPath  _target_path;
+      ElementPtr            _root;
+
   };
 
 } // namespace canvas