]> git.mxchange.org Git - flightgear.git/blobdiff - src/GUI/dialog.cxx
fix #416: reciprocal filter broken
[flightgear.git] / src / GUI / dialog.cxx
index 71852fbc7bdb2007daf500dfc72cac8680f50169..364cf5d1399d7acfa20d9232fe652d2f9c852dfc 100644 (file)
@@ -5,6 +5,8 @@
 #endif
 
 #include <simgear/structure/SGBinding.hxx>
+#include <simgear/props/props_io.hxx>
+
 #include <Scripting/NasalSys.hxx>
 #include <Main/fg_os.hxx>
 
@@ -369,7 +371,7 @@ void fgPopup::applySize(puObject *object)
 void FGDialog::ConditionalObject::update(FGDialog* aDlg)
 {
   if (_name == "visible") {
-    bool wasVis = _pu->isVisible();
+    bool wasVis = _pu->isVisible() != 0;
     bool newVis = test();
     
     if (newVis == wasVis) {
@@ -382,7 +384,7 @@ void FGDialog::ConditionalObject::update(FGDialog* aDlg)
       _pu->hide();
     }
   } else if (_name == "enable") {
-    bool wasEnabled = _pu->isActive();
+    bool wasEnabled = _pu->isActive() != 0;
     bool newEnable = test();
     
     if (wasEnabled == newEnable) {
@@ -1376,4 +1378,36 @@ int fgComboBox::checkHit(int b, int up, int x, int y)
   return r;
 }
 
+void fgComboBox::setSize(int w, int h)
+{
+  puaComboBox::setSize(w, h);
+  recalc_bbox();
+}
+
+void fgComboBox::recalc_bbox()
+{
+// bug-fix for issue #192
+// http://code.google.com/p/flightgear-bugs/issues/detail?id=192
+// puaComboBox is including the height of its popupMenu in the height
+// computation, which breaks layout computations.
+// this implementation skips popup-menus
+  
+  puBox contents;
+  contents.empty();
+  
+  for (puObject *bo = dlist; bo != NULL; bo = bo -> getNextObject()) {
+    if (bo->getType() & PUCLASS_POPUPMENU) {
+      continue;
+    }
+    
+    contents.extend (bo -> getBBox()) ;
+  }
+  
+  abox.max[0] = abox.min[0] + contents.max[0] ;
+  abox.max[1] = abox.min[1] + contents.max[1] ;
+
+  puObject::recalc_bbox () ;
+
+}
+
 // end of dialog.cxx