summaryrefslogtreecommitdiff
path: root/indra/newview/lltoolbarview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/lltoolbarview.cpp')
-rw-r--r--indra/newview/lltoolbarview.cpp39
1 files changed, 30 insertions, 9 deletions
diff --git a/indra/newview/lltoolbarview.cpp b/indra/newview/lltoolbarview.cpp
index 5ff0ccfeb2..b2318f9158 100644
--- a/indra/newview/lltoolbarview.cpp
+++ b/indra/newview/lltoolbarview.cpp
@@ -73,8 +73,11 @@ LLToolBarView::ToolbarSet::ToolbarSet()
LLToolBarView::LLToolBarView(const LLToolBarView::Params& p)
: LLUICtrl(p),
mDragStarted(false),
+ mShowToolbars(true),
mDragToolbarButton(NULL),
- mToolbarsLoaded(false)
+ mDragItem(NULL),
+ mToolbarsLoaded(false),
+ mBottomToolbarPanel(NULL)
{
for (S32 i = 0; i < TOOLBAR_COUNT; i++)
{
@@ -98,6 +101,7 @@ BOOL LLToolBarView::postBuild()
mToolbars[TOOLBAR_LEFT] = getChild<LLToolBar>("toolbar_left");
mToolbars[TOOLBAR_RIGHT] = getChild<LLToolBar>("toolbar_right");
mToolbars[TOOLBAR_BOTTOM] = getChild<LLToolBar>("toolbar_bottom");
+ mBottomToolbarPanel = getChild<LLView>("bottom_toolbar_panel");
for (int i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
{
@@ -237,8 +241,9 @@ bool LLToolBarView::loadToolbars(bool force_default)
LLXUIParser parser;
if (!err)
{
- parser.readXUI(root, toolbar_set, toolbar_file);
+ parser.readXUI(root, toolbar_set, toolbar_file);
}
+
if (!err && !toolbar_set.validateBlock())
{
llwarns << "Unable to validate toolbars from file: " << toolbar_file << llendl;
@@ -250,8 +255,9 @@ bool LLToolBarView::loadToolbars(bool force_default)
if (force_default)
{
llerrs << "Unable to load toolbars from default file : " << toolbar_file << llendl;
- return false;
- }
+ return false;
+ }
+
// Try to load the default toolbars
return loadToolbars(true);
}
@@ -530,6 +536,13 @@ void LLToolBarView::draw()
}
}
+ for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+ {
+ mToolbars[i]->getParent()->setVisible(mShowToolbars
+ && (mToolbars[i]->hasButtons()
+ || isToolDragged()));
+ }
+
// Draw drop zones if drop of a tool is active
if (isToolDragged())
{
@@ -571,7 +584,6 @@ BOOL LLToolBarView::handleDragTool( S32 x, S32 y, const LLUUID& uuid, LLAssetTyp
uuid_vec_t cargo_ids;
types.push_back(DAD_WIDGET);
cargo_ids.push_back(uuid);
- gClipboard.setSourceObject(uuid,LLAssetType::AT_WIDGET);
LLToolDragAndDrop::ESource src = LLToolDragAndDrop::SOURCE_VIEWER;
LLUUID srcID;
LLToolDragAndDrop::getInstance()->beginMultiDrag(types, cargo_ids, src, srcID);
@@ -595,7 +607,7 @@ BOOL LLToolBarView::handleDragTool( S32 x, S32 y, const LLUUID& uuid, LLAssetTyp
BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* toolbar)
{
BOOL handled = FALSE;
- LLInventoryItem* inv_item = (LLInventoryItem*)cargo_data;
+ LLInventoryObject* inv_item = static_cast<LLInventoryObject*>(cargo_data);
LLAssetType::EType type = inv_item->getType();
if (type == LLAssetType::AT_WIDGET)
@@ -654,12 +666,21 @@ void LLToolBarView::resetDragTool(LLToolBarButton* toolbarButton)
gToolBarView->mDragToolbarButton = toolbarButton;
}
-void LLToolBarView::setToolBarsVisible(bool visible)
+// Provide a handle on a free standing inventory item containing references to the tool.
+// This might be used by Drag and Drop to move around references to tool items.
+LLInventoryObject* LLToolBarView::getDragItem()
{
- for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+ if (mDragToolbarButton)
{
- mToolbars[i]->getParent()->setVisible(visible);
+ LLUUID item_uuid = mDragToolbarButton->getCommandId().uuid();
+ mDragItem = new LLInventoryObject (item_uuid, LLUUID::null, LLAssetType::AT_WIDGET, "");
}
+ return mDragItem;
+}
+
+void LLToolBarView::setToolBarsVisible(bool visible)
+{
+ mShowToolbars = visible;
}
bool LLToolBarView::isModified() const