diff options
| -rw-r--r-- | indra/newview/llfloatermediasettings.cpp | 9 | ||||
| -rw-r--r-- | indra/newview/llfloatermediasettings.h | 2 | ||||
| -rw-r--r-- | indra/newview/llpanelface.cpp | 17 | 
3 files changed, 19 insertions, 9 deletions
diff --git a/indra/newview/llfloatermediasettings.cpp b/indra/newview/llfloatermediasettings.cpp index 2496887c9d..81eab52e6c 100644 --- a/indra/newview/llfloatermediasettings.cpp +++ b/indra/newview/llfloatermediasettings.cpp @@ -180,8 +180,15 @@ void LLFloaterMediaSettings::onClose(bool app_quitting)  ////////////////////////////////////////////////////////////////////////////////  //static -void LLFloaterMediaSettings::initValues( const LLSD& media_settings, bool editable ) +void LLFloaterMediaSettings::initValues( const LLSD& media_settings, bool editable, bool has_media_info, bool multiple_media, bool multiple_valid_media)  { +    if (!sInstance) +    { +        return; +    } +    sInstance->mIdenticalHasMediaInfo = has_media_info; +    sInstance->mMultipleMedia = multiple_media; +    sInstance->mMultipleValidMedia = multiple_valid_media;      if (sInstance->hasFocus()) return;      // Clear values diff --git a/indra/newview/llfloatermediasettings.h b/indra/newview/llfloatermediasettings.h index 38730ddc98..7ed7ab246f 100644 --- a/indra/newview/llfloatermediasettings.h +++ b/indra/newview/llfloatermediasettings.h @@ -48,7 +48,7 @@ public:      static LLFloaterMediaSettings* getInstance();      static bool instanceExists();      static void apply(); -    static void initValues( const LLSD& media_settings , bool editable); +    static void initValues( const LLSD& media_settings , bool editable, bool has_media_info, bool multiple_media, bool multiple_valid_media);      static void clearValues( bool editable);      LLPanelMediaSettingsSecurity* getPanelSecurity(){return mPanelMediaSettingsSecurity;}; diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index 25dd37590d..9076576f00 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -2209,7 +2209,7 @@ void LLPanelFace::refreshMedia()      // check if all faces have media(or, all dont have media) -    LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo = selected_objects->getSelectedTEValue(&func, bool_has_media); +    bool identical_has_media_info = selected_objects->getSelectedTEValue(&func, bool_has_media);      const LLMediaEntry default_media_data; @@ -2231,7 +2231,8 @@ void LLPanelFace::refreshMedia()      } func_media_data(default_media_data);      LLMediaEntry media_data_get; -    LLFloaterMediaSettings::getInstance()->mMultipleMedia = !(selected_objects->getSelectedTEValue(&func_media_data, media_data_get)); +    bool multiple_media = !(selected_objects->getSelectedTEValue(&func_media_data, media_data_get)); +    bool multiple_valid_media = false;      std::string multi_media_info_str = LLTrans::getString("Multiple Media");      std::string media_title = ""; @@ -2240,12 +2241,12 @@ void LLPanelFace::refreshMedia()      mAddMedia->setEnabled(editable);      // IF all the faces have media (or all dont have media) -    if (LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo) +    if (identical_has_media_info)      {          // TODO: get media title and set it.          mTitleMediaText->clear();          // if identical is set, all faces are same (whether all empty or has the same media) -        if (!(LLFloaterMediaSettings::getInstance()->mMultipleMedia)) +        if (!multiple_media)          {              // Media data is valid              if (media_data_get != default_media_data) @@ -2266,9 +2267,9 @@ void LLPanelFace::refreshMedia()      else // not all face has media but at least one does.      {          // seleted faces have not identical value -        LLFloaterMediaSettings::getInstance()->mMultipleValidMedia = selected_objects->isMultipleTEValue(&func_media_data, default_media_data); +        multiple_valid_media = selected_objects->isMultipleTEValue(&func_media_data, default_media_data); -        if (LLFloaterMediaSettings::getInstance()->mMultipleValidMedia) +        if (multiple_valid_media)          {              media_title = multi_media_info_str;          } @@ -2305,7 +2306,7 @@ void LLPanelFace::refreshMedia()      // load values for media settings      updateMediaSettings(); -    LLFloaterMediaSettings::initValues(mMediaSettings, editable); +    LLFloaterMediaSettings::initValues(mMediaSettings, editable, identical_has_media_info, multiple_media, multiple_valid_media);  }  void LLPanelFace::unloadMedia() @@ -3378,6 +3379,7 @@ void LLPanelFace::onSelectNormalTexture(const LLSD& data)  // TODO: test if there is media on the item and only allow editing if present  void LLPanelFace::onClickBtnEditMedia()  { +    LLFloaterMediaSettings::getInstance(); // make sure floater we are about to open exists before refreshMedia      refreshMedia();      LLFloaterReg::showInstance("media_settings");  } @@ -3396,6 +3398,7 @@ void LLPanelFace::onClickBtnAddMedia()      // check if multiple faces are selected      if (LLSelectMgr::getInstance()->getSelection()->isMultipleTESelected())      { +        LLFloaterMediaSettings::getInstance(); // make sure floater we are about to open exists before refreshMedia          refreshMedia();          LLNotificationsUtil::add("MultipleFacesSelected", LLSD(), LLSD(), multipleFacesSelectedConfirm);      }  | 
