summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorDmitry Zaporozhan <dzaporozhan@productengine.com>2009-12-24 16:10:53 +0200
committerDmitry Zaporozhan <dzaporozhan@productengine.com>2009-12-24 16:10:53 +0200
commit0c3f6abca6b8bbf26576e2a3776588eb72832cb2 (patch)
treea57fb58e6fd13acb8c0165dd2d42102fe121602d /indra
parent9c90822c9d5409f267c5d457489a6fd295dabd2a (diff)
Fixed low bug EXT-1326 - Pick info should contain vertical scroll-bar if height of viewer window less than Pick Info's height.
--HG-- branch : product-engine
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llpanelpick.cpp26
-rw-r--r--indra/newview/llpanelpick.h9
2 files changed, 35 insertions, 0 deletions
diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp
index 839452d061..7a4dd3569d 100644
--- a/indra/newview/llpanelpick.cpp
+++ b/indra/newview/llpanelpick.cpp
@@ -284,6 +284,7 @@ void LLPanelPickInfo::setPickName(const std::string& name)
void LLPanelPickInfo::setPickDesc(const std::string& desc)
{
childSetValue(XML_DESC, desc);
+ updateContentPanelRect();
}
void LLPanelPickInfo::setPickLocation(const std::string& location)
@@ -291,6 +292,31 @@ void LLPanelPickInfo::setPickLocation(const std::string& location)
childSetValue(XML_LOCATION, location);
}
+void LLPanelPickInfo::updateContentPanelRect()
+{
+ LLTextBox* desc = getChild<LLTextBox>(XML_DESC);
+
+ S32 text_height = desc->getTextPixelHeight();
+ LLRect text_rect = desc->getRect();
+
+ // let text-box height fit text height
+ text_rect.set(text_rect.mLeft, text_rect.mTop, text_rect.mRight, text_rect.mTop - text_height);
+ desc->setRect(text_rect);
+ desc->reshape(text_rect.getWidth(), text_rect.getHeight());
+ // force reflow
+ desc->setText(desc->getText());
+
+ // bottom of description text-box will be bottom of content panel
+ desc->localRectToOtherView(desc->getLocalRect(), &text_rect, getChild<LLView>("profile_scroll"));
+
+ LLPanel* content_panel = getChild<LLPanel>("scroll_content_panel");
+ LLRect content_rect = content_panel->getRect();
+ content_rect.set(content_rect.mLeft, content_rect.mTop, content_rect.mRight, text_rect.mBottom);
+ // Somehow setRect moves all elements down.
+ // Single reshape() updates rect and does not move anything.
+ content_panel->reshape(content_rect.getWidth(), content_rect.getHeight());
+}
+
void LLPanelPickInfo::onClickMap()
{
LLFloaterWorldMap::getInstance()->trackLocation(getPosGlobal());
diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h
index 95add387d0..12b5a116b4 100644
--- a/indra/newview/llpanelpick.h
+++ b/indra/newview/llpanelpick.h
@@ -140,6 +140,15 @@ protected:
virtual LLVector3d& getPosGlobal() { return mPosGlobal; }
/**
+ * Reshapes content panel to fit all elements.
+ *
+ * Assume that description text-box is the last element of panel.
+ * Reshape text-box to fit text height and then reshape content panel to fit
+ * text-box bottom. EXT-1326
+ */
+ void updateContentPanelRect();
+
+ /**
* Callback for "Map" button, opens Map
*/
void onClickMap();