diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index a17802bfd1..643243ca32 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -24056,7 +24056,7 @@ Change of this parameter will affect the layout of buttons in notification toast FSStatusBarMenuButtonPopupOnRollover Comment - Enable rollover popups on top status bar menu icons: Quick Graphics Presets, Volume, and Media. (Restart Required) + Enable rollover popups on top status bar menu icons: Quick Graphics Presets, Volume, and Media. Persist 1 Type diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index ec0f029215..68ea169ea9 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -195,7 +195,12 @@ LLStatusBar::LLStatusBar(const LLRect& rect) mNearbyIcons(FALSE), // Script debug mSearchData(NULL), // Hook up and init for filtering mFilterEdit(NULL), // Edit for filtering - mSearchPanel(NULL) // Panel for filtering + mSearchPanel(NULL), // Panel for filtering + mIconPresets(NULL), + mMediaToggle(NULL), + mMouseEnterPresetsConnection(), + mMouseEnterVolumeConnection(), + mMouseEnterNearbyMediaConnection() { setRect(rect); @@ -244,6 +249,22 @@ LLStatusBar::~LLStatusBar() { mShowCoordsCtrlConnection.disconnect(); } + + // FIRE-19697: Add setting to disable graphics preset menu popup on mouse over + if (mMouseEnterPresetsConnection.connected()) + { + mMouseEnterPresetsConnection.disconnect(); + } + if (mMouseEnterVolumeConnection.connected()) + { + mMouseEnterVolumeConnection.disconnect(); + } + if (mMouseEnterNearbyMediaConnection.connected()) + { + mMouseEnterNearbyMediaConnection.disconnect(); + } + // + // LLView destructor cleans up children } @@ -289,7 +310,7 @@ BOOL LLStatusBar::postBuild() // mIconPresets->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this)); if (gSavedSettings.getBOOL("FSStatusBarMenuButtonPopupOnRollover")) { - mIconPresets->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this)); + mMouseEnterPresetsConnection = mIconPresets->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this)); } // FIRE-19697: Add setting to disable graphics preset menu popup on mouse over mIconPresets->setClickedCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this)); @@ -300,23 +321,22 @@ BOOL LLStatusBar::postBuild() // mBtnVolume->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterVolume, this)); if (gSavedSettings.getBOOL("FSStatusBarMenuButtonPopupOnRollover")) { - mBtnVolume->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterVolume, this)); + mMouseEnterVolumeConnection = mBtnVolume->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterVolume, this)); } // FIRE-19697: Add setting to disable status bar icon menu popup on mouseover - // ## Zi: Media/Stream separation + // Media/Stream separation mStreamToggle = getChild("stream_toggle_btn"); - mStreamToggle->setClickedCallback( &LLStatusBar::onClickStreamToggle, this ); - // ## Zi: Media/Stream separation + mStreamToggle->setClickedCallback(&LLStatusBar::onClickStreamToggle, this); + // Media/Stream separation mMediaToggle = getChild("media_toggle_btn"); mMediaToggle->setClickedCallback( &LLStatusBar::onClickMediaToggle, this ); // FIRE-19697: Add setting to disable status bar icon menu popup on mouseover + // mMediaToggle->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterNearbyMedia, this)); if (gSavedSettings.getBOOL("FSStatusBarMenuButtonPopupOnRollover")) - // mMediaToggle->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterNearbyMedia, this)); - { - mMediaToggle->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterNearbyMedia, this)); + mMouseEnterNearbyMediaConnection = mMediaToggle->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterNearbyMedia, this)); } // FIRE-19697: Add setting to disable status bar icon menu popup on mouseover @@ -324,6 +344,9 @@ BOOL LLStatusBar::postBuild() gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&LLStatusBar::onVolumeChanged, this, _2)); + // FIRE-19697: Add setting to disable graphics preset menu popup on mouse over + gSavedSettings.getControl("FSStatusBarMenuButtonPopupOnRollover")->getSignal()->connect(boost::bind(&LLStatusBar::onPopupRolloverChanged, this, _2)); + // Adding Net Stat Graph S32 x = getRect().getWidth() - 2; S32 y = 0; @@ -1601,3 +1624,31 @@ void LLStatusBar::updateMenuSearchVisibility(const LLSD& data) } update(); } + +// FIRE-19697: Add setting to disable graphics preset menu popup on mouse over +void LLStatusBar::onPopupRolloverChanged(const LLSD& newvalue) +{ + bool new_value = newvalue.asBoolean(); + + if (new_value) + { + mMouseEnterPresetsConnection = mIconPresets->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this)); + mMouseEnterVolumeConnection = mBtnVolume->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterVolume, this)); + mMouseEnterNearbyMediaConnection = mMediaToggle->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterNearbyMedia, this)); + } + else + { + if (mMouseEnterPresetsConnection.connected()) + { + mMouseEnterPresetsConnection.disconnect(); + } + if (mMouseEnterVolumeConnection.connected()) + { + mMouseEnterVolumeConnection.disconnect(); + } + if (mMouseEnterNearbyMediaConnection.connected()) + { + mMouseEnterNearbyMediaConnection.disconnect(); + } + } +} diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h index 730706bb8b..8a819b914f 100644 --- a/indra/newview/llstatusbar.h +++ b/indra/newview/llstatusbar.h @@ -261,6 +261,10 @@ private: void onNavMeshStatusChange(const LLPathfindingNavMeshStatus &pNavMeshStatus); void createNavMeshStatusListenerForCurrentRegion(); // Pathfinding support + + // FIRE-19697: Add setting to disable graphics preset menu popup on mouse over + void onPopupRolloverChanged(const LLSD& newvalue); + public: /** @@ -362,6 +366,12 @@ private: boost::signals2::connection mShowCoordsCtrlConnection; boost::signals2::connection mParcelMgrConnection; + // FIRE-19697: Add setting to disable graphics preset menu popup on mouse over + boost::signals2::connection mMouseEnterPresetsConnection; + boost::signals2::connection mMouseEnterVolumeConnection; + boost::signals2::connection mMouseEnterNearbyMediaConnection; + // + // Pathfinding rebake functions BOOL rebakeRegionCallback(const LLSD& notification,const LLSD& response); diff --git a/indra/newview/skins/default/xui/en/panel_preferences_UI.xml b/indra/newview/skins/default/xui/en/panel_preferences_UI.xml index 77c9a835c0..d4ad3e6ee4 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_UI.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_UI.xml @@ -630,7 +630,7 @@ top_pad="4" follows="left|top" height="16" - label="Enable mouse rollover popup on status bar menu icons (Restart Required)" + label="Enable mouse rollover popup on status bar menu icons" name="FSStatusBarMenuButtonPopupOnRollover" width="270" control_name="FSStatusBarMenuButtonPopupOnRollover"/>