summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/lltoolbarview.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/indra/newview/lltoolbarview.cpp b/indra/newview/lltoolbarview.cpp
index b43c4e80fa..21e682f072 100644
--- a/indra/newview/lltoolbarview.cpp
+++ b/indra/newview/lltoolbarview.cpp
@@ -416,24 +416,30 @@ BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* t
// Suppress the command from the toolbars (including the one it's dropped in,
// this will handle move position).
int old_rank = LLToolBar::RANK_NONE;
+ LLToolBar* old_toolbar = NULL;
int rank;
if ((rank = gToolBarView->mToolbarLeft->removeCommand(command_id)) != LLToolBar::RANK_NONE)
{
old_rank = rank;
+ old_toolbar = gToolBarView->mToolbarLeft;
}
if ((rank = gToolBarView->mToolbarRight->removeCommand(command_id)) != LLToolBar::RANK_NONE)
{
old_rank = rank;
+ old_toolbar = gToolBarView->mToolbarRight;
}
if ((rank = gToolBarView->mToolbarBottom->removeCommand(command_id)) != LLToolBar::RANK_NONE)
{
old_rank = rank;
+ old_toolbar = gToolBarView->mToolbarBottom;
}
// Now insert it in the toolbar at the detected rank
if (!toolbar->isReadOnly())
{
- if ((old_rank != LLToolBar::RANK_NONE) && (old_rank < new_rank))
+ if ((old_toolbar == toolbar) && (old_rank != LLToolBar::RANK_NONE) && (old_rank < new_rank))
{
+ // If we just removed the command from the same toolbar, we need to consider that it might
+ // change the target rank.
new_rank -= 1;
}
toolbar->addCommand(command->id(),new_rank);