diff options
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/llviewercontrol.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llviewermenu.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/rlvcommon.cpp | 33 | ||||
| -rw-r--r-- | indra/newview/rlvcommon.h | 1 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/menu_viewer.xml | 70 | 
6 files changed, 119 insertions, 2 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 366afda019..9ade1d8cc0 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -10129,6 +10129,17 @@        <key>Value</key>        <boolean>1</boolean>      </map> +    <key>RLVaTopLevelMenu</key> +    <map> +      <key>Comment</key> +      <string>Show the RLVa specific menu as a top level menu</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <boolean>1</boolean> +    </map>  	<key>RevokePermsOnStopAnimation</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 598ad89907..9043a5a89e 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -76,6 +76,7 @@  #include "llslurl.h"  #include "llstartup.h"  #include "llperfstats.h" +#include "rlvcommon.h"  #if LL_DARWIN  #include "llwindowmacosx.h" @@ -972,6 +973,8 @@ void settings_setup_listeners()      setting_setup_signal_listener(gSavedSettings, "TerrainPaintBitDepth", handleSetShaderChanged);      setting_setup_signal_listener(gSavedPerAccountSettings, "AvatarHoverOffsetZ", handleAvatarHoverOffsetChanged); + +    setting_setup_signal_listener(gSavedSettings, Rlv::Settings::TopLevelMenu, Rlv::Util::menuToggleVisible);  }  #if TEST_CACHED_CONTROL diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 1f8f960300..a308b8d8e9 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -152,6 +152,7 @@  #include "llviewershadermgr.h"  #include "gltfscenemanager.h"  #include "gltf/asset.h" +#include "rlvcommon.h"  using namespace LLAvatarAppearanceDefines; @@ -6284,6 +6285,8 @@ void show_debug_menus()          gMenuBarView->setItemVisible("Advanced", debug);  //      gMenuBarView->setItemEnabled("Advanced", debug); // Don't disable Advanced keyboard shortcuts when hidden +		Rlv::Util::menuToggleVisible(); +          gMenuBarView->setItemVisible("Debug", qamode);          gMenuBarView->setItemEnabled("Debug", qamode); diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp index eda2cdedc8..abb54b5b39 100644 --- a/indra/newview/rlvcommon.cpp +++ b/indra/newview/rlvcommon.cpp @@ -1,15 +1,18 @@  #include "llviewerprecompiledheaders.h" +  #include "llagent.h"  #include "llchat.h"  #include "lldbstrings.h"  #include "llversioninfo.h" +#include "llviewermenu.h"  #include "llviewerstats.h"  #include "message.h" +#include <boost/algorithm/string.hpp> -#include "rlvdefines.h"  #include "rlvcommon.h" -#include <boost/algorithm/string.hpp> +#include "llviewercontrol.h" +#include "rlvhandler.h"  using namespace Rlv; @@ -48,6 +51,32 @@ std::string Strings::getVersionImplNum()  // RlvUtil  // +void Util::menuToggleVisible() +{ +    bool isTopLevel = gSavedSettings.getBOOL(Settings::TopLevelMenu); +    bool isRlvEnabled = RlvHandler::isEnabled(); + +    LLMenuGL* menuRLVaMain = gMenuBarView->findChildMenuByName("RLVa Main", false); +    LLMenuGL* menuAdvanced = gMenuBarView->findChildMenuByName("Advanced", false); +    LLMenuGL* menuRLVaEmbed= menuAdvanced->findChildMenuByName("RLVa Embedded", false); + +    gMenuBarView->setItemVisible("RLVa Main", isRlvEnabled && isTopLevel); +    menuAdvanced->setItemVisible("RLVa Embedded", isRlvEnabled && !isTopLevel); + +    if ( isRlvEnabled && menuRLVaMain && menuRLVaEmbed && +         ( (isTopLevel && 1 == menuRLVaMain->getItemCount()) || (!isTopLevel && 1 == menuRLVaEmbed->getItemCount())) ) +    { +        LLMenuGL* menuFrom = isTopLevel ? menuRLVaEmbed : menuRLVaMain; +        LLMenuGL* menuTo = isTopLevel ? menuRLVaMain : menuRLVaEmbed; +        while (LLMenuItemGL* pItem = menuFrom->getItem(1)) +        { +            menuFrom->removeChild(pItem); +            menuTo->addChild(pItem); +            pItem->updateBranchParent(menuTo); +        } +    } +} +  bool Util::parseStringList(const std::string& strInput, std::vector<std::string>& optionList, std::string_view strSeparator)  {      if (!strInput.empty()) diff --git a/indra/newview/rlvcommon.h b/indra/newview/rlvcommon.h index bec3e23e11..d18abcf1ac 100644 --- a/indra/newview/rlvcommon.h +++ b/indra/newview/rlvcommon.h @@ -24,6 +24,7 @@ namespace Rlv      namespace Util      {          bool isValidReplyChannel(S32 nChannel, bool isLoopback = false); +        void menuToggleVisible();          bool parseStringList(const std::string& strInput, std::vector<std::string>& optionList, std::string_view strSeparator = Constants::OptionSeparator);          bool sendChatReply(S32 nChannel, const std::string& strUTF8Text);          bool sendChatReply(const std::string& strChannel, const std::string& strUTF8Text); diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 3de2473927..f52e1cc952 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -1836,6 +1836,71 @@ function="World.EnvPreset"      </menu>      <menu       create_jump_keys="true" +     label="RLVa" +     name="RLVa Main" +     tear_off="true" +     visible="true"> +      <menu +       label="Debug" +       name="Debug" +       tear_off="true"> +        <menu_item_check +         label="Show Top-level RLVa Menu" +         name="Show Top-level RLVa Menu"> +          <menu_item_check.on_check +           function="CheckControl" +           parameter="RLVaTopLevelMenu" /> +          <menu_item_check.on_click +           function="ToggleControl" +           parameter="RLVaTopLevelMenu" /> +        </menu_item_check> +      	<menu_item_separator/> +      	<menu_item_check +      	 label="Show Debug Messages" +      	 name="Show Debug Messages"> +          <menu_item_check.on_check +           function="CheckControl" +           parameter="RestrainedLoveDebug" /> +          <menu_item_check.on_click +           function="ToggleControl" +           parameter="RestrainedLoveDebug" /> +      	</menu_item_check> +      	<menu_item_check +      	 label="Hide Unset or Duplicate Messages" +      	 name="Hide Unset or Duplicate Messages"> +          <menu_item_check.on_check +           function="CheckControl" +           parameter="RLVaDebugHideUnsetDuplicate" /> +          <menu_item_check.on_click +           function="ToggleControl" +           parameter="RLVaDebugHideUnsetDuplicate" /> +      	</menu_item_check> +      </menu> +      <menu_item_separator/> +      <menu_item_check +       label="Allow Temporary Attachments" +       name="Allow Temporary Attachments"> +      	<menu_item_check.on_check +      	 function="CheckControl" +      	 parameter="RLVaEnableTemporaryAttachments" /> +      	<menu_item_check.on_click +      	 function="ToggleControl" +      	 parameter="RLVaEnableTemporaryAttachments" /> +      </menu_item_check> +      <menu_item_separator /> +      <menu_item_check +       label="Console..." +       name="Console"> +        <menu_item_check.on_check +      	 function="Floater.Visible" +      	 parameter="rlv_console" /> +        <menu_item_check.on_click +      	 function="Floater.Toggle" +      	 parameter="rlv_console" /> +      </menu_item_check> +    </menu> +    <menu +     create_jump_keys="true"       label="Advanced"       name="Advanced"       tear_off="true" @@ -2342,6 +2407,11 @@ function="World.EnvPreset"                   parameter="flexible" />              </menu_item_check>          </menu>         +        <menu +         label="RLVa" +         name="RLVa Embedded" +         tear_off="true" +         visible="true" />          <menu_item_check           label="Use Plugin Read Thread"           name="Use Plugin Read Thread"> | 
