diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 6cac841cdeacb3fceb58351b210fa7d2b2840e41..badba7a416cc0f3a8227fdd96aa0236cdd138c6b 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 278c04aef8e620d4e9686c36a5d731900721ed8c..bd45cf46567c47a449edefa07c4e8a9bdcb932c5 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) @@ -278,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); } } diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h index f7562b29d247c38015280082de27d8323d15acfa..657e92831934d67140864c93a98b119da46444ee 100644 --- a/indra/llui/lltoolbar.h +++ b/indra/llui/lltoolbar.h @@ -119,8 +119,8 @@ class LLToolBar // 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 @@ class LLToolBar 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 @@ class LLToolBar 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 21d3785c822d5b959cd519087123c8bd9367f0e3..6ae10fbf1dc000cb3b734b0726efa97a6e1da538 100644 --- a/indra/llui/lltoolbarview.cpp +++ b/indra/llui/lltoolbarview.cpp @@ -90,9 +90,9 @@ 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(); + 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())) diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 60452b9ae4d578817759761bdde98f7313c6a2de..e10c2f0d1e21f230474e2079e913728360d443dd 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 594a5eec6be9b8927f45b76d66c9730ad326dae7..7a1b2e4ba047872aee08b9cd79347ddc9f170326 100644 --- a/indra/llui/llview.h +++ b/indra/llui/llview.h @@ -482,7 +482,6 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem // 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 0b17d64eb078a60daeebc5f3d33a2412f45b8395..836c580ea89033ae1b3131251a6ecdc6a272ef3a 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 00dc7b1627500a411bb3421ec5d2bbf2b500dac5..9d020517d84c275cf2f6a2e39e0c20f9931ffb2f 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 9ba5f827e254b47b4d809077acdacdb12d26829b..6ec2598e4479ee7b0ecfdee947b8598571380442 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 c3e6e1c2dca29c0fd9ea096a3110148559bc9b41..f7ed1116cbd38c05ca55c59971812d1b08ee62f7 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 e3a7b749ea6be37294d2204355fe42feb2988928..177aa4f5c81dd0a6958a8d2c62801521b3124823 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 9b35e78134a5d59faa992a703e7a97b00113ef48..dfa8c75493f53f0d6735b79c4a364ad5d940761b 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/skins/default/xui/en/menu_toolbars.xml b/indra/newview/skins/default/xui/en/menu_toolbars.xml index b3ecd3dcb67075556c3f1381950e918ce477cfeb..de13fec6701eccac9af05690649e8a763ae25c4b 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/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml index 95ccc6e92c5e89dce9b9d9be5e6513fb3c6922f5..29b5d022997be0a8122880ef4ec3af73b27c8422 100644 --- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml +++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml @@ -7,7 +7,6 @@ pad_between="5" mouse_opaque="false" read_only="false"> - <button_panel name="button_panel" bg_opaque_image="Rounded_Rect" background_visible="true"