From 44fd526c98ad2b0e9af7e885b19f5f0078554aaf Mon Sep 17 00:00:00 2001
From: scrawl <scrawl@baseoftrash.de>
Date: Thu, 26 Jun 2014 15:36:19 +0200
Subject: [PATCH] Don't show disposition bar for creatures

---
 apps/openmw/mwgui/dialogue.cpp              | 21 ++++++++++++++++++++-
 apps/openmw/mwgui/dialogue.hpp              |  2 +-
 files/mygui/openmw_dialogue_window_skin.xml |  1 +
 3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/apps/openmw/mwgui/dialogue.cpp b/apps/openmw/mwgui/dialogue.cpp
index e7dd74eee3..a6ab1f122b 100644
--- a/apps/openmw/mwgui/dialogue.cpp
+++ b/apps/openmw/mwgui/dialogue.cpp
@@ -586,13 +586,32 @@ namespace MWGui
         //Clear the list of topics
         mTopicsList->clear();
 
-        if (mPtr.getTypeName() == typeid(ESM::NPC).name())
+        bool dispositionVisible = false;
+        if (mPtr.getClass().isNpc())
         {
+            dispositionVisible = true;
             mDispositionBar->setProgressRange(100);
             mDispositionBar->setProgressPosition(MWBase::Environment::get().getMechanicsManager()->getDerivedDisposition(mPtr));
             mDispositionText->eraseText(0, mDispositionText->getTextLength());
             mDispositionText->addText("#B29154"+boost::lexical_cast<std::string>(MWBase::Environment::get().getMechanicsManager()->getDerivedDisposition(mPtr))+std::string("/100")+"#B29154");
         }
+
+        bool dispositionWasVisible = mDispositionBar->getVisible();
+
+        if (dispositionVisible && !dispositionWasVisible)
+        {
+            mDispositionBar->setVisible(true);
+            float offset = mDispositionBar->getHeight()+5;
+            mTopicsList->setCoord(mTopicsList->getCoord() + MyGUI::IntCoord(0,offset,0,-offset));
+            mTopicsList->adjustSize();
+        }
+        else if (!dispositionVisible && dispositionWasVisible)
+        {
+            mDispositionBar->setVisible(false);
+            float offset = mDispositionBar->getHeight()+5;
+            mTopicsList->setCoord(mTopicsList->getCoord() - MyGUI::IntCoord(0,offset,0,-offset));
+            mTopicsList->adjustSize();
+        }
     }
 
     void DialogueWindow::goodbye()
diff --git a/apps/openmw/mwgui/dialogue.hpp b/apps/openmw/mwgui/dialogue.hpp
index 4e0ca5dde9..516c04942c 100644
--- a/apps/openmw/mwgui/dialogue.hpp
+++ b/apps/openmw/mwgui/dialogue.hpp
@@ -170,7 +170,7 @@ namespace MWGui
         BookPage* mHistory;
         Widgets::MWList*   mTopicsList;
         MyGUI::ScrollBar* mScrollBar;
-        MyGUI::ProgressPtr mDispositionBar;
+        MyGUI::Progress* mDispositionBar;
         MyGUI::EditBox*     mDispositionText;
 
         PersuasionDialog mPersuasionDialog;
diff --git a/files/mygui/openmw_dialogue_window_skin.xml b/files/mygui/openmw_dialogue_window_skin.xml
index 4f68a90faf..5e16fd1f69 100644
--- a/files/mygui/openmw_dialogue_window_skin.xml
+++ b/files/mygui/openmw_dialogue_window_skin.xml
@@ -13,6 +13,7 @@
         <Property key="Colour" value="0000FF"/>
         <Property key="Static" value="1"/>
         <Property key="WordWrap" value="true"/>
+        <Property key="TextShadow" value="true"/>
         <Child type="TextBox" skin="MW_DispEdit" offset="0 0 0 -4" align="Stretch" name="Client"/>
     </Skin>