]> git.mxchange.org Git - flightgear.git/commitdiff
- implement setSize(): We can't just use puObject::setSize() -- we do, of
authormfranz <mfranz>
Thu, 23 Mar 2006 23:00:31 +0000 (23:00 +0000)
committermfranz <mfranz>
Thu, 23 Mar 2006 23:00:31 +0000 (23:00 +0000)
  course, have to re-layout all sub-widgets on resizing
- make slider size configurable, like it's done for the close relative
  puLargeInput

src/GUI/puList.cxx
src/GUI/puList.hxx

index fb4b33bee0ba85ec1aecc6a2459680910f07d027..d5b707cdb91299ffc214ea91662ae65bd0dfa826 100644 (file)
@@ -61,15 +61,17 @@ handle_arrow (puObject * arrow)
     slider->setValue(1.0f - float(index)/list_box->getNumItems());
 }
 
-puList::puList (int x, int y, int w, int h)
-    : puGroup(x, y)
+puList::puList (int x, int y, int w, int h, int sl_width)
+    : puGroup(x, y),
+      sw(sl_width)
 {
     type |= PUCLASS_LIST;
     init(w, h);
 }
 
-puList::puList (int x, int y, int w, int h, char ** contents)
-    : puGroup(x, y)
+puList::puList (int x, int y, int w, int h, char ** contents, int sl_width)
+    : puGroup(x, y),
+      sw(sl_width)
 {
     type |= PUCLASS_LIST;
     init(w, h);
@@ -103,7 +105,6 @@ puList::getListIntegerValue()
 void
 puList::init (int w, int h)
 {
-    const int sw = 20;
     _frame = new puFrame(0, 0, w, h);
 
     _list_box = new puListBox(0, 0, w-sw, h);
@@ -143,4 +144,18 @@ puList::setColour (int which, float r, float g, float b, float a)
     _list_box->setColour(which, r, g, b, a);
 }
 
+void
+puList::setSize (int w, int h)
+{
+    puObject::setSize(w, h);
+    _frame->setSize(w, h);
+    _list_box->setSize(w-sw, h);
+
+    _slider->setPosition(w-sw, sw);
+    _slider->setSize(sw, h-2*sw);
+
+    _down_arrow->setPosition(w-sw, 0);
+    _up_arrow->setPosition(w-sw, h-sw);
+}
+
 // end of puList.cxx
index 414a097a52a62f34846587ea7fde2955016f0089..10d5ec52f551a5884be863f774ccea7db714fc91 100644 (file)
@@ -19,8 +19,8 @@
 class puList : public puGroup
 {
  public:
-    puList (int x, int y, int w, int h);
-    puList (int x, int y, int w, int h, char ** contents);
+    puList (int x, int y, int w, int h, int sl_width = 20);
+    puList (int x, int y, int w, int h, char ** contents, int sl_width = 20);
     virtual ~puList ();
 
     virtual void newList (char ** contents);
@@ -29,12 +29,14 @@ class puList : public puGroup
     virtual int getListIntegerValue();
     virtual void setColourScheme (float r, float g, float b, float a);
     virtual void setColour (int which, float r, float g, float b, float a);
+    virtual void setSize (int w, int h);
 
 
  protected:
     virtual void init (int w, int h);
 
  private:
+    int sw;            // slider width
     char ** _contents;
     puFrame * _frame;
     puListBox * _list_box;