diff options
| -rw-r--r-- | indra/llui/llmultislider.cpp | 91 | ||||
| -rw-r--r-- | indra/llui/llmultislider.h | 10 | ||||
| -rw-r--r-- | indra/llui/llmultisliderctrl.cpp | 12 | ||||
| -rw-r--r-- | indra/llui/llmultisliderctrl.h | 13 | ||||
| -rw-r--r-- | indra/newview/llfloatereditextdaycycle.cpp | 28 | ||||
| -rw-r--r-- | indra/newview/llinventorybridge.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llpanelenvironment.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/llpanelenvironment.h | 4 | ||||
| -rw-r--r-- | indra/newview/llviewerparcelmgr.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/menu_viewer.xml | 4 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_region_environment.xml | 31 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/strings.xml | 6 | 
12 files changed, 139 insertions, 77 deletions
diff --git a/indra/llui/llmultislider.cpp b/indra/llui/llmultislider.cpp index b5e3032626..ef907e620e 100644 --- a/indra/llui/llmultislider.cpp +++ b/indra/llui/llmultislider.cpp @@ -61,9 +61,11 @@ LLMultiSlider::Params::Params()  	use_triangle("use_triangle", false),  	track_color("track_color"),  	thumb_disabled_color("thumb_disabled_color"), +	thumb_highlight_color("thumb_highlight_color"),  	thumb_outline_color("thumb_outline_color"),  	thumb_center_color("thumb_center_color"),  	thumb_center_selected_color("thumb_center_selected_color"), +	thumb_image("thumb_image"),  	triangle_color("triangle_color"),  	mouse_down_callback("mouse_down_callback"),  	mouse_up_callback("mouse_up_callback"), @@ -133,6 +135,12 @@ LLMultiSlider::LLMultiSlider(const LLMultiSlider::Params& p)  			addSlider(it->value);  		}  	} + +	if (p.thumb_image.isProvided()) +	{ +		mThumbImagep = LLUI::getUIImage(p.thumb_image()); +	} +	mThumbHighlightColor = p.thumb_highlight_color.isProvided() ? p.thumb_highlight_color() : static_cast<LLUIColor>(gFocusMgr.getFocusColor());  }  LLMultiSlider::~LLMultiSlider() @@ -644,7 +652,7 @@ void LLMultiSlider::draw()  				mTriangleColor.get() % opacity, TRUE);  		}  	} -	else if (!thumb_imagep) +	else if (!thumb_imagep && !mThumbImagep)  	{  		// draw all the thumbs  		curSldrIt = mThumbRects.end(); @@ -674,15 +682,33 @@ void LLMultiSlider::draw()  			gl_rect_2d(mDragStartThumbRect, mThumbCenterColor.get() % opacity, FALSE);  		}  	} -	else if( gFocusMgr.getMouseCapture() == this ) +	else  	{ -		// draw drag start -		thumb_imagep->drawSolid(mDragStartThumbRect, mThumbCenterColor.get() % 0.3f); +		LLMouseHandler* capture = gFocusMgr.getMouseCapture(); +		if (capture == this) +		{ +			// draw drag start (ghost) +			if (mThumbImagep) +			{ +				mThumbImagep->draw(mDragStartThumbRect, mThumbCenterColor.get() % 0.3f); +			} +			else +			{ +				thumb_imagep->drawSolid(mDragStartThumbRect, mThumbCenterColor.get() % 0.3f); +			} +		}  		// draw the highlight  		if (hasFocus() && !mCurSlider.empty())  		{ -			thumb_imagep->drawBorder(mThumbRects[mCurSlider], gFocusMgr.getFocusColor(), gFocusMgr.getFocusFlashWidth()); +			if (mThumbImagep) +			{ +				mThumbImagep->drawBorder(mThumbRects[mCurSlider], mThumbHighlightColor, gFocusMgr.getFocusFlashWidth()); +			} +			else +			{ +				thumb_imagep->drawBorder(mThumbRects[mCurSlider], gFocusMgr.getFocusColor(), gFocusMgr.getFocusFlashWidth()); +			}  		}  		// draw the thumbs @@ -699,44 +725,35 @@ void LLMultiSlider::draw()  			}  			// the draw command -			thumb_imagep->drawSolid(mIt->second, curThumbColor); +			if (mThumbImagep) +			{ +				mThumbImagep->draw(mIt->second); +			} +			else if (capture == this) +			{ +				thumb_imagep->drawSolid(mIt->second, curThumbColor); +			} +			else +			{ +				thumb_imagep->drawSolid(mIt->second, curThumbColor % opacity); +			}  		}  		// draw cur slider last  		if(curSldrIt != mThumbRects.end())   		{ -			thumb_imagep->drawSolid(curSldrIt->second, mThumbCenterSelectedColor.get()); -		} -		 -	} -	else -	{  -		// draw highlight -		if (hasFocus() && !mCurSlider.empty()) -		{ -			thumb_imagep->drawBorder(mThumbRects[mCurSlider], gFocusMgr.getFocusColor(), gFocusMgr.getFocusFlashWidth()); -		} - -		// draw thumbs -		curSldrIt = mThumbRects.end(); -		for(mIt = mThumbRects.begin(); mIt != mThumbRects.end(); mIt++)  -		{ -			 -			// choose the color -			curThumbColor = mThumbCenterColor.get(); -			if(mIt->first == mCurSlider)  +			if (mThumbImagep)  			{ -				curSldrIt = mIt; -				continue; -				//curThumbColor = mThumbCenterSelectedColor; -			}				 -			 -			thumb_imagep->drawSolid(mIt->second, curThumbColor % opacity); -		} - -		if(curSldrIt != mThumbRects.end())  -		{ -			thumb_imagep->drawSolid(curSldrIt->second, mThumbCenterSelectedColor.get() % opacity); +				mThumbImagep->draw(curSldrIt->second); +			} +			else if (capture == this) +			{ +				thumb_imagep->drawSolid(curSldrIt->second, mThumbCenterSelectedColor.get()); +			} +			else +			{ +				thumb_imagep->drawSolid(curSldrIt->second, mThumbCenterSelectedColor.get() % opacity); +			}  		}  	} diff --git a/indra/llui/llmultislider.h b/indra/llui/llmultislider.h index 3884b0a2a0..52c6d1ddef 100644 --- a/indra/llui/llmultislider.h +++ b/indra/llui/llmultislider.h @@ -55,12 +55,14 @@ public:  		Optional<LLUIColor>	track_color,  							thumb_disabled_color, +							thumb_highlight_color,  							thumb_outline_color,  							thumb_center_color,  							thumb_center_selected_color,  							triangle_color; -		Optional<std::string>	orientation; +		Optional<std::string>	orientation, +								thumb_image;  		Optional<CommitCallbackParam>	mouse_down_callback,  										mouse_up_callback; @@ -105,6 +107,10 @@ public:  	/*virtual*/ BOOL	handleKeyHere(KEY key, MASK mask);  	/*virtual*/ void	draw(); +	S32				getMaxNumSliders() { return mMaxNumSliders; } +	S32				getCurNumSliders() { return mValue.size(); } +	bool			canAddSliders() { return mValue.size() < mMaxNumSliders; } +  protected:  	LLSD			mValue;  	std::string		mCurSlider; @@ -125,10 +131,12 @@ protected:  					mThumbRects;  	LLUIColor		mTrackColor;  	LLUIColor		mThumbOutlineColor; +	LLUIColor		mThumbHighlightColor;  	LLUIColor		mThumbCenterColor;  	LLUIColor		mThumbCenterSelectedColor;  	LLUIColor		mDisabledThumbColor;  	LLUIColor		mTriangleColor; +	LLUIImagePtr	mThumbImagep; //blimps on the slider, for now no 'disabled' support  	const EOrientation	mOrientation; diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp index 73792206a6..972567ef9b 100644 --- a/indra/llui/llmultisliderctrl.cpp +++ b/indra/llui/llmultisliderctrl.cpp @@ -55,6 +55,9 @@ LLMultiSliderCtrl::Params::Params()  	allow_overlap("allow_overlap", false),  	loop_overlap("loop_overlap", false),  	orientation("orientation"), +	thumb_image("thumb_image"), +	thumb_width("thumb_width"), +	thumb_highlight_color("thumb_highlight_color"),  	overlap_threshold("overlap_threshold", 0),  	draw_track("draw_track", true),  	use_triangle("use_triangle", false), @@ -171,11 +174,18 @@ LLMultiSliderCtrl::LLMultiSliderCtrl(const LLMultiSliderCtrl::Params& p)  	params.max_sliders(p.max_sliders);  	params.allow_overlap(p.allow_overlap);  	params.loop_overlap(p.loop_overlap); -	params.orientation(p.orientation());  	if (p.overlap_threshold.isProvided())  	{  		params.overlap_threshold = p.overlap_threshold;  	} +	params.orientation(p.orientation); +	params.thumb_image(p.thumb_image); +	params.thumb_highlight_color(p.thumb_highlight_color); +	if (p.thumb_width.isProvided()) +	{ +		// otherwise should be provided by template +		params.thumb_width(p.thumb_width); +	}  	params.draw_track(p.draw_track);  	params.use_triangle(p.use_triangle);  	params.control_name(p.control_name); diff --git a/indra/llui/llmultisliderctrl.h b/indra/llui/llmultisliderctrl.h index a1593c28e0..c370ebf505 100644 --- a/indra/llui/llmultisliderctrl.h +++ b/indra/llui/llmultisliderctrl.h @@ -51,19 +51,22 @@ public:  								text_width;  		Optional<bool>			show_text,  								can_edit_text; -		Optional<S32>			decimal_digits; +		Optional<S32>			decimal_digits, +								thumb_width;  		Optional<S32>			max_sliders;	  		Optional<bool>			allow_overlap,  								loop_overlap,  								draw_track,  								use_triangle; -		Optional<std::string>	orientation; +		Optional<std::string>	orientation, +								thumb_image;  		Optional<F32>			overlap_threshold;  		Optional<LLUIColor>		text_color, -								text_disabled_color; +								text_disabled_color, +								thumb_highlight_color;  		Optional<CommitCallbackParam>	mouse_down_callback,  										mouse_up_callback; @@ -115,6 +118,10 @@ public:  	F32				getMinValue() const { return mMultiSlider->getMinValue(); }  	F32				getMaxValue() const { return mMultiSlider->getMaxValue(); } +	S32				getMaxNumSliders() { return mMultiSlider->getMaxNumSliders(); } +	S32				getCurNumSliders() { return mMultiSlider->getCurNumSliders(); } +	bool			canAddSliders() { return mMultiSlider->canAddSliders(); } +  	void			setLabel(const std::string& label)				{ if (mLabelBox) mLabelBox->setText(label); }  	void			setLabelColor(const LLColor4& c)			{ mTextEnabledColor = c; }  	void			setDisabledLabelColor(const LLColor4& c)	{ mTextDisabledColor = c; } diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp index ad797c686a..5bf34455bb 100644 --- a/indra/newview/llfloatereditextdaycycle.cpp +++ b/indra/newview/llfloatereditextdaycycle.cpp @@ -277,6 +277,11 @@ void LLFloaterEditExtDayCycle::onOpen(const LLSD& key)      }      else      { +        mInventoryItem = nullptr; +        mInventoryId.setNull(); +        mCanCopy = true; +        mCanMod = true; +        mMakeNoTrans = false;          setEditDefaultDayCycle();      } @@ -551,6 +556,12 @@ void LLFloaterEditExtDayCycle::onAddTrack()          LL_WARNS("ENVDAYEDIT") << "Attempt to add new frame too close to existing frame." << LL_ENDL;          return;      } +    if (!mFramesSlider->canAddSliders()) +    { +        // Shouldn't happen, button should be disabled +        LL_WARNS("ENVDAYEDIT") << "Attempt to add new frame when slider is full." << LL_ENDL; +        return; +    }      if (mCurrentTrack == LLSettingsDay::TRACK_WATER)      { @@ -903,7 +914,7 @@ void LLFloaterEditExtDayCycle::updateButtons()      //bool can_add = static_cast<bool>(settings);      //mAddFrameButton->setEnabled(can_add);      //mDeleteFrameButton->setEnabled(!can_add); -    mAddFrameButton->setEnabled(true && mCanMod); +    mAddFrameButton->setEnabled(mCanMod && mFramesSlider->canAddSliders());      mDeleteFrameButton->setEnabled(isRemovingFrameAllowed() && mCanMod);  } @@ -964,13 +975,16 @@ void LLFloaterEditExtDayCycle::addSliderFrame(const F32 frame, LLSettingsBase::p      // multi slider distinguishes elements by key/name in string format      // store names to map to be able to recall dependencies      std::string new_slider = mFramesSlider->addSlider(frame); -    mSliderKeyMap[new_slider] = FrameData(frame, setting); - -    if (update_ui) +    if (!new_slider.empty())      { -        mLastFrameSlider = new_slider; -        mTimeSlider->setCurSliderValue(frame); -        updateTabs(); +        mSliderKeyMap[new_slider] = FrameData(frame, setting); + +        if (update_ui) +        { +            mLastFrameSlider = new_slider; +            mTimeSlider->setCurSliderValue(frame); +            updateTabs(); +        }      }  } diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index e50055feb2..8d084f3ece 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -3940,6 +3940,7 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t&   items  		disabled_items.push_back(std::string("New Folder"));  		disabled_items.push_back(std::string("New Script"));  		disabled_items.push_back(std::string("New Note")); +		disabled_items.push_back(std::string("New Settings"));  		disabled_items.push_back(std::string("New Gesture"));  		disabled_items.push_back(std::string("New Clothes"));  		disabled_items.push_back(std::string("New Body Parts")); diff --git a/indra/newview/llpanelenvironment.cpp b/indra/newview/llpanelenvironment.cpp index 41d7d8b54f..5f4bb7ccb8 100644 --- a/indra/newview/llpanelenvironment.cpp +++ b/indra/newview/llpanelenvironment.cpp @@ -270,7 +270,7 @@ LLFloaterSettingsPicker * LLPanelEnvironmentInfo::getSettingsPicker(bool create)          mSettingsFloater = picker->getHandle(); -        picker->setCommitCallback([this](LLUICtrl *, const LLSD &data){ onPickerCommited(data.asUUID()); }); +        picker->setCommitCallback([this](LLUICtrl *, const LLSD &data){ onPickerCommitted(data.asUUID()); });      }      return picker; @@ -295,7 +295,7 @@ LLFloaterEditExtDayCycle * LLPanelEnvironmentInfo::getEditFloater(bool create)      }      if (editor && !mCommitConnection.connected()) -        mCommitConnection = editor->setEditCommitSignal([this](LLSettingsDay::ptr_t pday) { onEditCommited(pday); }); +        mCommitConnection = editor->setEditCommitSignal([this](LLSettingsDay::ptr_t pday) { onEditCommitted(pday); });      return editor;  } @@ -389,7 +389,7 @@ void LLPanelEnvironmentInfo::updateAltLabel(const std::string &alt_name, U32 sky      LLRect sld_rect = sld->getRect();      U32 sld_range = sld_rect.getHeight();      U32 sld_bottom = sld_rect.mBottom; -    U32 sld_offset = 8 + 1; // Default slider-thumb width plus stretch. Placeholder until images are implemented. +    U32 sld_offset = sld_rect.getWidth(); // Roughly identical to thumb's width in slider.      U32 pos = (sld_range - sld_offset) * ((alt_value - 100) / (4000 - 100));      // get related text box @@ -399,7 +399,7 @@ void LLPanelEnvironmentInfo::updateAltLabel(const std::string &alt_name, U32 sky          // move related text box          LLRect rect = text->getRect();          U32 height = rect.getHeight(); -        rect.mBottom = sld_bottom + sld_offset + pos - (height / 2); +        rect.mBottom = sld_bottom + (sld_offset / 2 + 1) + pos - (height / 2);          rect.mTop = rect.mBottom + height;          text->setRect(rect); @@ -615,7 +615,7 @@ void LLPanelEnvironmentInfo::onIdlePlay(void *data)      ((LLPanelEnvironmentInfo *)data)->udpateApparentTimeOfDay();  } -void LLPanelEnvironmentInfo::onPickerCommited(LLUUID asset_id) +void LLPanelEnvironmentInfo::onPickerCommitted(LLUUID asset_id)  {      LLSettingsVOBase::getSettingsAsset(asset_id, [this](LLUUID, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) {           if (status) @@ -624,7 +624,7 @@ void LLPanelEnvironmentInfo::onPickerCommited(LLUUID asset_id)      });  } -void LLPanelEnvironmentInfo::onEditCommited(LLSettingsDay::ptr_t newday) +void LLPanelEnvironmentInfo::onEditCommitted(LLSettingsDay::ptr_t newday)  {      if (!newday)      { diff --git a/indra/newview/llpanelenvironment.h b/indra/newview/llpanelenvironment.h index bd3db34332..c18092e2e5 100644 --- a/indra/newview/llpanelenvironment.h +++ b/indra/newview/llpanelenvironment.h @@ -116,8 +116,8 @@ protected:      void                        udpateApparentTimeOfDay(); -    void                        onPickerCommited(LLUUID asset_id); -    void                        onEditCommited(LLSettingsDay::ptr_t newday); +    void                        onPickerCommitted(LLUUID asset_id); +    void                        onEditCommitted(LLSettingsDay::ptr_t newday);      void                        onPickerAssetDownloaded(LLSettingsBase::ptr_t settings);      void                        onEnvironmentReceived(S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo); diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index d263e15a10..3ad78efd41 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -659,6 +659,10 @@ LLParcel * LLViewerParcelMgr::getAgentOrSelectedParcel() const          if (selection)          {              parcel = selection->getParcel(); +            if (parcel->getLocalID() == INVALID_PARCEL_ID) +            { +                parcel = NULL; +            }          }      } diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index b6bc271cf1..8af754ffec 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -698,8 +698,8 @@                   parameter="midnight" />              </menu_item_check>              <menu_item_check -             label="Use Region Settings" -             name="Use Region Settings"> +             label="Use Shared Environment" +             name="Use Shared Environment">                  <menu_item_check.on_click                   function="World.EnvSettings"                   parameter="region" /> diff --git a/indra/newview/skins/default/xui/en/panel_region_environment.xml b/indra/newview/skins/default/xui/en/panel_region_environment.xml index 8229dcb91d..3b77744f1b 100644 --- a/indra/newview/skins/default/xui/en/panel_region_environment.xml +++ b/indra/newview/skins/default/xui/en/panel_region_environment.xml @@ -26,13 +26,11 @@                  name="pnl_environment_disabled"                  visible="false">              <text follows="top|left|bottom|right" -                            font="SansSerif"                              halign="center"                              valign="top" -                            top_pad="20" +                            top_pad="40"                              text_color="white"> -No Parcel parcel is selected. Environmental  -settings are disabled. +No parcel is selected. Environmental settings are disabled.              </text>          </layout_panel>          <layout_panel  @@ -237,8 +235,8 @@ settings are disabled.                  <multi_slider                      decimal_digits="0"                      follows="bottom" -                    height="120" -                    width="10" +                    height="123" +                    width="17"                      orientation="vertical"                      increment="10"                      initial_value="100" @@ -248,22 +246,25 @@ settings are disabled.                      top="20"                      max_sliders="20"                      name="sld_altitudes" -                    show_text="false"> +                    show_text="false" +                    thumb_image="Inv_SettingsSky" +                    thumb_width="17" +                    thumb_highlight_color="white">                      <slider name="sld1" value="200"/>                      <slider name="sld2" value="400"/>                      <slider name="sld3" value="600"/>                  </multi_slider>                  <icon                      follows="left|top" -                    height="10" -                    width="10" -                    image_name="Rounded_Square" +                    height="17" +                    width="17" +                    image_name="Inv_SettingsSky"                      layout="topleft" -                    name="camera_icon" +                    name="icon_ground"                      mouse_opaque="false"                      visible="true"                      left_delta="0" -                    top_pad="-3"/> +                    top_pad="-9"/>                  <text                          type="string"                          length="1" @@ -282,7 +283,7 @@ settings are disabled.                          follows="left"                          height="12"                          layout="topleft" -                        left="25" +                        left="35"                          top="30"                          width="200"                          name="alt1"> @@ -294,7 +295,7 @@ settings are disabled.                          follows="left|top"                          height="12"                          layout="topleft" -                        left="25" +                        left="35"                          top="40"                          width="200"                          name="alt2"> @@ -306,7 +307,7 @@ settings are disabled.                          follows="left|top"                          height="12"                          layout="topleft" -                        left="25" +                        left="35"                          top="50"                          width="200"                          name="alt3"> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 3a882a73d3..76d040150d 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -404,9 +404,9 @@ http://secondlife.com/support for help fixing this problem.  	<string name="simstate">simstate</string>  	<string name="favorite">favorite</string>  	<string name="symbolic link">link</string> -	<string name="symbolic folder link">folder link</string> -  <string name="mesh">mesh</string> -  <string name="settings">settings</string> +    <string name="settings blob">settings</string> +    <string name="symbolic folder link">folder link</string> +    <string name="mesh">mesh</string>  	<!-- llvoavatar. Displayed in the avatar chat bubble -->  	<string name="AvatarEditingAppearance">(Editing Appearance)</string>  | 
