Skip to content

Commit 66a1989

Browse files
Merge pull request #115 from teeworlds-mirror/mirror_3252_CherryEx_master
Let some scrollbars have out of range values teeworlds#3252
2 parents 76acb6f + 76a7f6b commit 66a1989

File tree

4 files changed

+20
-8
lines changed

4 files changed

+20
-8
lines changed

src/game/client/components/menus_callback.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,11 @@ float CMenus::RenderSettingsControlsMouse(CUIRect View)
145145

146146
View.HSplitTop(Spacing, 0, &View);
147147
View.HSplitTop(ButtonHeight, &Button, &View);
148-
UI()->DoScrollbarOption(&Config()->m_InpMousesens, &Config()->m_InpMousesens, &Button, Localize("In-game mouse sens."), 1, 500, &CUI::ms_LogarithmicScrollbarScale);
148+
UI()->DoScrollbarOption(&Config()->m_InpMousesens, &Config()->m_InpMousesens, &Button, Localize("In-game mouse sens."), 1, 500, &CUI::ms_LogarithmicScrollbarScale, CUI::SCROLLBAR_OPTION_NOCLAMPVALUE);
149149

150150
View.HSplitTop(Spacing, 0, &View);
151151
View.HSplitTop(ButtonHeight, &Button, &View);
152-
UI()->DoScrollbarOption(&Config()->m_UiMousesens, &Config()->m_UiMousesens, &Button, Localize("Menu mouse sens."), 1, 500, &CUI::ms_LogarithmicScrollbarScale);
152+
UI()->DoScrollbarOption(&Config()->m_UiMousesens, &Config()->m_UiMousesens, &Button, Localize("Menu mouse sens."), 1, 500, &CUI::ms_LogarithmicScrollbarScale, CUI::SCROLLBAR_OPTION_NOCLAMPVALUE);
153153

154154
return BackgroundHeight;
155155
}
@@ -217,12 +217,12 @@ float CMenus::RenderSettingsControlsJoystick(CUIRect View)
217217
{
218218
View.HSplitTop(Spacing, 0, &View);
219219
View.HSplitTop(ButtonHeight, &Button, &View);
220-
UI()->DoScrollbarOption(&Config()->m_JoystickSens, &Config()->m_JoystickSens, &Button, Localize("In-game joystick sensitivity"), 1, 500, &CUI::ms_LogarithmicScrollbarScale);
220+
UI()->DoScrollbarOption(&Config()->m_JoystickSens, &Config()->m_JoystickSens, &Button, Localize("In-game joystick sensitivity"), 1, 500, &CUI::ms_LogarithmicScrollbarScale, CUI::SCROLLBAR_OPTION_NOCLAMPVALUE);
221221
}
222222

223223
View.HSplitTop(Spacing, 0, &View);
224224
View.HSplitTop(ButtonHeight, &Button, &View);
225-
UI()->DoScrollbarOption(&Config()->m_UiJoystickSens, &Config()->m_UiJoystickSens, &Button, Localize("Menu/Editor joystick sensitivity"), 1, 500, &CUI::ms_LogarithmicScrollbarScale);
225+
UI()->DoScrollbarOption(&Config()->m_UiJoystickSens, &Config()->m_UiJoystickSens, &Button, Localize("Menu/Editor joystick sensitivity"), 1, 500, &CUI::ms_LogarithmicScrollbarScale, CUI::SCROLLBAR_OPTION_NOCLAMPVALUE);
226226

227227
View.HSplitTop(Spacing, 0, &View);
228228
View.HSplitTop(ButtonHeight, &Button, &View);

src/game/client/components/menus_settings.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -977,7 +977,7 @@ void CMenus::RenderSettingsGeneral(CUIRect MainView)
977977
Config()->m_ClAutoDemoRecord ^= 1;
978978

979979
if(Config()->m_ClAutoDemoRecord)
980-
UI()->DoScrollbarOption(&Config()->m_ClAutoDemoMax, &Config()->m_ClAutoDemoMax, &ClientRight, Localize("Max"), 0, 1000, &CUI::ms_LogarithmicScrollbarScale, true);
980+
UI()->DoScrollbarOption(&Config()->m_ClAutoDemoMax, &Config()->m_ClAutoDemoMax, &ClientRight, Localize("Max"), 0, 1000, &CUI::ms_LogarithmicScrollbarScale, CUI::SCROLLBAR_OPTION_INFINITE);
981981

982982
Client.HSplitTop(Spacing, 0, &Client);
983983
Client.HSplitTop(ButtonHeight, &ClientLeft, &Client);
@@ -986,7 +986,7 @@ void CMenus::RenderSettingsGeneral(CUIRect MainView)
986986
Config()->m_ClAutoScreenshot ^= 1;
987987

988988
if(Config()->m_ClAutoScreenshot)
989-
UI()->DoScrollbarOption(&Config()->m_ClAutoScreenshotMax, &Config()->m_ClAutoScreenshotMax, &ClientRight, Localize("Max"), 0, 1000, &CUI::ms_LogarithmicScrollbarScale, true);
989+
UI()->DoScrollbarOption(&Config()->m_ClAutoScreenshotMax, &Config()->m_ClAutoScreenshotMax, &ClientRight, Localize("Max"), 0, 1000, &CUI::ms_LogarithmicScrollbarScale, CUI::SCROLLBAR_OPTION_INFINITE);
990990

991991
MainView.HSplitTop(10.0f, 0, &MainView);
992992

src/game/client/ui.cpp

+7-1
Original file line numberDiff line numberDiff line change
@@ -705,8 +705,10 @@ float CUI::DoScrollbarH(const void *pID, const CUIRect *pRect, float Current)
705705
return ReturnValue;
706706
}
707707

708-
void CUI::DoScrollbarOption(const void *pID, int *pOption, const CUIRect *pRect, const char *pStr, int Min, int Max, const IScrollbarScale *pScale, bool Infinite)
708+
void CUI::DoScrollbarOption(const void *pID, int *pOption, const CUIRect *pRect, const char *pStr, int Min, int Max, const IScrollbarScale *pScale, unsigned char Options)
709709
{
710+
const bool Infinite = Options & CUI::SCROLLBAR_OPTION_INFINITE;
711+
const bool NoClampValue = Options & CUI::SCROLLBAR_OPTION_NOCLAMPVALUE;
710712
int Value = *pOption;
711713
if(Infinite)
712714
{
@@ -736,6 +738,10 @@ void CUI::DoScrollbarOption(const void *pID, int *pOption, const CUIRect *pRect,
736738

737739
ScrollBar.VMargin(4.0f, &ScrollBar);
738740
Value = pScale->ToAbsolute(DoScrollbarH(pID, &ScrollBar, pScale->ToRelative(Value, Min, Max)), Min, Max);
741+
if (NoClampValue && ((Value == Min && *pOption < Min) || (Value == Max && *pOption > Max)))
742+
{
743+
Value = *pOption;
744+
}
739745
if(Infinite && Value == Max)
740746
Value = 0;
741747

src/game/client/ui.h

+7-1
Original file line numberDiff line numberDiff line change
@@ -273,9 +273,15 @@ class CUI
273273
// scrollbars
274274
float DoScrollbarV(const void *pID, const CUIRect *pRect, float Current);
275275
float DoScrollbarH(const void *pID, const CUIRect *pRect, float Current);
276-
void DoScrollbarOption(const void *pID, int *pOption, const CUIRect *pRect, const char *pStr, int Min, int Max, const IScrollbarScale *pScale = &ms_LinearScrollbarScale, bool Infinite = false);
276+
void DoScrollbarOption(const void *pID, int *pOption, const CUIRect *pRect, const char *pStr, int Min, int Max, const IScrollbarScale *pScale = &ms_LinearScrollbarScale, unsigned char Options = 0);
277277
void DoScrollbarOptionLabeled(const void *pID, int *pOption, const CUIRect *pRect, const char *pStr, const char *apLabels[], int NumLabels, const IScrollbarScale *pScale = &ms_LinearScrollbarScale);
278278

279+
enum
280+
{
281+
SCROLLBAR_OPTION_INFINITE = 1 << 0,
282+
SCROLLBAR_OPTION_NOCLAMPVALUE = 1 << 1,
283+
};
284+
279285
// tooltips
280286
void DoTooltip(const void *pID, const CUIRect *pRect, const char *pText);
281287
void RenderTooltip();

0 commit comments

Comments
 (0)