diff options
| author | Loren Shih <seraph@lindenlab.com> | 2009-11-05 15:00:36 -0500 |
|---|---|---|
| committer | Loren Shih <seraph@lindenlab.com> | 2009-11-05 15:00:36 -0500 |
| commit | 280e01729173e79e37939c3e764f9f3f674f79da (patch) | |
| tree | 122ebfb43b26ed12f44a05b5cf4c5d637fb3626a /indra/newview/llsidepaneltaskinfo.cpp | |
| parent | 7615ec497e7b69c8eefbf8ef1a464eaa22e77bf1 (diff) | |
EXT-2229 : Task SP : Update task on new selection
Using activePanel hack to update selection when it changes.
--HG--
branch : avatar-pipeline
Diffstat (limited to 'indra/newview/llsidepaneltaskinfo.cpp')
| -rw-r--r-- | indra/newview/llsidepaneltaskinfo.cpp | 51 |
1 files changed, 48 insertions, 3 deletions
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp index 4284c95b13..01c832d7d5 100644 --- a/indra/newview/llsidepaneltaskinfo.cpp +++ b/indra/newview/llsidepaneltaskinfo.cpp @@ -71,6 +71,8 @@ /// Class llsidepaneltaskinfo ///---------------------------------------------------------------------------- +LLSidepanelTaskInfo* LLSidepanelTaskInfo::sActivePanel = NULL; + static LLRegisterPanelClassWrapper<LLSidepanelTaskInfo> t_task_info("sidepanel_task_info"); // Default constructor @@ -79,6 +81,14 @@ LLSidepanelTaskInfo::LLSidepanelTaskInfo() setMouseOpaque(FALSE); } + +LLSidepanelTaskInfo::~LLSidepanelTaskInfo() +{ + if (sActivePanel == this) + sActivePanel = NULL; +} + +// virtual BOOL LLSidepanelTaskInfo::postBuild() { LLSidepanelInventorySubpanel::postBuild(); @@ -101,12 +111,20 @@ BOOL LLSidepanelTaskInfo::postBuild() return TRUE; } -LLSidepanelTaskInfo::~LLSidepanelTaskInfo() +// virtual +void LLSidepanelTaskInfo::setVisible(BOOL visible) { - // base class will take care of everything + LLPanel::setVisible(visible); + if (visible) + { + sActivePanel = this; + } + else + { + sActivePanel = NULL; + } } - void LLSidepanelTaskInfo::refresh() { LLButton* BtnDeedToGroup = getChild<LLButton>("button deed"); @@ -1037,6 +1055,8 @@ void LLSidepanelTaskInfo::updateVerbs() mBuyBtn->setVisible(!getIsEditing()); mOpenBtn->setEnabled(enable_object_open()); + const LLViewerObject *obj = getFirstSelectedObject(); + mEditBtn->setEnabled(obj && obj->permModify()); } void LLSidepanelTaskInfo::onOpenButtonClicked() @@ -1077,3 +1097,28 @@ void LLSidepanelTaskInfo::setObjectSelection(LLObjectSelectionHandle selection) { mObjectSelection = selection; } + +LLSidepanelTaskInfo* LLSidepanelTaskInfo::getActivePanel() +{ + return sActivePanel; +} + +LLViewerObject* LLSidepanelTaskInfo::getFirstSelectedObject() +{ + LLSelectNode *node = mObjectSelection->getFirstRootNode(); + if (node) + { + return node->getObject(); + } + return NULL; +} + +const LLUUID& LLSidepanelTaskInfo::getSelectedUUID() +{ + const LLViewerObject* obj = getFirstSelectedObject(); + if (obj) + { + return obj->getID(); + } + return LLUUID::null; +} |
