summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMnikolenko Productengine <mnikolenko@productengine.com>2017-01-05 11:45:17 +0200
committerMnikolenko Productengine <mnikolenko@productengine.com>2017-01-05 11:45:17 +0200
commit942bbf943d74b8804c4d3fee98a14c8618a4e031 (patch)
tree36e875c34cf18faff336d93b4c5f5e0e2403d54f
parent8ef99c38a5b7d10d3a121f70929d6e26b264dddb (diff)
MAINT-7029 Pop-up menu isn't shown in Place profile if all menu items are disabled
-rw-r--r--indra/llui/llmenugl.cpp28
-rw-r--r--indra/llui/llmenugl.h5
-rw-r--r--indra/newview/llpanelplaces.cpp6
3 files changed, 26 insertions, 13 deletions
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 848367f8a8..8425774d46 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -1736,6 +1736,7 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p)
mJumpKey(p.jump_key),
mCreateJumpKeys(p.create_jump_keys),
mNeedsArrange(FALSE),
+ mAlwaysShowMenu(FALSE),
mResetScrollPositionOnShow(true),
mShortcutPad(p.shortcut_pad)
{
@@ -3223,20 +3224,23 @@ void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y)
menu->setVisible( TRUE );
- //Do not show menu if all menu items are disabled
- BOOL item_enabled = false;
- for (LLView::child_list_t::const_iterator itor = menu->getChildList()->begin();
- itor != menu->getChildList()->end();
- ++itor)
+ if(!menu->getAlwaysShowMenu())
{
- LLView *menu_item = (*itor);
- item_enabled = item_enabled || menu_item->getEnabled();
- }
+ //Do not show menu if all menu items are disabled
+ BOOL item_enabled = false;
+ for (LLView::child_list_t::const_iterator itor = menu->getChildList()->begin();
+ itor != menu->getChildList()->end();
+ ++itor)
+ {
+ LLView *menu_item = (*itor);
+ item_enabled = item_enabled || menu_item->getEnabled();
+ }
- if(!item_enabled)
- {
- menu->setVisible( FALSE );
- return;
+ if(!item_enabled)
+ {
+ menu->setVisible( FALSE );
+ return;
+ }
}
// Save click point for detecting cursor moves before mouse-up.
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index c7f7f6848c..69f7d21513 100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
@@ -531,6 +531,9 @@ public:
void resetScrollPositionOnShow(bool reset_scroll_pos) { mResetScrollPositionOnShow = reset_scroll_pos; }
bool isScrollPositionOnShowReset() { return mResetScrollPositionOnShow; }
+ void setAlwaysShowMenu(BOOL show) { mAlwaysShowMenu = show; }
+ BOOL getAlwaysShowMenu() { return mAlwaysShowMenu; }
+
// add a context menu branch
BOOL appendContextSubMenu(LLMenuGL *menu);
@@ -572,6 +575,8 @@ private:
static LLColor4 sDefaultBackgroundColor;
static BOOL sKeyboardMode;
+ BOOL mAlwaysShowMenu;
+
LLUIColor mBackgroundColor;
BOOL mBgVisible;
LLHandle<LLView> mParentMenuItem;
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 0507d6db86..ed942fc7fc 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -304,7 +304,11 @@ BOOL LLPanelPlaces::postBuild()
enable_registrar.add("Places.OverflowMenu.Enable", boost::bind(&LLPanelPlaces::onOverflowMenuItemEnable, this, _2));
mPlaceMenu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_place.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
- if (!mPlaceMenu)
+ if (mPlaceMenu)
+ {
+ mPlaceMenu->setAlwaysShowMenu(TRUE);
+ }
+ else
{
LL_WARNS() << "Error loading Place menu" << LL_ENDL;
}