]> git.mxchange.org Git - flightgear.git/commitdiff
Canvas add event time and expose current click count
authorThomas Geymayer <tomgey@gmail.com>
Thu, 6 Dec 2012 22:27:25 +0000 (23:27 +0100)
committerThomas Geymayer <tomgey@gmail.com>
Thu, 6 Dec 2012 22:27:25 +0000 (23:27 +0100)
src/Canvas/gui_mgr.cxx
src/GUI/CanvasWidget.cxx
src/GUI/CanvasWidget.hxx
src/Scripting/NasalCanvas.cxx

index 02d8073c78b3644f8702b14e628c213c50a758c6..cf5a047b061ede69ee321ffefea46b2fb4ada165 100644 (file)
@@ -259,6 +259,7 @@ bool GUIMgr::handleMouse(const osgGA::GUIEventAdapter& ea)
 
   namespace sc = simgear::canvas;
   sc::MouseEventPtr event(new sc::MouseEvent);
+  event->time = ea.getTime();
 
   event->pos.x() = 0.5 * (ea.getXnormalized() + 1) * _width + 0.5;
   event->pos.y() = 0.5 * (ea.getYnormalized() + 1) * _height + 0.5;
index fe0119db5e1645780b6aabca598cbe91086a6d54..bbbecd55eca3579632948f0b137677cfd0eb4509 100644 (file)
@@ -18,6 +18,8 @@
 #include <simgear/canvas/Canvas.hxx>
 #include <simgear/canvas/MouseEvent.hxx>
 
+SGPropertyNode_ptr CanvasWidget::_time;
+
 //------------------------------------------------------------------------------
 CanvasWidget::CanvasWidget( int x, int y,
                             int width, int height,
@@ -113,6 +115,11 @@ void CanvasWidget::doHit(int button, int updown, int x, int y)
 
   namespace sc = simgear::canvas;
   sc::MouseEventPtr event(new sc::MouseEvent);
+
+  if( !_time )
+    _time = globals->get_props()->getNode("/sim/time/elapsed-sec");
+  event->time = _time->getDoubleValue();
+
   event->pos.set(x - abox.min[0], abox.max[1] - y);
   event->delta.set( event->pos.x() - _last_x,
                     event->pos.y() - _last_y );
index f5fa0bf75a2056c0f134ba7478d8e65928120566..403523b255f5ec587d560e0552f5173bc11c3b21 100644 (file)
@@ -47,6 +47,8 @@ class CanvasWidget:
 
     float _last_x,
           _last_y;
+
+    static SGPropertyNode_ptr _time;
 };
 
 #endif /* CANVASWIDGET_HXX_ */
index fffe5d5a9756b0c5b53baea17a18093ccfbde87f..b5b181e6f72c71e42b11a11c30a8873af1b8734c 100644 (file)
@@ -181,7 +181,8 @@ naRef initNasalCanvas(naRef globals, naContext c, naRef gcSave)
     .member("x", &sc::MouseEvent::getPosX)
     .member("y", &sc::MouseEvent::getPosY)
     .member("deltaX", &sc::MouseEvent::getDeltaX)
-    .member("deltaY", &sc::MouseEvent::getDeltaY);
+    .member("deltaY", &sc::MouseEvent::getDeltaY)
+    .member("click_count", &sc::MouseEvent::getCurrentClickCount);
   NasalCanvas::init("Canvas")
     .member("_node_ghost", &elementGetNode<sc::Canvas>)
     .member("size_x", &sc::Canvas::getSizeX)