summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorRichard Nelson <richard@lindenlab.com>2011-09-26 18:51:49 -0700
committerRichard Nelson <richard@lindenlab.com>2011-09-26 18:51:49 -0700
commit67c9f1daa7a631ba09ef94387665d226e3193a6a (patch)
tree85ea8ec87932ce9759b11726305252881bd695db /indra
parent87318979bf8ce1ba68c1e90190737cf99ecc7c50 (diff)
parent7fd0e8c69e6dced4a770da4fac10c154eac5899f (diff)
Automated merge with ssh://hg.lindenlab.com/richard/viewer-experience-fui
Diffstat (limited to 'indra')
-rw-r--r--indra/llui/llcommandmanager.cpp2
-rw-r--r--indra/llui/lldockcontrol.cpp3
-rw-r--r--indra/llui/llmenugl.cpp2
-rw-r--r--indra/llui/lltoolbar.cpp74
-rw-r--r--indra/llui/lltoolbar.h11
-rw-r--r--indra/llui/lltoolbarview.cpp10
-rw-r--r--indra/llui/llview.cpp7
-rw-r--r--indra/llui/llview.h1
-rw-r--r--indra/newview/llfavoritesbar.cpp4
-rw-r--r--indra/newview/llfloatersnapshot.cpp2
-rw-r--r--indra/newview/llfolderview.cpp4
-rw-r--r--indra/newview/llgrouplist.cpp2
-rw-r--r--indra/newview/llpanelpeople.cpp10
-rw-r--r--indra/newview/llpanelteleporthistory.cpp2
-rw-r--r--indra/newview/llviewerwindow.cpp1
-rw-r--r--indra/newview/skins/default/xui/en/menu_toolbars.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_toolbar_view.xml148
-rw-r--r--indra/newview/skins/default/xui/en/widgets/toolbar.xml2
18 files changed, 159 insertions, 130 deletions
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
index 62e1d186f5..783990780b 100644
--- a/indra/llui/llcommandmanager.cpp
+++ b/indra/llui/llcommandmanager.cpp
@@ -117,7 +117,7 @@ void LLCommandManager::addCommand(LLCommand * command)
mCommandIndices[command->id()] = mCommands.size();
mCommands.push_back(command);
- llinfos << "Successfully added command: " << command->id().name() << llendl;
+ lldebugs << "Successfully added command: " << command->id().name() << llendl;
}
//static
diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp
index b1c27126d9..6e39fcd714 100644
--- a/indra/llui/lldockcontrol.cpp
+++ b/indra/llui/lldockcontrol.cpp
@@ -97,6 +97,7 @@ void LLDockControl::getAllowedRect(LLRect& rect)
void LLDockControl::repositionDockable()
{
+ if (!mDockWidget) return;
LLRect dockRect = mDockWidget->calcScreenRect();
LLRect rootRect;
mGetAllowedRectCallback(rootRect);
@@ -160,7 +161,7 @@ bool LLDockControl::isDockVisible()
case TOP:
{
// check is dock inside parent rect
- // assume that parent for all dockable flaoters
+ // assume that parent for all dockable floaters
// is the root view
LLRect dockParentRect =
mDockWidget->getRootView()->calcScreenRect();
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 6cac841cde..badba7a416 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -947,7 +947,7 @@ LLMenuItemBranchGL::LLMenuItemBranchGL(const LLMenuItemBranchGL::Params& p)
LLMenuItemBranchGL::~LLMenuItemBranchGL()
{
- LLView::deleteViewByHandle(mBranchHandle);
+ delete mBranchHandle.get();
}
// virtual
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 1e1cb16fbb..bd45cf4656 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -116,12 +116,12 @@ LLToolBar::LLToolBar(const LLToolBar::Params& p)
LLToolBar::~LLToolBar()
{
- LLView::deleteViewByHandle(mPopupMenuHandle);
+ delete mPopupMenuHandle.get();
}
-BOOL LLToolBar::postBuild()
+void LLToolBar::createContextMenu()
{
- if (!mReadOnly)
+ if (!mPopupMenuHandle.get())
{
LLUICtrl::CommitCallbackRegistry::Registrar& commit_reg = LLUICtrl::CommitCallbackRegistry::defaultRegistrar();
commit_reg.add("Toolbars.EnableSetting", boost::bind(&LLToolBar::onSettingEnable, this, _2));
@@ -129,11 +129,7 @@ BOOL LLToolBar::postBuild()
LLUICtrl::EnableCallbackRegistry::Registrar& enable_reg = LLUICtrl::EnableCallbackRegistry::defaultRegistrar();
enable_reg.add("Toolbars.CheckSetting", boost::bind(&LLToolBar::isSettingChecked, this, _2));
- //
- // Setup the context menu
- //
-
- LLMenuGL* menu = LLUICtrlFactory::instance().createFromFile<LLMenuGL>("menu_toolbars.xml", LLMenuGL::sMenuContainer, LLMenuHolderGL::child_registry_t::instance());
+ LLContextMenu* menu = LLUICtrlFactory::instance().createFromFile<LLContextMenu>("menu_toolbars.xml", LLMenuGL::sMenuContainer, LLMenuHolderGL::child_registry_t::instance());
if (menu)
{
@@ -146,8 +142,6 @@ BOOL LLToolBar::postBuild()
llwarns << "Unable to load toolbars context menu." << llendl;
}
}
-
- return TRUE;
}
void LLToolBar::initFromParams(const LLToolBar::Params& p)
@@ -162,6 +156,7 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
centering_stack_p.rect = getLocalRect();
centering_stack_p.follows.flags = FOLLOWS_ALL;
centering_stack_p.orientation = orientation;
+ centering_stack_p.mouse_opaque = false;
mCenteringStack = LLUICtrlFactory::create<LLLayoutStack>(centering_stack_p);
addChild(mCenteringStack);
@@ -171,6 +166,7 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
border_panel_p.rect = getLocalRect();
border_panel_p.auto_resize = true;
border_panel_p.user_resize = false;
+ border_panel_p.mouse_opaque = false;
mCenteringStack->addChild(LLUICtrlFactory::create<LLLayoutPanel>(border_panel_p));
@@ -185,21 +181,7 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
LLPanel::Params button_panel_p(p.button_panel);
button_panel_p.rect = center_panel->getLocalRect();
- switch(p.side())
- {
- case SIDE_LEFT:
button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_LEFT;
- break;
- case SIDE_RIGHT:
- button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_RIGHT;
- break;
- case SIDE_TOP:
- button_panel_p.follows.flags = FOLLOWS_TOP|FOLLOWS_LEFT;
- break;
- case SIDE_BOTTOM:
- button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_LEFT;
- break;
- }
mButtonPanel = LLUICtrlFactory::create<LLPanel>(button_panel_p);
center_panel->addChild(mButtonPanel);
@@ -229,20 +211,20 @@ bool LLToolBar::addCommand(const LLCommandId& commandId)
//
if (add_command)
{
- LLToolBarButton::Params button_p(mButtonParams[mButtonType]);
+ LLToolBarButton::Params button_p(mButtonParams[mButtonType]);
button_p.name = commandId.name();
- button_p.label = LLTrans::getString(command->labelRef());
- button_p.tool_tip = LLTrans::getString(command->tooltipRef());
-
- //
- // Add it to the list of buttons
- //
- LLToolBarButton * toolbar_button = LLUICtrlFactory::create<LLToolBarButton>(button_p);
- mButtons.push_back(toolbar_button);
+ button_p.label = LLTrans::getString(command->labelRef());
+ button_p.tool_tip = LLTrans::getString(command->tooltipRef());
+
+ //
+ // Add it to the list of buttons
+ //
+ LLToolBarButton * toolbar_button = LLUICtrlFactory::create<LLToolBarButton>(button_p);
+ mButtons.push_back(toolbar_button);
mButtonCommands.push_back(commandId);
- mButtonPanel->addChild(toolbar_button);
+ mButtonPanel->addChild(toolbar_button);
- mNeedsLayout = true;
+ mNeedsLayout = true;
}
return add_command;
@@ -290,10 +272,12 @@ BOOL LLToolBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
if (handle_it_here)
{
- LLMenuGL * menu = (LLMenuGL *) mPopupMenuHandle.get();
+ createContextMenu();
+ LLContextMenu * menu = (LLContextMenu *) mPopupMenuHandle.get();
if (menu)
{
+ menu->show(x, y);
LLMenuGL::showPopup(this, menu, x, y);
}
}
@@ -403,8 +387,8 @@ void LLToolBar::updateLayoutAsNeeded()
std::vector<LLToolBarButton*> buttons_in_row;
- BOOST_FOREACH(LLToolBarButton* button, mButtons)
- {
+ BOOST_FOREACH(LLToolBarButton* button, mButtons)
+ {
button->reshape(mMinButtonWidth, mButtonHeight);
button->autoResize();
@@ -435,11 +419,11 @@ void LLToolBar::updateLayoutAsNeeded()
cur_start = row_pad_start;
cur_row += max_row_girth + mPadBetween;
max_row_girth = 0;
- }
+ }
LLRect button_rect;
if (orientation == LLLayoutStack::HORIZONTAL)
- {
+ {
button_rect.setLeftTopAndSize(cur_start, panel_rect.mTop - cur_row, button_clamped_width, button->getRect().getHeight());
}
else // VERTICAL
@@ -468,20 +452,22 @@ void LLToolBar::updateLayoutAsNeeded()
{
if (mSideType == SIDE_TOP)
{ // shift down to maintain top edge
- mButtonPanel->translate(0, mButtonPanel->getRect().getHeight() - total_girth);
+ translate(0, getRect().getHeight() - total_girth);
}
+ reshape(getRect().getWidth(), total_girth);
mButtonPanel->reshape(max_row_length, total_girth);
}
else // VERTICAL
{
if (mSideType == SIDE_RIGHT)
{ // shift left to maintain right edge
- mButtonPanel->translate(mButtonPanel->getRect().getWidth() - total_girth, 0);
+ translate(getRect().getWidth() - total_girth, 0);
}
-
+
+ reshape(total_girth, getRect().getHeight());
mButtonPanel->reshape(total_girth, max_row_length);
- }
+ }
// re-center toolbar buttons
mCenteringStack->updateLayout();
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index f7562b29d2..657e928319 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -119,8 +119,8 @@ public:
// virtuals
void draw();
- BOOL postBuild();
void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
+ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
bool addCommand(const LLCommandId& commandId);
bool hasCommand(const LLCommandId& commandId) const;
@@ -133,13 +133,12 @@ protected:
void initFromParams(const Params&);
- BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
- BOOL isSettingChecked(const LLSD& userdata);
- void onSettingEnable(const LLSD& userdata);
-
private:
+ void createContextMenu();
void updateLayoutAsNeeded();
void resizeButtonsInRow(std::vector<LLToolBarButton*>& buttons_in_row, S32 max_row_girth);
+ BOOL isSettingChecked(const LLSD& userdata);
+ void onSettingEnable(const LLSD& userdata);
const bool mReadOnly;
@@ -164,7 +163,7 @@ private:
LLToolBarButton::Params mButtonParams[LLToolBarEnums::BTNTYPE_COUNT];
- LLHandle<LLView> mPopupMenuHandle;
+ LLHandle<class LLContextMenu> mPopupMenuHandle;
};
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
index 6c29e566b8..6ae10fbf1d 100644
--- a/indra/llui/lltoolbarview.cpp
+++ b/indra/llui/lltoolbarview.cpp
@@ -90,11 +90,10 @@ void LLToolBarView::draw()
LLRect bottom_rect, left_rect, right_rect;
- if (mToolbarBottom) bottom_rect = mToolbarBottom->getRect();
- if (mToolbarLeft) left_rect = mToolbarLeft->getRect();
- if (mToolbarRight) right_rect = mToolbarRight->getRect();
-
- LLRect sizer_left_rect = sizer_left->getRect();
+ if (mToolbarBottom) mToolbarBottom->localRectToOtherView(mToolbarBottom->getLocalRect(), &bottom_rect, this);
+ if (mToolbarLeft) mToolbarLeft->localRectToOtherView(mToolbarLeft->getLocalRect(), &left_rect, this);
+ if (mToolbarRight) mToolbarRight->localRectToOtherView(mToolbarRight->getLocalRect(), &right_rect, this);
+
if ((old_width != getRect().getWidth()) || (old_height != getRect().getHeight()))
debug_print = true;
@@ -105,7 +104,6 @@ void LLToolBarView::draw()
llinfos << "Merov debug : draw bottom rect = " << bottom_rect.mLeft << ", " << bottom_rect.mTop << ", " << bottom_rect.mRight << ", " << bottom_rect.mBottom << llendl;
llinfos << "Merov debug : draw left rect = " << left_rect.mLeft << ", " << left_rect.mTop << ", " << left_rect.mRight << ", " << left_rect.mBottom << llendl;
llinfos << "Merov debug : draw right rect = " << right_rect.mLeft << ", " << right_rect.mTop << ", " << right_rect.mRight << ", " << right_rect.mBottom << llendl;
- llinfos << "Merov debug : draw s left rect = " << sizer_left_rect.mLeft << ", " << sizer_left_rect.mTop << ", " << sizer_left_rect.mRight << ", " << sizer_left_rect.mBottom << llendl;
old_width = ctrl_rect.getWidth();
old_height = ctrl_rect.getHeight();
debug_print = false;
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index 60452b9ae4..e10c2f0d1e 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -1826,13 +1826,6 @@ LLView* LLView::findNextSibling(LLView* child)
return (next_it != mChildList.end()) ? *next_it : NULL;
}
-void LLView::deleteViewByHandle(LLHandle<LLView> handle)
-{
- LLView* viewp = handle.get();
-
- delete viewp;
-}
-
LLCoordGL getNeededTranslation(const LLRect& input, const LLRect& constraint, BOOL allow_partial_outside)
{
diff --git a/indra/llui/llview.h b/indra/llui/llview.h
index 594a5eec6b..7a1b2e4ba0 100644
--- a/indra/llui/llview.h
+++ b/indra/llui/llview.h
@@ -482,7 +482,6 @@ public:
// return query for iterating over focus roots in tab order
static const LLCtrlQuery & getFocusRootsQuery();
- static void deleteViewByHandle(LLHandle<LLView> handle);
static LLWindow* getWindow(void) { return LLUI::sWindow; }
// Set up params after XML load before calling new(),
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 0b17d64eb0..836c580ea8 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -403,8 +403,8 @@ LLFavoritesBarCtrl::~LLFavoritesBarCtrl()
{
gInventory.removeObserver(this);
- LLView::deleteViewByHandle(mOverflowMenuHandle);
- LLView::deleteViewByHandle(mContextMenuHandle);
+ delete mOverflowMenuHandle.get();
+ delete mContextMenuHandle.get();
}
BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index 00dc7b1627..9d020517d8 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -2112,7 +2112,7 @@ LLFloaterSnapshot::LLFloaterSnapshot(const LLSD& key)
// Destroys the object
LLFloaterSnapshot::~LLFloaterSnapshot()
{
- LLView::deleteViewByHandle(impl.mPreviewHandle);
+ delete impl.mPreviewHandle.get();
//unfreeze everything else
gSavedSettings.setBOOL("FreezeTime", FALSE);
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 9ba5f827e2..6ec2598e44 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -299,7 +299,7 @@ LLFolderView::~LLFolderView( void )
mAutoOpenItems.removeAllNodes();
gIdleCallbacks.deleteFunction(idle, this);
- LLView::deleteViewByHandle(mPopupMenuHandle);
+ delete mPopupMenuHandle.get();
mAutoOpenItems.removeAllNodes();
clearSelection();
@@ -1969,7 +1969,7 @@ BOOL LLFolderView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
void LLFolderView::deleteAllChildren()
{
closeRenamer();
- LLView::deleteViewByHandle(mPopupMenuHandle);
+ delete mPopupMenuHandle.get();
mPopupMenuHandle = LLHandle<LLView>();
mScrollContainer = NULL;
mRenameItem = NULL;
diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp
index c3e6e1c2dc..f7ed1116cb 100644
--- a/indra/newview/llgrouplist.cpp
+++ b/indra/newview/llgrouplist.cpp
@@ -95,7 +95,7 @@ LLGroupList::LLGroupList(const Params& p)
LLGroupList::~LLGroupList()
{
gAgent.removeListener(this);
- LLView::deleteViewByHandle(mContextMenuHandle);
+ delete mContextMenuHandle.get();
}
// virtual
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index e3a7b749ea..177aa4f5c8 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -526,11 +526,11 @@ LLPanelPeople::~LLPanelPeople()
LLVoiceClient::getInstance()->removeObserver(this);
}
- LLView::deleteViewByHandle(mGroupPlusMenuHandle);
- LLView::deleteViewByHandle(mNearbyViewSortMenuHandle);
- LLView::deleteViewByHandle(mFriendsViewSortMenuHandle);
- LLView::deleteViewByHandle(mGroupsViewSortMenuHandle);
- LLView::deleteViewByHandle(mRecentViewSortMenuHandle);
+ delete mGroupPlusMenuHandle.get();
+ delete mNearbyViewSortMenuHandle.get();
+ delete mFriendsViewSortMenuHandle.get();
+ delete mGroupsViewSortMenuHandle.get();
+ delete mRecentViewSortMenuHandle.get();
}
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 9b35e78134..dfa8c75493 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -388,7 +388,7 @@ LLTeleportHistoryPanel::LLTeleportHistoryPanel()
LLTeleportHistoryPanel::~LLTeleportHistoryPanel()
{
LLTeleportHistoryFlatItemStorage::instance().purge();
- LLView::deleteViewByHandle(mGearMenuHandle);
+ delete mGearMenuHandle.get();
}
BOOL LLTeleportHistoryPanel::postBuild()
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 34ee893594..6d69932e93 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1787,6 +1787,7 @@ void LLViewerWindow::initBase()
LLPanel* panel_holder = main_view->getChild<LLPanel>("toolbar_view_holder");
// Load the toolbar view from file
gToolBarView = LLUICtrlFactory::getInstance()->createFromFile<LLToolBarView>("panel_toolbar_view.xml", panel_holder, LLDefaultChildRegistry::instance());
+ gToolBarView->setShape(panel_holder->getLocalRect());
// Hide the toolbars for the moment: we'll make them visible after logging in world (see LLViewerWindow::initWorldUI())
gToolBarView->setVisible(FALSE);
}
diff --git a/indra/newview/skins/default/xui/en/menu_toolbars.xml b/indra/newview/skins/default/xui/en/menu_toolbars.xml
index b3ecd3dcb6..de13fec670 100644
--- a/indra/newview/skins/default/xui/en/menu_toolbars.xml
+++ b/indra/newview/skins/default/xui/en/menu_toolbars.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu bottom="825"
+<context_menu
layout="topleft"
name="Toolbars Popup"
visible="false">
@@ -26,4 +26,4 @@
<on_check function="Toolbars.CheckSetting"
parameter="icons_only" />
</menu_item_check>
-</menu>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
index 7503da1d36..b24f5c3347 100644
--- a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
@@ -3,58 +3,110 @@
follows="all"
layout="topleft"
name="toolbar view"
- height="716"
+ height="500"
width="1024"
left="0"
top="0"
mouse_opaque="false"
tab_stop="false"
visible="true">
- <panel
- follows="top|bottom|left"
- layout="topleft"
- name="sizer_left"
- height="686"
- width="30"
- left="0"
- top="0"
- background_opaque="false"
- border_visible="false"
- background_visible="true"
- bg_opaque_image="Toast_Over"
- bg_alpha_image="Toast_Background"
- visible="true" />
- <toolbar
- follows="top|bottom|left"
- layout="topleft"
- name="toolbar_left"
- height="686"
- width="30"
- left="0"
- top="0"
- side="left"
- button_display_mode="icons_only"
- visible="true" />
- <toolbar
- follows="right|bottom|left"
- layout="topleft"
- name="toolbar_bottom"
- height="30"
- width="1024"
- left="0"
- top="686"
- side="bottom"
- button_display_mode="icons_with_text"
- visible="true" />
- <toolbar
- follows="top|bottom|right"
- layout="topleft"
- name="toolbar_right"
- height="686"
- width="30"
- left="994"
- top="0"
- side="right"
- button_display_mode="icons_only"
- visible="true" />
+ <layout_stack name="bottom_toolbar_stack"
+ orientation="vertical"
+ left="0"
+ top="0"
+ width="1024"
+ height="500"
+ follows="all"
+ mouse_opaque="false">
+ <layout_panel name="vertical_toolbar_panel"
+ auto_resize="true"
+ user_resize="false"
+ width="1024"
+ height="500"
+ mouse_opaque="false">
+ <layout_stack name="vertical_toolbar_stack"
+ orientation="horizontal"
+ left="0"
+ top="0"
+ width="1024"
+ height="500"
+ follows="all"
+ mouse_opaque="false">
+ <layout_panel name="left_toolbar_panel"
+ fit_content="true"
+ auto_resize="false"
+ user_resize="false"
+ height="500"
+ width="30"
+ mouse_opaque="false">
+ <toolbar follows="left|top|bottom"
+ name="toolbar_left"
+ height="500"
+ width="30"
+ left="0"
+ top="0"
+ side="left"
+ button_display_mode="icons_only">
+ <button name="button1" label="Left Toolbar"/>
+ <button name="button2" label="Left Toolbar"/>
+ <button name="button3" label="Left Toolbar"/>
+ <button name="button4" label="Left Toolbar"/>
+ <button name="button5" label="Left Toolbar"/>
+ </toolbar>
+ </layout_panel>
+ <layout_panel name="non_toolbar_panel"
+ auto_resize="true"
+ user_resize="false"
+ mouse_opaque="false"/>
+ <layout_panel name="right_toolbar_panel"
+ fit_content="true"
+ auto_resize="false"
+ user_resize="false"
+ height="500"
+ width="30"
+ mouse_opaque="false">
+ <toolbar
+ follows="right|top|bottom"
+ name="toolbar_right"
+ height="500"
+ width="30"
+ left="0"
+ top="0"
+ side="right"
+ button_display_mode="icons_only">
+ <button name="button1" label="Right Toolbar"/>
+ <button name="button2" label="Right Toolbar"/>
+ <button name="button3" label="Right Toolbar"/>
+ <button name="button4" label="Right Toolbar"/>
+ <button name="button5" label="Right Toolbar"/>
+ </toolbar>
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
+ <layout_panel name="bottom_toolbar_panel"
+ fit_content="true"
+ auto_resize="false"
+ user_resize="false"
+ height="30"
+ width="1024"
+ mouse_opaque="false">
+ <toolbar layout="topleft"
+ name="toolbar_bottom"
+ height="30"
+ width="1024"
+ left="0"
+ top="0"
+ side="bottom"
+ follows="left|right|bottom"
+ button_display_mode="icons_with_text"
+ visible="true">
+ <button name="button1" label="Bottom toolbar"/>
+ <button name="button2" label="Bottom toolbar"/>
+ <button name="button3" label="Bottom toolbar"/>
+ <button name="button4" label="Bottom toolbar"/>
+ <button name="button5" label="Bottom toolbar"/>
+ <button name="button6" label="Bottom toolbar"/>
+ </toolbar>
+ </layout_panel>
+ </layout_stack>
</toolbar_view>
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
index 7346e5ce2d..29b5d02299 100644
--- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -5,8 +5,8 @@
pad_top="5"
pad_bottom="5"
pad_between="5"
+ mouse_opaque="false"
read_only="false">
-
<button_panel name="button_panel"
bg_opaque_image="Rounded_Rect"
background_visible="true"