]> git.mxchange.org Git - flightgear.git/blobdiff - src/Cockpit/panel.cxx
Frederic Bouvier's assorted set of MSVC fixes
[flightgear.git] / src / Cockpit / panel.cxx
index dd5e83afd87e23e36a99840418197e90a5b19906..965d8c04de38fe9c88254f8d353c1210d48b97c2 100644 (file)
@@ -582,7 +582,7 @@ FGPanel::doMouseAction (int button, int updown, int x, int y)
 
   // Having fixed up the coordinates, fall through to the local
   // coordinate handler.
-  doLocalMouseAction(button, updown, x, y);
+  return doLocalMouseAction(button, updown, x, y);
 } 
 
 
@@ -847,11 +847,15 @@ FGInstrumentLayer::transform () const
     FGPanelTransformation *t = *it;
     if (t->test()) {
       float val = (t->node == 0 ? 0.0 : t->node->getFloatValue());
+
+      if (t->has_mod)
+          val = fmod(val, t->mod);
       if (val < t->min) {
        val = t->min;
       } else if (val > t->max) {
        val = t->max;
       }
+
       if(t->table==0) {
        val = val * t->factor + t->offset;
       } else {
@@ -900,6 +904,7 @@ void
 FGGroupLayer::draw ()
 {
   if (test()) {
+    transform();
     int nLayers = _layers.size();
     for (int i = 0; i < nLayers; i++)
       _layers[i]->draw();
@@ -1130,28 +1135,22 @@ FGTextLayer::Chunk::getValue () const
 // Implementation of FGSwitchLayer.
 ////////////////////////////////////////////////////////////////////////
 
-FGSwitchLayer::FGSwitchLayer (int w, int h, const SGPropertyNode * node,
-                             FGInstrumentLayer * layer1,
-                             FGInstrumentLayer * layer2)
-  : FGInstrumentLayer(w, h), _node(node), _layer1(layer1), _layer2(layer2)
+FGSwitchLayer::FGSwitchLayer ()
+  : FGGroupLayer()
 {
 }
 
-FGSwitchLayer::~FGSwitchLayer ()
-{
-  delete _layer1;
-  delete _layer2;
-}
-
 void
 FGSwitchLayer::draw ()
 {
   if (test()) {
     transform();
-    if (_node->getBoolValue()) {
-      _layer1->draw();
-    } else {
-      _layer2->draw();
+    int nLayers = _layers.size();
+    for (int i = 0; i < nLayers; i++) {
+      if (_layers[i]->test()) {
+          _layers[i]->draw();
+          return;
+      }
     }
   }
 }