diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llinventory/llsettingsbase.h | 1 | ||||
| -rw-r--r-- | indra/newview/llenvironment.cpp | 28 | ||||
| -rw-r--r-- | indra/newview/llpanelenvironment.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llsettingspicker.cpp | 10 | 
4 files changed, 34 insertions, 7 deletions
| diff --git a/indra/llinventory/llsettingsbase.h b/indra/llinventory/llsettingsbase.h index 9e03052892..45d2fa0027 100644 --- a/indra/llinventory/llsettingsbase.h +++ b/indra/llinventory/llsettingsbase.h @@ -519,6 +519,7 @@ public:      inline void setIgnoreTimeDeltaThreshold(bool val) { mIgnoreTimeDelta = val; }      inline bool getIgnoreTimeDeltaThreshold() const { return mIgnoreTimeDelta; } +    inline void setTimeSpent(LLSettingsBase::Seconds time) { mTimeSpent = time; }  protected:      LLSettingsBase::BlendFactor calculateBlend(const LLSettingsBase::TrackPosition& spanpos, const LLSettingsBase::TrackPosition& spanlen) const; diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index bf8cf4b552..fa583bdc9c 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -170,6 +170,20 @@ namespace          return llclamp(position, 0.0f, 1.0f);      } +    inline LLSettingsBase::BlendFactor convert_time_to_blend_factor(const LLSettingsBase::Seconds& time, const LLSettingsBase::Seconds& len, LLSettingsDay::CycleTrack_t &track) +    { +        LLSettingsBase::TrackPosition position = convert_time_to_position(time, len); +        LLSettingsDay::TrackBound_t bounds(get_bounding_entries(track, position)); + +        LLSettingsBase::TrackPosition spanlength(get_wrapping_distance((*bounds.first).first, (*bounds.second).first)); +        if (position < (*bounds.first).first) +            position += 1.0; + +        LLSettingsBase::TrackPosition start = position - (*bounds.first).first; + +        return static_cast<LLSettingsBase::BlendFactor>(start / spanlength); +    } +      //---------------------------------------------------------------------      class LLTrackBlenderLoopingTime : public LLSettingsBlenderTimeDelta      { @@ -186,12 +200,14 @@ namespace              // must happen prior to getBoundingEntries call...              mTrackNo = selectTrackNumber(trackno); -            LLSettingsDay::TrackBound_t initial = getBoundingEntries(getAdjustedNow()); +            LLSettingsBase::Seconds now(getAdjustedNow()); +            LLSettingsDay::TrackBound_t initial = getBoundingEntries(now);              mInitial = (*initial.first).second;              mFinal = (*initial.second).second;              mBlendSpan = getSpanTime(initial); +            initializeTarget(now);              setOnFinished([this](const LLSettingsBlender::ptr_t &){ onFinishedSpan(); });          } @@ -248,6 +264,16 @@ namespace              return bounds;          } +        void initializeTarget(LLSettingsBase::Seconds time) +        { +            LLSettingsBase::BlendFactor blendf(convert_time_to_blend_factor(time, mCycleLength, mDay->getCycleTrack(mTrackNo))); + +            blendf = llclamp(blendf, 0.0, 0.999); +            setTimeSpent(LLSettingsBase::Seconds(blendf * mBlendSpan)); + +            setBlendFactor(blendf); +        } +          LLSettingsBase::Seconds getAdjustedNow() const          {              LLSettingsBase::Seconds now(LLDate::now().secondsSinceEpoch()); diff --git a/indra/newview/llpanelenvironment.cpp b/indra/newview/llpanelenvironment.cpp index d20cc096de..2cfd0c8fc9 100644 --- a/indra/newview/llpanelenvironment.cpp +++ b/indra/newview/llpanelenvironment.cpp @@ -262,7 +262,7 @@ void LLPanelEnvironmentInfo::refresh()      updateEditFloater(mCurrentEnvironment, canEdit()); -    LLEnvironment::altitude_list_t altitudes = LLEnvironment::instance().getRegionAltitudes(); +    LLEnvironment::altitude_list_t altitudes = mCurrentEnvironment->mAltitudes;      if (altitudes.size() > 0)      { diff --git a/indra/newview/llsettingspicker.cpp b/indra/newview/llsettingspicker.cpp index e2d6d43ae3..fcc615db6e 100644 --- a/indra/newview/llsettingspicker.cpp +++ b/indra/newview/llsettingspicker.cpp @@ -356,9 +356,9 @@ BOOL LLFloaterSettingsPicker::handleDoubleClick(S32 x, S32 y, MASK mask)          S32 inventory_y = y - mInventoryPanel->getRect().mBottom;          if (mInventoryPanel->parentPointInView(inventory_x, inventory_y))          { -            // make sure item (not folder) is selected +            // make sure item is selected and visible              LLFolderViewItem* item_viewp = mInventoryPanel->getItemByID(mSettingItemID); -            if (item_viewp && item_viewp->getIsCurSelection()) +            if (item_viewp && item_viewp->getIsCurSelection() && item_viewp->getVisible())              {                  LLRect target_rect;                  item_viewp->localRectToOtherView(item_viewp->getLocalRect(), &target_rect, this); @@ -373,10 +373,10 @@ BOOL LLFloaterSettingsPicker::handleDoubleClick(S32 x, S32 y, MASK mask)                          (*mCommitSignal)(this, res);                      }                      closeFloater(); +                    // hit inside panel on selected item, double click should do nothing +                    result = TRUE;                  }              } -            // hit inside panel on free place or (de)unselected item, double click should do nothing -            result = TRUE;          }      } @@ -392,7 +392,7 @@ BOOL LLFloaterSettingsPicker::handleKeyHere(KEY key, MASK mask)      if ((key == KEY_RETURN) && (mask == MASK_NONE))      {          LLFolderViewItem* item_viewp = mInventoryPanel->getItemByID(mSettingItemID); -        if (item_viewp && item_viewp->getIsCurSelection()) +        if (item_viewp && item_viewp->getIsCurSelection() && item_viewp->getVisible())          {              // Quick-apply              if (mCommitSignal) | 
