diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index 7d9adcd8927818c53eca357b32743d113b359bc0..1aa58ed9aafdacdad0017a1b3a409a74bb66e3e1 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -94,6 +94,7 @@ class LLButton image_color, image_color_disabled, image_overlay_color, + image_overlay_disabled_color, flash_color; // layout @@ -286,11 +287,9 @@ class LLButton S32 mButtonFlashCount; F32 mButtonFlashRate; -private: void drawBorder(LLUIImage* imagep, const LLColor4& color, S32 size); void resetMouseDownTimer(); -private: commit_signal_t* mMouseDownSignal; commit_signal_t* mMouseUpSignal; commit_signal_t* mHeldDownSignal; @@ -306,6 +305,7 @@ class LLButton LLPointer<LLUIImage> mImageOverlay; LLFontGL::HAlign mImageOverlayAlignment; LLUIColor mImageOverlayColor; + LLUIColor mImageOverlayDisabledColor; LLPointer<LLUIImage> mImageUnselected; LLUIString mUnselectedLabel; diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp index 226a218e47be9b75875ae6d77c57956b99a0d0f5..4d88c37fda88cc59cb045a13560032310e0fd066 100644 --- a/indra/llui/lltoolbar.cpp +++ b/indra/llui/lltoolbar.cpp @@ -692,7 +692,7 @@ void LLToolBar::draw() { const bool button_command_enabled = (*btn->mIsEnabledSignal)(btn, command->isEnabledParameters()); // TODO: make button appear disabled but have it still respond to drag and drop - btn->setEnabled(button_command_enabled); + btn->setEnabled(false);//button_command_enabled); } if (command && btn->mIsRunningSignal) @@ -901,7 +901,14 @@ LLToolBarButton::LLToolBarButton(const Params& p) mIsStartingSignal(NULL), mIsDragged(false), mStartDragItemCallback(NULL), - mHandleDragItemCallback(NULL) + mHandleDragItemCallback(NULL), + mOriginalImageSelected(p.image_selected), + mOriginalImageUnselected(p.image_unselected), + mOriginalImagePressed(p.image_pressed), + mOriginalImagePressedSelected(p.image_pressed_selected), + mOriginalLabelColor(p.label_color), + mOriginalLabelColorSelected(p.label_color_selected), + mOriginalImageOverlayColor(p.image_overlay_color) { mButtonFlashRate = 0.0; mButtonFlashCount = 0; @@ -980,6 +987,32 @@ void LLToolBarButton::reshape(S32 width, S32 height, BOOL called_from_parent) LLButton::reshape(mWidthRange.clamp(width), height, called_from_parent); } +void LLToolBarButton::setEnabled(BOOL enabled) +{ + if (enabled) + { + mImageSelected = mOriginalImageSelected; + mImageUnselected = mOriginalImageUnselected; + mImagePressed = mOriginalImagePressed; + mImagePressedSelected = mOriginalImagePressedSelected; + mUnselectedLabelColor = mOriginalLabelColor; + mSelectedLabelColor = mOriginalLabelColorSelected; + mImageOverlayColor = mOriginalImageOverlayColor; + } + + else + { + mImageSelected = mImageDisabledSelected; + mImageUnselected = mImageDisabled; + mImagePressed = mImageDisabled; + mImagePressedSelected = mImageDisabledSelected; + mUnselectedLabelColor = mDisabledLabelColor; + mSelectedLabelColor = mDisabledSelectedLabelColor; + mImageOverlayColor = mImageOverlayDisabledColor; + } +} + + const std::string LLToolBarButton::getToolTip() const { std::string tooltip; diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h index f7ec3186525f04e6f1dc6e89057b9f4249bcba11..47af039d527b8e63b2eeb4d18f31be37dfb51dda 100644 --- a/indra/llui/lltoolbar.h +++ b/indra/llui/lltoolbar.h @@ -48,7 +48,7 @@ class LLToolBarButton : public LLButton struct Params : public LLInitParam::Block<Params, LLButton::Params> { Optional<LLUI::RangeS32::Params> button_width; - Optional<S32> desired_height; + Optional<S32> desired_height; Params() : button_width("button_width"), @@ -63,7 +63,7 @@ class LLToolBarButton : public LLButton BOOL handleMouseDown(S32 x, S32 y, MASK mask); BOOL handleHover(S32 x, S32 y, MASK mask); void reshape(S32 width, S32 height, BOOL called_from_parent = true); - + void setEnabled(BOOL enabled); void setCommandId(const LLCommandId& id) { mId = id; } void setStartDragCallback(tool_startdrag_callback_t cb) { mStartDragItemCallback = cb; } @@ -89,6 +89,13 @@ class LLToolBarButton : public LLButton enable_signal_t* mIsEnabledSignal; enable_signal_t* mIsRunningSignal; enable_signal_t* mIsStartingSignal; + LLPointer<LLUIImage> mOriginalImageSelected, + mOriginalImageUnselected, + mOriginalImagePressed, + mOriginalImagePressedSelected; + LLUIColor mOriginalLabelColor, + mOriginalLabelColorSelected, + mOriginalImageOverlayColor; }; diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml index be5dfaf18c8a08145588c79371912be5476e9437..7e7a9c61cfc6399ada520398700fd74620e5e13b 100644 --- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml +++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml @@ -18,6 +18,8 @@ image_pressed="PushButton_Press" image_pressed_selected="PushButton_Selected_Press" image_selected="PushButton_Selected_Press" + image_disabled_selected="PushButton_Selected_Disabled" + image_disabled="PushButton_Disabled" button_width.min="70" button_width.max="140" desired_height="24" @@ -36,6 +38,8 @@ image_pressed="PushButton_Press" image_pressed_selected="PushButton_Selected_Press" image_selected="PushButton_Selected_Press" + image_disabled_selected="PushButton_Selected_Disabled" + image_disabled="PushButton_Disabled" desired_height="38" button_width.min="38" button_width.max="38"