The new settings UI is quite complicated. It reuses elements like sliders and drop downs on every page, giving it different labels. So you have to search for the one you want to disable and re-enable it when the page changes. Here is how I disabled the "Mouse Look Speed" slider with my addon DynamicCam. (The label text constant MOUSE_LOOK_SPEED by which I recognize the element could be found here:
https://www.townlong-yak.com/framexm...balStrings.lua)
Lua Code:
local mouseLookSpeedSlider = nil
local MouseLookSpeedSliderOrignialTooltipEnter = nil
local MouseLookSpeedSliderOrignialTooltipLeave = nil
hooksecurefunc(SettingsPanel.Container.SettingsList.ScrollBox, "Update", function(self)
local foundMouseLookSpeedSlider = false
local children = { SettingsPanel.Container.SettingsList.ScrollBox.ScrollTarget:GetChildren() }
for i, child in ipairs(children) do
if child.Text then
if child.Text:GetText() == MOUSE_LOOK_SPEED then
-- print("Found", child.Text:GetText(), MOUSE_LOOK_SPEED)
foundMouseLookSpeedSlider = true
if not mouseLookSpeedSlider then
-- print("Disabling slider")
mouseLookSpeedSlider = child.SliderWithSteppers
if not MouseLookSpeedSliderOrignialTooltipEnter then
MouseLookSpeedSliderOrignialTooltipEnter = mouseLookSpeedSlider.Slider:GetScript("OnEnter")
MouseLookSpeedSliderOrignialTooltipLeave = mouseLookSpeedSlider.Slider:GetScript("OnLeave")
end
-- Change tooltip.
mouseLookSpeedSlider.Slider:SetScript("OnEnter", function(self)
GameTooltip:SetOwner(self, "ANCHOR_RIGHT", 0, 0)
GameTooltip:AddLine("|cFFFF0000Disabled!|r", _, _, _, true)
GameTooltip:AddLine("Your Addon DynamicCam lets you adjust horizontal and vertical mouse look speed individually! Just go to the \"Mouse Look\" settings of DynamicCam to make the adjustments there.", _, _, _, true)
GameTooltip:Show()
end)
mouseLookSpeedSlider.Slider:SetScript("OnLeave", function(self)
GameTooltip:Hide()
end)
end
-- Got to make sure, the slider stays disabled.
if mouseLookSpeedSlider.Slider:IsEnabled() then
mouseLookSpeedSlider:SetEnabled_(false)
end
break
end
end
end
-- If the slider is used for something else and we have changed it before, undo the change.
if mouseLookSpeedSlider and not foundMouseLookSpeedSlider then
-- print("Re-enabling slider")
mouseLookSpeedSlider.Slider:SetScript("OnEnter", MouseLookSpeedSliderOrignialTooltipEnter)
mouseLookSpeedSlider.Slider:SetScript("OnLeave", MouseLookSpeedSliderOrignialTooltipLeave)
if not mouseLookSpeedSlider.Slider:IsEnabled() then
mouseLookSpeedSlider:SetEnabled_(true)
end
mouseLookSpeedSlider = nil
end
end)