]> git.mxchange.org Git - flightgear.git/commitdiff
Merge branch 'topics/bug192' into next
authorJames Turner <zakalawe@mac.com>
Tue, 7 Dec 2010 13:06:39 +0000 (13:06 +0000)
committerJames Turner <zakalawe@mac.com>
Tue, 7 Dec 2010 13:06:39 +0000 (13:06 +0000)
src/GUI/WaypointList.cxx
src/GUI/dialog.cxx
src/GUI/dialog.hxx
src/GUI/layout.cxx

index 1c1014e0393ae7f0df5a594fe07bf1bc4c9d4d80..31c5e480c57ad46ddbd909fb3c10109b0188849f 100644 (file)
@@ -818,6 +818,7 @@ void ScrolledWaypointList::setScrollPercent(float v)
 void ScrolledWaypointList::setSize(int w, int h)
 {
   updateWantsScroll(w, h);
+  puGroup::setSize(w, h);
 }
 
 void ScrolledWaypointList::updateWantsScroll(int w, int h)
index 71852fbc7bdb2007daf500dfc72cac8680f50169..8a4160499a489001193cae7e0f23687f80adb077 100644 (file)
@@ -1376,4 +1376,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
index 10739280d075fd74abc654fb3366966970641ce2..497e07104b8562cbebc07f96a289ab25acb3cfd4 100644 (file)
@@ -266,8 +266,11 @@ public:
         
     void update();
     
+    virtual void setSize(int w, int h);
+    
     virtual int checkHit(int b, int up, int x, int y);
-
+    
+    virtual void recalc_bbox();
 private:
     bool _inHit;
 };
index f9581b3d5503a957313a340b7ec867960bbbfe40..b6fa5ab8f44926c56307f5056926fe72b65d2432 100644 (file)
@@ -80,7 +80,7 @@ void LayoutWidget::calcPrefSize(int* w, int* h)
         if(getBool("vertical")) *w = 4*UNIT;
         else                    *h = 4*UNIT;
     } else if (isType("list") || isType("airport-list")
-            || isType("property-list") || isType("dial")) {
+            || isType("property-list") || isType("dial") || isType("waypointlist")) {
         *w = *h = 12*UNIT;
     } else if (isType("hrule")) {
         *h = 1;