From d414063e6c590728348fb1127da4c90a9896d691 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Thu, 4 Feb 2010 19:55:07 -0600 Subject: Added SliderScrollWheelMultiplier setting. Affects the direction sliders move from mouse scroll wheel. Also added LLSlider::getScrollWheelMultiplier() and LLSlider::setScrollWheelMultiplier(). --- ChangeLog.txt | 14 ++++++++++++++ linden/indra/llui/llslider.cpp | 21 ++++++++++++++++++++- linden/indra/llui/llslider.h | 5 +++++ linden/indra/newview/app_settings/settings.xml | 11 +++++++++++ linden/indra/newview/llappviewer.cpp | 3 +++ linden/indra/newview/llviewercontrol.cpp | 9 +++++++++ 6 files changed, 62 insertions(+), 1 deletion(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 4d13196..dcfbc04 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,3 +1,17 @@ +2010-02-04 Jacek Antonelli + + * Added SliderScrollWheelMultiplier setting. + Affects the direction sliders move from mouse scroll wheel. + Also added LLSlider::getScrollWheelMultiplier() and + LLSlider::setScrollWheelMultiplier(). + + modified: linden/indra/llui/llslider.cpp + modified: linden/indra/llui/llslider.h + modified: linden/indra/newview/app_settings/settings.xml + modified: linden/indra/newview/llappviewer.cpp + modified: linden/indra/newview/llviewercontrol.cpp + + 2010-01-30 Jacek Antonelli * Improved "Pay Object" floater layout and XML. diff --git a/linden/indra/llui/llslider.cpp b/linden/indra/llui/llslider.cpp index 83b4d65..5c17baa 100644 --- a/linden/indra/llui/llslider.cpp +++ b/linden/indra/llui/llslider.cpp @@ -46,6 +46,10 @@ static LLRegisterWidget r1("slider_bar"); static LLRegisterWidget r2("volume_slider"); +// This is overridden based on user's settings. +S32 LLSlider::sScrollWheelMultiplier = 1; + + LLSlider::LLSlider( const std::string& name, const LLRect& rect, @@ -222,12 +226,27 @@ BOOL LLSlider::handleMouseDown(S32 x, S32 y, MASK mask) return TRUE; } + +// static +void LLSlider::setScrollWheelMultiplier( S32 mult ) +{ + sScrollWheelMultiplier = mult; +} + +// static +S32 LLSlider::getScrollWheelMultiplier() +{ + return sScrollWheelMultiplier; +} + BOOL LLSlider::handleScrollWheel(S32 x, S32 y, S32 clicks) { - setValueAndCommit(getValueF32() - ( getIncrement()* (F32)clicks )); + S32 mult = LLSlider::getScrollWheelMultiplier(); + setValueAndCommit(getValueF32() - (getIncrement() * (F32)clicks * mult)); return TRUE; } + BOOL LLSlider::handleKeyHere(KEY key, MASK mask) { BOOL handled = FALSE; diff --git a/linden/indra/llui/llslider.h b/linden/indra/llui/llslider.h index 9fc85f2..d558ce2 100644 --- a/linden/indra/llui/llslider.h +++ b/linden/indra/llui/llslider.h @@ -56,6 +56,9 @@ public: virtual LLXMLNodePtr getXML(bool save_children = true) const; static LLView* fromXML(LLXMLNodePtr node, LLView *parent, class LLUICtrlFactory *factory); + static void setScrollWheelMultiplier( S32 mult ); + static S32 getScrollWheelMultiplier(); + void setValue( F32 value, BOOL from_event = FALSE ); F32 getValueF32() const { return mValue; } @@ -107,6 +110,8 @@ private: void (*mMouseDownCallback)(LLUICtrl* ctrl, void* userdata); void (*mMouseUpCallback)(LLUICtrl* ctrl, void* userdata); + + static S32 sScrollWheelMultiplier; }; #endif // LL_LLSLIDER_H diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index 76183ef..f8594ad 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml @@ -9458,6 +9458,17 @@ 29 + SliderScrollWheelMultiplier + + Comment + Multiplier for the amount the mouse scroll wheel affects slider widgets in the UI. E.g. -1 makes sliders move the opposite way when scrolled. + Persist + 1 + Type + S32 + Value + 1 + SmallAvatarNames Comment diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp index f1c6064..a57050d 100644 --- a/linden/indra/newview/llappviewer.cpp +++ b/linden/indra/newview/llappviewer.cpp @@ -146,6 +146,7 @@ #include "llvovolume.h" #include "llflexibleobject.h" #include "llvosurfacepatch.h" +#include "llslider.h" // includes for idle() idleShutdown() #include "llviewercontrol.h" @@ -422,6 +423,8 @@ static void settings_to_globals() LLHoverView::sShowHoverTips = gSavedSettings.getBOOL("ShowHoverTips"); LLCubeMap::sUseCubeMaps = LLFeatureManager::getInstance()->isFeatureAvailable("RenderCubeMap"); + + LLSlider::setScrollWheelMultiplier( gSavedSettings.getS32("SliderScrollWheelMultiplier") ); } static void settings_modify() diff --git a/linden/indra/newview/llviewercontrol.cpp b/linden/indra/newview/llviewercontrol.cpp index b9db346..08e9d45 100644 --- a/linden/indra/newview/llviewercontrol.cpp +++ b/linden/indra/newview/llviewercontrol.cpp @@ -71,6 +71,8 @@ #include "llvowlsky.h" #include "llrender.h" #include "llmediamanager.h" +#include "llslider.h" + #ifdef TOGGLE_HACKED_GODLIKE_VIEWER BOOL gHackGodmode = FALSE; @@ -462,6 +464,12 @@ bool handleMediaDebugLevelChanged(const LLSD& newvalue) return true; } +bool handleSliderScrollWheelMultiplierChanged(const LLSD& newvalue) +{ + LLSlider::setScrollWheelMultiplier( newvalue.asInteger() ); + return true; +} + //////////////////////////////////////////////////////////////////////////// void settings_setup_listeners() @@ -592,6 +600,7 @@ void settings_setup_listeners() gSavedSettings.getControl("AudioLevelMic")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); gSavedSettings.getControl("LipSyncEnabled")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); gSavedSettings.getControl("MediaDebugLevel")->getSignal()->connect(boost::bind(&handleMediaDebugLevelChanged, _1)); + gSavedSettings.getControl("SliderScrollWheelMultiplier")->getSignal()->connect(boost::bind(&handleSliderScrollWheelMultiplierChanged, _1)); // [RLVa:KB] - Checked: 2009-08-11 (RLVa-1.0.1h) | Added: RLVa-1.0.1h if (gSavedSettings.controlExists(RLV_SETTING_ENABLELEGACYNAMING)) -- cgit v1.1