From 5c6f18d3d20c3be9dded0895af5b290e01f8474b Mon Sep 17 00:00:00 2001
From: David Li <dawei.li@gmx.net>
Date: Mon, 21 Mar 2016 13:01:17 +0100
Subject: [PATCH] fixing instrument view

---
 GUI/coregui/Models/SessionItem.cpp                       | 3 ++-
 GUI/coregui/Views/InstrumentWidgets/BeamEditorWidget.cpp | 7 ++++---
 GUI/coregui/Views/PropertyEditor/ComponentBoxEditor.cpp  | 4 ++--
 GUI/coregui/Views/PropertyEditor/ComponentEditor.cpp     | 4 ++--
 4 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/GUI/coregui/Models/SessionItem.cpp b/GUI/coregui/Models/SessionItem.cpp
index 49a2287df1f..3325043ee75 100644
--- a/GUI/coregui/Models/SessionItem.cpp
+++ b/GUI/coregui/Models/SessionItem.cpp
@@ -50,6 +50,7 @@ SessionItem::SessionItem(const QString &modelType)
 
     setData(SessionModel::ModelTypeRole, modelType);
     setDisplayName(modelType);
+    setDecimals(3);
 }
 
 /*!
@@ -579,7 +580,7 @@ void SessionItem::emitDataChanged(int role)
 {
     if (m_model) {
         QModelIndex index = m_model->indexOfItem(this);
-        m_model->dataChanged(index, index, QVector<int>() << role);
+        m_model->dataChanged(index, index.sibling(index.row(), 1), QVector<int>() << role);
     }
 }
 
diff --git a/GUI/coregui/Views/InstrumentWidgets/BeamEditorWidget.cpp b/GUI/coregui/Views/InstrumentWidgets/BeamEditorWidget.cpp
index ed013ca810c..78171c3a5b9 100644
--- a/GUI/coregui/Views/InstrumentWidgets/BeamEditorWidget.cpp
+++ b/GUI/coregui/Views/InstrumentWidgets/BeamEditorWidget.cpp
@@ -20,6 +20,7 @@
 #include "GroupInfoBox.h"
 #include "GUIHelpers.h"
 #include "ComponentInfoBox.h"
+#include "BeamDistributionItem.h"
 #include <QGroupBox>
 #include <QVBoxLayout>
 #include <QLabel>
@@ -97,14 +98,14 @@ void BeamEditorWidget::setBeamItem(BeamItem *beamItem)
     m_intensityEditor->addItem(m_beamItem->getItem(BeamItem::P_INTENSITY));
 
     SessionItem *wavelengthItem = m_beamItem->getGroupItem(BeamItem::P_WAVELENGTH);
-    m_wavelengthPresenter->addPropertyItems(wavelengthItem);
+    m_wavelengthPresenter->addPropertyItems(wavelengthItem->getItem(BeamDistributionItem::P_DISTRIBUTION));
 
     SessionItem *inclinationAngleItem
             = m_beamItem->getGroupItem(BeamItem::P_INCLINATION_ANGLE);
-    m_inclinationAnglePresenter->addPropertyItems(inclinationAngleItem);
+    m_inclinationAnglePresenter->addPropertyItems(inclinationAngleItem->getItem(BeamDistributionItem::P_DISTRIBUTION));
 
     SessionItem *azimuthalAngleItem = m_beamItem->getGroupItem(BeamItem::P_AZIMUTHAL_ANGLE);
-    m_azimuthalAnglePresenter->addPropertyItems(azimuthalAngleItem);
+    m_azimuthalAnglePresenter->addPropertyItems(azimuthalAngleItem->getItem(BeamDistributionItem::P_DISTRIBUTION));
 }
 
 void BeamEditorWidget::onDialogRequest(SessionItem *item, QString name)
diff --git a/GUI/coregui/Views/PropertyEditor/ComponentBoxEditor.cpp b/GUI/coregui/Views/PropertyEditor/ComponentBoxEditor.cpp
index 4c5b2688ee5..4eb19de278b 100644
--- a/GUI/coregui/Views/PropertyEditor/ComponentBoxEditor.cpp
+++ b/GUI/coregui/Views/PropertyEditor/ComponentBoxEditor.cpp
@@ -68,8 +68,8 @@ void ComponentBoxEditor::updateItem(SessionItem *item, QtVariantProperty *parent
 
 void ComponentBoxEditor::onDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles)
 {
-    if (topLeft != bottomRight)
-        return;
+//    if (topLeft != bottomRight)
+//        return;
 
     SessionModel *model = qobject_cast<SessionModel *>(sender());
     Q_ASSERT(model);
diff --git a/GUI/coregui/Views/PropertyEditor/ComponentEditor.cpp b/GUI/coregui/Views/PropertyEditor/ComponentEditor.cpp
index a6b562c556b..a328fc91476 100644
--- a/GUI/coregui/Views/PropertyEditor/ComponentEditor.cpp
+++ b/GUI/coregui/Views/PropertyEditor/ComponentEditor.cpp
@@ -88,8 +88,8 @@ void ComponentEditor::onDataChanged(const QModelIndex &topLeft,
                                     const QModelIndex &bottomRight,
                                     const QVector<int> &roles)
 {
-    if (topLeft != bottomRight)
-        return;
+//    if (topLeft != bottomRight)
+//        return;
 
     SessionModel *model = qobject_cast<SessionModel *>(sender());
     Q_ASSERT(model);
-- 
GitLab