RENAMED: guiSliderDragging
-> guiControlExclusiveMode
Now this variables could serve to a wider purpose to multiple controls, to allow the excusive mode usage and to identify the current control rectangle with a "unique" id.
This commit is contained in:
parent
7fe39be75a
commit
7a5f4320bc
106
src/raygui.h
106
src/raygui.h
@ -1365,8 +1365,8 @@ static unsigned int guiIconScale = 1; // Gui icon default scale (if ic
|
||||
static bool guiTooltip = false; // Tooltip enabled/disabled
|
||||
static const char *guiTooltipPtr = NULL; // Tooltip string pointer (string provided by user)
|
||||
|
||||
static bool guiSliderDragging = false; // Gui slider drag state (no inputs processed except dragged slider)
|
||||
static Rectangle guiSliderActive = { 0 }; // Gui slider active bounds rectangle, used as an unique identifier
|
||||
static bool guiControlExclusiveMode = false; // Gui control exclusive mode (no inputs processed except current control)
|
||||
static Rectangle guiControlExclusiveRec = { 0 }; // Gui control exclusive bounds rectangle, used as an unique identifier
|
||||
|
||||
static int textBoxCursorIndex = 0; // Cursor index, shared by all GuiTextBox*()
|
||||
//static int blinkCursorFrameCounter = 0; // Frame counter for cursor blinking
|
||||
@ -1961,7 +1961,7 @@ int GuiButton(Rectangle bounds, const char *text)
|
||||
|
||||
// Update control
|
||||
//--------------------------------------------------------------------
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiSliderDragging)
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
@ -1999,7 +1999,7 @@ int GuiLabelButton(Rectangle bounds, const char *text)
|
||||
|
||||
// Update control
|
||||
//--------------------------------------------------------------------
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiSliderDragging)
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
@ -2033,7 +2033,7 @@ int GuiToggle(Rectangle bounds, const char *text, bool *active)
|
||||
|
||||
// Update control
|
||||
//--------------------------------------------------------------------
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiSliderDragging)
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
@ -2213,7 +2213,7 @@ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked)
|
||||
|
||||
// Update control
|
||||
//--------------------------------------------------------------------
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiSliderDragging)
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
@ -2281,7 +2281,7 @@ int GuiComboBox(Rectangle bounds, const char *text, int *active)
|
||||
|
||||
// Update control
|
||||
//--------------------------------------------------------------------
|
||||
if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiSliderDragging)
|
||||
if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiControlExclusiveMode)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
@ -2343,7 +2343,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod
|
||||
|
||||
// Update control
|
||||
//--------------------------------------------------------------------
|
||||
if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiSliderDragging)
|
||||
if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiControlExclusiveMode)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
@ -2498,7 +2498,7 @@ int GuiTextBox(Rectangle bounds, char *text, int bufferSize, bool editMode)
|
||||
if ((state != STATE_DISABLED) && // Control not disabled
|
||||
!GuiGetStyle(TEXTBOX, TEXT_READONLY) && // TextBox not on read-only mode
|
||||
!guiLocked && // Gui not locked
|
||||
!guiSliderDragging && // No gui slider on dragging
|
||||
!guiControlExclusiveMode && // No gui slider on dragging
|
||||
(wrapMode == TEXT_WRAP_NONE)) // No wrap mode
|
||||
{
|
||||
Vector2 mousePosition = GetMousePosition();
|
||||
@ -2773,7 +2773,7 @@ int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int
|
||||
|
||||
// Update control
|
||||
//--------------------------------------------------------------------
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiSliderDragging)
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
@ -2848,7 +2848,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in
|
||||
|
||||
// Update control
|
||||
//--------------------------------------------------------------------
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiSliderDragging)
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
@ -2892,7 +2892,13 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in
|
||||
//if (*value > maxValue) *value = maxValue;
|
||||
//else if (*value < minValue) *value = minValue;
|
||||
|
||||
if (IsKeyPressed(KEY_ENTER) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) result = 1;
|
||||
if (IsKeyPressed(KEY_ENTER) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)))
|
||||
{
|
||||
if (*value > maxValue) *value = maxValue;
|
||||
else if (*value < minValue) *value = minValue;
|
||||
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2952,21 +2958,21 @@ int GuiSliderPro(Rectangle bounds, const char *textLeft, const char *textRight,
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
if (guiSliderDragging) // Keep dragging outside of bounds
|
||||
if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds
|
||||
{
|
||||
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON))
|
||||
{
|
||||
if (CHECK_BOUNDS_ID(bounds, guiSliderActive))
|
||||
if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec))
|
||||
{
|
||||
state = STATE_PRESSED;
|
||||
// Translate Mouse X to Slider Label Value
|
||||
// Get equivalent value and slider position from mousePosition.x
|
||||
*value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width-sliderWidth)) + minValue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
guiSliderDragging = false;
|
||||
guiSliderActive = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 };
|
||||
guiControlExclusiveMode = false;
|
||||
guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 };
|
||||
}
|
||||
}
|
||||
else if (CheckCollisionPointRec(mousePoint, bounds))
|
||||
@ -2974,12 +2980,12 @@ int GuiSliderPro(Rectangle bounds, const char *textLeft, const char *textRight,
|
||||
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON))
|
||||
{
|
||||
state = STATE_PRESSED;
|
||||
guiSliderDragging = true;
|
||||
guiSliderActive = bounds; // Store bounds as an identifier when dragging starts
|
||||
guiControlExclusiveMode = true;
|
||||
guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts
|
||||
|
||||
if (!CheckCollisionPointRec(mousePoint, slider))
|
||||
{
|
||||
// Translate Mouse X to Slider Label Value
|
||||
// Get equivalent value and slider position from mousePosition.x
|
||||
*value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width-sliderWidth)) + minValue;
|
||||
}
|
||||
}
|
||||
@ -2994,6 +3000,7 @@ int GuiSliderPro(Rectangle bounds, const char *textLeft, const char *textRight,
|
||||
if(oldValue == *value) result = 0;
|
||||
else result = 1;
|
||||
|
||||
// Slider bar limits check
|
||||
int sliderValue = (int)(((*value - minValue)/(maxValue - minValue))*(bounds.width - sliderWidth - GuiGetStyle(SLIDER, BORDER_WIDTH)));
|
||||
if (sliderWidth > 0) // Slider
|
||||
{
|
||||
@ -3008,7 +3015,6 @@ int GuiSliderPro(Rectangle bounds, const char *textLeft, const char *textRight,
|
||||
slider.width = (float)sliderValue;
|
||||
if (slider.width > bounds.width) slider.width = bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
// Draw control
|
||||
@ -3161,7 +3167,7 @@ int GuiDummyRec(Rectangle bounds, const char *text)
|
||||
|
||||
// Update control
|
||||
//--------------------------------------------------------------------
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiSliderDragging)
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
@ -3228,7 +3234,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd
|
||||
|
||||
// Update control
|
||||
//--------------------------------------------------------------------
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiSliderDragging)
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
@ -3390,11 +3396,11 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
if (guiSliderDragging) // Keep dragging outside of bounds
|
||||
if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds
|
||||
{
|
||||
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON))
|
||||
{
|
||||
if (CHECK_BOUNDS_ID(bounds, guiSliderActive))
|
||||
if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec))
|
||||
{
|
||||
state = STATE_PRESSED;
|
||||
|
||||
@ -3405,8 +3411,8 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha)
|
||||
}
|
||||
else
|
||||
{
|
||||
guiSliderDragging = false;
|
||||
guiSliderActive = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 };
|
||||
guiControlExclusiveMode = false;
|
||||
guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 };
|
||||
}
|
||||
}
|
||||
else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector))
|
||||
@ -3414,8 +3420,8 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha)
|
||||
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON))
|
||||
{
|
||||
state = STATE_PRESSED;
|
||||
guiSliderDragging = true;
|
||||
guiSliderActive = bounds; // Store bounds as an identifier when dragging starts
|
||||
guiControlExclusiveMode = true;
|
||||
guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts
|
||||
|
||||
*alpha = (mousePoint.x - bounds.x)/bounds.width;
|
||||
if (*alpha <= 0.0f) *alpha = 0.0f;
|
||||
@ -3476,11 +3482,11 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
if (guiSliderDragging) // Keep dragging outside of bounds
|
||||
if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds
|
||||
{
|
||||
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON))
|
||||
{
|
||||
if (CHECK_BOUNDS_ID(bounds, guiSliderActive))
|
||||
if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec))
|
||||
{
|
||||
state = STATE_PRESSED;
|
||||
|
||||
@ -3491,8 +3497,8 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue)
|
||||
}
|
||||
else
|
||||
{
|
||||
guiSliderDragging = false;
|
||||
guiSliderActive = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 };
|
||||
guiControlExclusiveMode = false;
|
||||
guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 };
|
||||
}
|
||||
}
|
||||
else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector))
|
||||
@ -3500,8 +3506,8 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue)
|
||||
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON))
|
||||
{
|
||||
state = STATE_PRESSED;
|
||||
guiSliderDragging = true;
|
||||
guiSliderActive = bounds; // Store bounds as an identifier when dragging starts
|
||||
guiControlExclusiveMode = true;
|
||||
guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts
|
||||
|
||||
*hue = (mousePoint.y - bounds.y)*360/bounds.height;
|
||||
if (*hue <= 0.0f) *hue = 0.0f;
|
||||
@ -3607,7 +3613,7 @@ int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv)
|
||||
return result;
|
||||
}
|
||||
|
||||
// Color Panel control - HSV variant.
|
||||
// Color Panel control - HSV variant
|
||||
int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv)
|
||||
{
|
||||
int result = 0;
|
||||
@ -3632,11 +3638,11 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
if (guiSliderDragging)
|
||||
if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds
|
||||
{
|
||||
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON))
|
||||
{
|
||||
if (CHECK_BOUNDS_ID(bounds, guiSliderActive))
|
||||
if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec))
|
||||
{
|
||||
pickerSelector = mousePoint;
|
||||
|
||||
@ -3658,8 +3664,8 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv)
|
||||
}
|
||||
else
|
||||
{
|
||||
guiSliderDragging = false;
|
||||
guiSliderActive = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 };
|
||||
guiControlExclusiveMode = false;
|
||||
guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 };
|
||||
}
|
||||
}
|
||||
else if (CheckCollisionPointRec(mousePoint, bounds))
|
||||
@ -3667,8 +3673,8 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv)
|
||||
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON))
|
||||
{
|
||||
state = STATE_PRESSED;
|
||||
guiSliderDragging = true;
|
||||
guiSliderActive = bounds;
|
||||
guiControlExclusiveMode = true;
|
||||
guiControlExclusiveRec = bounds;
|
||||
pickerSelector = mousePoint;
|
||||
|
||||
// Calculate color from picker
|
||||
@ -3876,7 +3882,7 @@ int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vect
|
||||
|
||||
// Update control
|
||||
//--------------------------------------------------------------------
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiSliderDragging)
|
||||
if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode)
|
||||
{
|
||||
if (CheckCollisionPointRec(mousePoint, bounds))
|
||||
{
|
||||
@ -4947,7 +4953,7 @@ static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor,
|
||||
// Draw tooltip using control bounds
|
||||
static void GuiTooltip(Rectangle controlRec)
|
||||
{
|
||||
if (!guiLocked && guiTooltip && (guiTooltipPtr != NULL) && !guiSliderDragging)
|
||||
if (!guiLocked && guiTooltip && (guiTooltipPtr != NULL) && !guiControlExclusiveMode)
|
||||
{
|
||||
Vector2 textSize = MeasureTextEx(GuiGetFont(), guiTooltipPtr, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), (float)GuiGetStyle(DEFAULT, TEXT_SPACING));
|
||||
|
||||
@ -5215,13 +5221,13 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue)
|
||||
{
|
||||
Vector2 mousePoint = GetMousePosition();
|
||||
|
||||
if (guiSliderDragging) // Keep dragging outside of bounds
|
||||
if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds
|
||||
{
|
||||
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON) &&
|
||||
!CheckCollisionPointRec(mousePoint, arrowUpLeft) &&
|
||||
!CheckCollisionPointRec(mousePoint, arrowDownRight))
|
||||
{
|
||||
if (CHECK_BOUNDS_ID(bounds, guiSliderActive))
|
||||
if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec))
|
||||
{
|
||||
state = STATE_PRESSED;
|
||||
|
||||
@ -5231,8 +5237,8 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue)
|
||||
}
|
||||
else
|
||||
{
|
||||
guiSliderDragging = false;
|
||||
guiSliderActive = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 };
|
||||
guiControlExclusiveMode = false;
|
||||
guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 };
|
||||
}
|
||||
}
|
||||
else if (CheckCollisionPointRec(mousePoint, bounds))
|
||||
@ -5246,8 +5252,8 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue)
|
||||
// Handle mouse button down
|
||||
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
|
||||
{
|
||||
guiSliderDragging = true;
|
||||
guiSliderActive = bounds; // Store bounds as an identifier when dragging starts
|
||||
guiControlExclusiveMode = true;
|
||||
guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts
|
||||
|
||||
// Check arrows click
|
||||
if (CheckCollisionPointRec(mousePoint, arrowUpLeft)) value -= valueRange/GuiGetStyle(SCROLLBAR, SCROLL_SPEED);
|
||||
|
Loading…
x
Reference in New Issue
Block a user