From 29e0461e015a6c94b5fcb1f7259995bac4ba3013 Mon Sep 17 00:00:00 2001
From: Raphael Grimm <raphael.grimm@student.kit.edu>
Date: Sat, 12 Aug 2017 16:53:40 +0200
Subject: [PATCH] Change DescribedWidgetLayoutBase::addChild to return the
 widget and use it in derived classes

---
 .../WidgetDescription/WidgetDescription.cpp          | 12 +++++-------
 .../libraries/WidgetDescription/WidgetDescription.h  |  2 +-
 2 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.cpp b/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.cpp
index 52b48b28..699ec0e7 100644
--- a/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.cpp
+++ b/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.cpp
@@ -70,8 +70,7 @@ namespace armarx
                 layout()->setContentsMargins(0, 0, 0, 0);
                 for (const WidgetPtr& childPtr : ptr->widgets)
                 {
-                    addChild(childPtr);
-                    layout()->addWidget(children.back());
+                    layout()->addWidget(addChild(childPtr));
                 }
             }
 
@@ -90,8 +89,7 @@ namespace armarx
                 layout()->setContentsMargins(0, 0, 0, 0);
                 for (const WidgetPtr& childPtr : ptr->widgets)
                 {
-                    addChild(childPtr);
-                    layout()->addWidget(children.back());
+                    layout()->addWidget(addChild(childPtr));
                 }
             }
         };
@@ -110,8 +108,7 @@ namespace armarx
                 layout()->setContentsMargins(0, 0, 0, 0);
                 for (const LabeledWidgetPtr& labeledWidget : ptr->widgets)
                 {
-                    addChild(labeledWidget->w);
-                    l->addRow(QString::fromStdString(labeledWidget->label), children.back());
+                    l->addRow(QString::fromStdString(child->label), addChild(child->child));
                 }
             }
         };
@@ -586,7 +583,7 @@ namespace armarx
             return result;
         }
 
-        void DescribedWidgetLayoutBase::addChild(const WidgetPtr& childPtr)
+        DescribedWidgetBase* DescribedWidgetLayoutBase::addChild(const WidgetPtr& childPtr)
         {
             ARMARX_CHECK_EXPRESSION(listener);
             DescribedWidgetBase* c = makeDescribedWidget(childPtr, listener);
@@ -595,6 +592,7 @@ namespace armarx
                 this, SIGNAL(variantWidgetUpdatedSignal(std::string, VariantWidgetContent::VariantWidgetContentBasePtr)),
                 c , SLOT(variantWidgetUpdatedSlot(std::string, VariantWidgetContent::VariantWidgetContentBasePtr))
             );
+            return c;
         }
 
         DescribedWidgetBase* makeDescribedWidget(const WidgetPtr& p, ValueChangedListenerInterface* listener)
diff --git a/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.h b/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.h
index 8fe82d93..4f2abe86 100644
--- a/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.h
+++ b/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.h
@@ -84,7 +84,7 @@ namespace armarx
             {
                 emit variantWidgetUpdatedSignal(name, data);
             }
-            virtual void addChild(const WidgetPtr& childPtr);
+            virtual DescribedWidgetBase* addChild(const WidgetPtr& childPtr);
 
         protected:
             std::vector<DescribedWidgetBase*> children;
-- 
GitLab