Browse Source

Corrected bugs and reviewed some functions

Ray San 10 years ago
parent
commit
333fdf6b90
1 changed files with 93 additions and 58 deletions
  1. 93 58
      src/raygui.c

+ 93 - 58
src/raygui.c

@@ -169,11 +169,14 @@ void GuiLabel(Rectangle bounds, const char *text)
 // Label element extended, configurable colors
 void GuiLabelEx(Rectangle bounds, const char *text, Color textColor, Color border, Color inner)
 {
+    // Update control
+    //--------------------------------------------------------------------
     int textWidth = MeasureText(text, style[GLOBAL_TEXT_FONTSIZE]);
-    int textHeight = GetFontBaseSize(GetDefaultFont());
+    int textHeight = GetDefaultFont().size;
 
     if (bounds.width < textWidth) bounds.width = textWidth + style[LABEL_TEXT_PADDING];
     if (bounds.height < textHeight) bounds.height = textHeight + style[LABEL_TEXT_PADDING]/2;
+    //--------------------------------------------------------------------
     
     // Draw control
     //--------------------------------------------------------------------
@@ -187,22 +190,23 @@ void GuiLabelEx(Rectangle bounds, const char *text, Color textColor, Color borde
 bool GuiButton(Rectangle bounds, const char *text)
 {
     ButtonState buttonState = BUTTON_DEFAULT;
-    
-    Rectangle button = bounds;
     Vector2 mousePoint = GetMousePosition();
     
     int textWidth = MeasureText(text, style[GLOBAL_TEXT_FONTSIZE]);
-    int textHeight = GetFontBaseSize(GetDefaultFont());
+    int textHeight = GetDefaultFont().size;
     
-    if (button.width < textWidth) button.width = textWidth + style[BUTTON_TEXT_PADDING];
-    if (button.height < textHeight) button.height = textHeight + style[BUTTON_TEXT_PADDING]/2;
+    // Update control
+    //--------------------------------------------------------------------
+    if (bounds.width < textWidth) bounds.width = textWidth + style[BUTTON_TEXT_PADDING];
+    if (bounds.height < textHeight) bounds.height = textHeight + style[BUTTON_TEXT_PADDING]/2;
     
-    if (CheckCollisionPointRec(mousePoint, button))
+    if (CheckCollisionPointRec(mousePoint, bounds))
     {
         if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) buttonState = BUTTON_PRESSED;
         else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) buttonState = BUTTON_CLICKED;
         else buttonState = BUTTON_HOVER;
     }
+    //--------------------------------------------------------------------
     
     // Draw control
     //--------------------------------------------------------------------
@@ -210,26 +214,26 @@ bool GuiButton(Rectangle bounds, const char *text)
     {
         case BUTTON_DEFAULT:
         {
-            DrawRectangleRec(button, GetColor(style[BUTTON_DEFAULT_BORDER_COLOR]));
-            DrawRectangle((int)(button.x + style[BUTTON_BORDER_WIDTH]), (int)(button.y + style[BUTTON_BORDER_WIDTH]) , (int)(button.width - (2 * style[BUTTON_BORDER_WIDTH])), (int)(button.height - (2 * style[BUTTON_BORDER_WIDTH])), GetColor(style[BUTTON_DEFAULT_INSIDE_COLOR]));
-            DrawText(text, button.x + ((button.width/2) - (MeasureText(text, style[GLOBAL_TEXT_FONTSIZE])/2)), button.y + ((button.height/2) - (style[GLOBAL_TEXT_FONTSIZE]/2)), style[GLOBAL_TEXT_FONTSIZE], GetColor(style[BUTTON_DEFAULT_TEXT_COLOR]));
+            DrawRectangleRec(bounds, GetColor(style[BUTTON_DEFAULT_BORDER_COLOR]));
+            DrawRectangle((int)(bounds.x + style[BUTTON_BORDER_WIDTH]), (int)(bounds.y + style[BUTTON_BORDER_WIDTH]) , (int)(bounds.width - (2 * style[BUTTON_BORDER_WIDTH])), (int)(bounds.height - (2 * style[BUTTON_BORDER_WIDTH])), GetColor(style[BUTTON_DEFAULT_INSIDE_COLOR]));
+            DrawText(text, bounds.x + ((bounds.width/2) - (MeasureText(text, style[GLOBAL_TEXT_FONTSIZE])/2)), bounds.y + ((bounds.height/2) - (style[GLOBAL_TEXT_FONTSIZE]/2)), style[GLOBAL_TEXT_FONTSIZE], GetColor(style[BUTTON_DEFAULT_TEXT_COLOR]));
         } break;
         case BUTTON_HOVER:
         {
-            DrawRectangleRec(button, GetColor(style[BUTTON_HOVER_BORDER_COLOR]));
-            DrawRectangle((int)(button.x + style[BUTTON_BORDER_WIDTH]), (int)(button.y + style[BUTTON_BORDER_WIDTH]) , (int)(button.width - (2 * style[BUTTON_BORDER_WIDTH])), (int)(button.height - (2 * style[BUTTON_BORDER_WIDTH])), GetColor(style[BUTTON_HOVER_INSIDE_COLOR]));
-            DrawText(text, button.x + ((button.width/2) - (MeasureText(text, style[GLOBAL_TEXT_FONTSIZE])/2)), button.y + ((button.height/2) - (style[GLOBAL_TEXT_FONTSIZE]/2)), style[GLOBAL_TEXT_FONTSIZE], GetColor(style[BUTTON_HOVER_TEXT_COLOR]));
+            DrawRectangleRec(bounds, GetColor(style[BUTTON_HOVER_BORDER_COLOR]));
+            DrawRectangle((int)(bounds.x + style[BUTTON_BORDER_WIDTH]), (int)(bounds.y + style[BUTTON_BORDER_WIDTH]) , (int)(bounds.width - (2 * style[BUTTON_BORDER_WIDTH])), (int)(bounds.height - (2 * style[BUTTON_BORDER_WIDTH])), GetColor(style[BUTTON_HOVER_INSIDE_COLOR]));
+            DrawText(text, bounds.x + ((bounds.width/2) - (MeasureText(text, style[GLOBAL_TEXT_FONTSIZE])/2)), bounds.y + ((bounds.height/2) - (style[GLOBAL_TEXT_FONTSIZE]/2)), style[GLOBAL_TEXT_FONTSIZE], GetColor(style[BUTTON_HOVER_TEXT_COLOR]));
         } break;
         case BUTTON_PRESSED:
         {
-            DrawRectangleRec(button, GetColor(style[BUTTON_PRESSED_BORDER_COLOR]));
-            DrawRectangle((int)(button.x + style[BUTTON_BORDER_WIDTH]), (int)(button.y + style[BUTTON_BORDER_WIDTH]) , (int)(button.width - (2 * style[BUTTON_BORDER_WIDTH])), (int)(button.height - (2 * style[BUTTON_BORDER_WIDTH])), GetColor(style[BUTTON_PRESSED_INSIDE_COLOR]));
-            DrawText(text, button.x + ((button.width/2) - (MeasureText(text, style[GLOBAL_TEXT_FONTSIZE])/2)), button.y + ((button.height/2) - (style[GLOBAL_TEXT_FONTSIZE]/2)), style[GLOBAL_TEXT_FONTSIZE], GetColor(style[BUTTON_PRESSED_TEXT_COLOR]));
+            DrawRectangleRec(bounds, GetColor(style[BUTTON_PRESSED_BORDER_COLOR]));
+            DrawRectangle((int)(bounds.x + style[BUTTON_BORDER_WIDTH]), (int)(bounds.y + style[BUTTON_BORDER_WIDTH]) , (int)(bounds.width - (2 * style[BUTTON_BORDER_WIDTH])), (int)(bounds.height - (2 * style[BUTTON_BORDER_WIDTH])), GetColor(style[BUTTON_PRESSED_INSIDE_COLOR]));
+            DrawText(text, bounds.x + ((bounds.width/2) - (MeasureText(text, style[GLOBAL_TEXT_FONTSIZE])/2)), bounds.y + ((bounds.height/2) - (style[GLOBAL_TEXT_FONTSIZE]/2)), style[GLOBAL_TEXT_FONTSIZE], GetColor(style[BUTTON_PRESSED_TEXT_COLOR]));
         } break;
         case BUTTON_CLICKED:
         {
-            DrawRectangleRec(button, GetColor(style[BUTTON_PRESSED_BORDER_COLOR]));
-            DrawRectangle((int)(button.x + style[BUTTON_BORDER_WIDTH]), (int)(button.y + style[BUTTON_BORDER_WIDTH]) , (int)(button.width - (2 * style[BUTTON_BORDER_WIDTH])), (int)(button.height - (2 * style[BUTTON_BORDER_WIDTH])), GetColor(style[BUTTON_PRESSED_INSIDE_COLOR]));
+            DrawRectangleRec(bounds, GetColor(style[BUTTON_PRESSED_BORDER_COLOR]));
+            DrawRectangle((int)(bounds.x + style[BUTTON_BORDER_WIDTH]), (int)(bounds.y + style[BUTTON_BORDER_WIDTH]) , (int)(bounds.width - (2 * style[BUTTON_BORDER_WIDTH])), (int)(bounds.height - (2 * style[BUTTON_BORDER_WIDTH])), GetColor(style[BUTTON_PRESSED_INSIDE_COLOR]));
         } break;
         default: break;
     }
@@ -247,9 +251,11 @@ bool GuiToggleButton(Rectangle bounds, const char *text, bool toggle)
     Vector2 mousePoint = GetMousePosition();
     
     int textWidth = MeasureText(text, style[GLOBAL_TEXT_FONTSIZE]);
-    int textHeight = GetFontBaseSize(GetDefaultFont());
+    int textHeight = GetDefaultFont().size;
     
-    if (toggleButton.width < textWidth) toggleButton.width = textWidth + style[TOGGLE_TEXT_PADDING];
+    // Update control
+    //--------------------------------------------------------------------   
+   if (toggleButton.width < textWidth) toggleButton.width = textWidth + style[TOGGLE_TEXT_PADDING];
     if (toggleButton.height < textHeight) toggleButton.height = textHeight + style[TOGGLE_TEXT_PADDING]/2;
     if (CheckCollisionPointRec(mousePoint, toggleButton))
     {
@@ -260,6 +266,7 @@ bool GuiToggleButton(Rectangle bounds, const char *text, bool toggle)
      
     if (toggleState == TOGGLE_ACTIVE && !toggle) toggle = true;
     if (toggle) toggleState = TOGGLE_ACTIVE;
+    //--------------------------------------------------------------------   
     
     // Draw control
     //--------------------------------------------------------------------
@@ -316,12 +323,14 @@ int GuiComboBox(Rectangle bounds, int comboNum, char **comboText, int comboActiv
     Rectangle click = { bounds.x + bounds.width + style[COMBOBOX_PADDING], bounds.y, style[COMBOBOX_BUTTON_WIDTH], bounds.height };
     Vector2 mousePoint = GetMousePosition();
 
-    int textHeight = GetFontBaseSize(GetDefaultFont());
-
+    int textHeight = GetDefaultFont().size;
+     
     for (int i = 0; i < comboNum; i++)
     {
         if (i == comboActive)
         {
+		    // Update control
+    		//-------------------------------------------------------------------- 
             int textWidth = MeasureText(comboText[i], style[GLOBAL_TEXT_FONTSIZE]);
                 
             if (comboBoxButton.width < textWidth) comboBoxButton.width = textWidth + style[TOGGLE_TEXT_PADDING];
@@ -333,6 +342,7 @@ int GuiComboBox(Rectangle bounds, int comboNum, char **comboText, int comboActiv
                 else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) comboBoxState = COMBOBOX_ACTIVE;
                 else comboBoxState = COMBOBOX_HOVER;
             }
+    		//--------------------------------------------------------------------   
             
             // Draw control
             //--------------------------------------------------------------------
@@ -402,10 +412,11 @@ int GuiComboBox(Rectangle bounds, int comboNum, char **comboText, int comboActiv
 bool GuiCheckBox(Rectangle checkBoxBounds, const char *text, bool checked)
 {
     CheckBoxState checkBoxState = CHECKBOX_STATUS;
-    Rectangle checkBoxRec = checkBoxBounds;
     Vector2 mousePoint = GetMousePosition();
     
-    if (CheckCollisionPointRec(mousePoint, checkBoxRec))
+    // Update control
+    //-------------------------------------------------------------------- 
+    if (CheckCollisionPointRec(mousePoint, checkBoxBounds))
     {
         if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) checkBoxState = CHECKBOX_PRESSED;
         else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON))
@@ -415,6 +426,7 @@ bool GuiCheckBox(Rectangle checkBoxBounds, const char *text, bool checked)
         } 
         else checkBoxState = CHECKBOX_HOVER;
     }
+    //-------------------------------------------------------------------- 
     
     // Draw control
     //--------------------------------------------------------------------
@@ -422,25 +434,27 @@ bool GuiCheckBox(Rectangle checkBoxBounds, const char *text, bool checked)
     {
         case CHECKBOX_HOVER:
         {
-            DrawRectangleRec(checkBoxRec, GetColor(style[CHECKBOX_HOVER_BORDER_COLOR]));
-            DrawRectangle((int)(checkBoxRec.x + style[TOGGLE_BORDER_WIDTH]), (int)(checkBoxRec.y + style[TOGGLE_BORDER_WIDTH]), (int)(checkBoxRec.width - (2*style[TOGGLE_BORDER_WIDTH])), (int)(checkBoxRec.height - (2*style[TOGGLE_BORDER_WIDTH])), GetColor(style[CHECKBOX_HOVER_INSIDE_COLOR]));
+            DrawRectangleRec(checkBoxBounds, GetColor(style[CHECKBOX_HOVER_BORDER_COLOR]));
+            DrawRectangle((int)(checkBoxBounds.x + style[TOGGLE_BORDER_WIDTH]), (int)(checkBoxBounds.y + style[TOGGLE_BORDER_WIDTH]), (int)(checkBoxBounds.width - (2*style[TOGGLE_BORDER_WIDTH])), (int)(checkBoxBounds.height - (2*style[TOGGLE_BORDER_WIDTH])), GetColor(style[CHECKBOX_HOVER_INSIDE_COLOR]));        
         } break;
         case CHECKBOX_STATUS:
         { 
-            DrawRectangleRec(checkBoxRec, GetColor(style[CHECKBOX_DEFAULT_BORDER_COLOR]));
-            DrawRectangle((int)(checkBoxRec.x + style[TOGGLE_BORDER_WIDTH]), (int)(checkBoxRec.y + style[TOGGLE_BORDER_WIDTH]), (int)(checkBoxRec.width - (2*style[TOGGLE_BORDER_WIDTH])), (int)(checkBoxRec.height - (2*style[TOGGLE_BORDER_WIDTH])), GetColor(style[CHECKBOX_DEFAULT_INSIDE_COLOR]));
+            DrawRectangleRec(checkBoxBounds, GetColor(style[CHECKBOX_DEFAULT_BORDER_COLOR]));
+            DrawRectangle((int)(checkBoxBounds.x + style[TOGGLE_BORDER_WIDTH]), (int)(checkBoxBounds.y + style[TOGGLE_BORDER_WIDTH]), (int)(checkBoxBounds.width - (2*style[TOGGLE_BORDER_WIDTH])), (int)(checkBoxBounds.height - (2*style[TOGGLE_BORDER_WIDTH])), GetColor(style[CHECKBOX_DEFAULT_INSIDE_COLOR]));
         } break; 
         case CHECKBOX_PRESSED:
         {
-            DrawRectangleRec(checkBoxRec, GetColor(style[CHECKBOX_CLICK_BORDER_COLOR]));
-            DrawRectangle((int)(checkBoxRec.x + style[TOGGLE_BORDER_WIDTH]), (int)(checkBoxRec.y + style[TOGGLE_BORDER_WIDTH]), (int)(checkBoxRec.width - (2*style[TOGGLE_BORDER_WIDTH])), (int)(checkBoxRec.height - (2*style[TOGGLE_BORDER_WIDTH])), GetColor(style[CHECKBOX_CLICK_INSIDE_COLOR]));
+            DrawRectangleRec(checkBoxBounds, GetColor(style[CHECKBOX_CLICK_BORDER_COLOR]));
+            DrawRectangle((int)(checkBoxBounds.x + style[TOGGLE_BORDER_WIDTH]), (int)(checkBoxBounds.y + style[TOGGLE_BORDER_WIDTH]), (int)(checkBoxBounds.width - (2*style[TOGGLE_BORDER_WIDTH])), (int)(checkBoxBounds.height - (2*style[TOGGLE_BORDER_WIDTH])), GetColor(style[CHECKBOX_CLICK_INSIDE_COLOR]));
         } break;
-        default: break;
+        default: break;               
     }
     
+    if (text != NULL) DrawText(text, checkBoxBounds.x + checkBoxBounds.width + 2, checkBoxBounds.y + ((checkBoxBounds.height/2) - (style[GLOBAL_TEXT_FONTSIZE]/2) + 1), style[GLOBAL_TEXT_FONTSIZE], GetColor(style[LABEL_TEXT_COLOR]));
+
     if (checked)
     {
-        DrawRectangle((int)(checkBoxRec.x + style[CHECKBOX_INSIDE_WIDTH]), (int)(checkBoxRec.y + style[CHECKBOX_INSIDE_WIDTH]), (int)(checkBoxRec.width - (2*style[CHECKBOX_INSIDE_WIDTH])), (int)(checkBoxRec.height - (2*style[CHECKBOX_INSIDE_WIDTH])), GetColor(style[CHECKBOX_STATUS_ACTIVE_COLOR]));
+        DrawRectangle((int)(checkBoxBounds.x + style[CHECKBOX_INSIDE_WIDTH]), (int)(checkBoxBounds.y + style[CHECKBOX_INSIDE_WIDTH]), (int)(checkBoxBounds.width - (2*style[CHECKBOX_INSIDE_WIDTH])), (int)(checkBoxBounds.height - (2*style[CHECKBOX_INSIDE_WIDTH])), GetColor(style[CHECKBOX_STATUS_ACTIVE_COLOR]));
     }
     //--------------------------------------------------------------------
     
@@ -455,6 +469,8 @@ float GuiSlider(Rectangle bounds, float value, float minValue, float maxValue)
     float sliderPos = 0;
     Vector2 mousePoint = GetMousePosition();
     
+    // Update control
+    //--------------------------------------------------------------------     
     if (value < minValue) value = minValue;
     else if (value >= maxValue) value = maxValue;
     
@@ -489,6 +505,7 @@ float GuiSlider(Rectangle bounds, float value, float minValue, float maxValue)
         }   
     }
     else sliderState = SLIDER_DEFAULT;
+    //-------------------------------------------------------------------- 
     
     // Draw control
     //--------------------------------------------------------------------
@@ -519,6 +536,8 @@ float GuiSliderBar(Rectangle bounds, float value, float minValue, float maxValue
     maxValue = maxValue - minValue;
     fixedMinValue = 0;
     
+    // Update control
+    //-------------------------------------------------------------------- 
     if (fixedValue <= fixedMinValue) fixedValue = fixedMinValue;
     else if (fixedValue >= maxValue) fixedValue = maxValue;
  
@@ -546,6 +565,7 @@ float GuiSliderBar(Rectangle bounds, float value, float minValue, float maxValue
     else sliderState = SLIDER_DEFAULT;
 
     fixedValue = ((float)sliderBar.width*(maxValue - fixedMinValue))/((float)bounds.width - 2*style[SLIDER_BORDER_WIDTH]);
+    //-------------------------------------------------------------------- 
     
     // Draw control
     //--------------------------------------------------------------------
@@ -593,7 +613,7 @@ int GuiSpinner(Rectangle bounds, int value, int minValue, int maxValue)
     Rectangle rightButtonBound = { bounds.x + bounds.width - bounds.width/4 + 1, bounds.y, bounds.width/4, bounds.height };
     Vector2 mousePoint = GetMousePosition();
 
-    int textHeight = GetFontBaseSize(GetDefaultFont());
+    int textHeight = GetDefaultFont().size;
 
     int textWidth = MeasureText(FormatText("%i", value), style[GLOBAL_TEXT_FONTSIZE]);
     
@@ -605,6 +625,8 @@ int GuiSpinner(Rectangle bounds, int value, int minValue, int maxValue)
     //if (comboBoxButton.width < textWidth) comboBoxButton.width = textWidth + style[TOGGLE_TEXT_PADDING];
     //if (comboBoxButton.height < textHeight) comboBoxButton.height = textHeight + style[TOGGLE_TEXT_PADDING]/2;
     
+    // Update control
+    //-------------------------------------------------------------------- 
     if (CheckCollisionPointRec(mousePoint, leftButtonBound) || CheckCollisionPointRec(mousePoint, rightButtonBound) || CheckCollisionPointRec(mousePoint, labelBoxBound))
     {
         if (IsKeyDown(KEY_LEFT))
@@ -674,6 +696,7 @@ int GuiSpinner(Rectangle bounds, int value, int minValue, int maxValue)
         valueSpeed = false;
         framesCounter = 0;
     }
+    //-------------------------------------------------------------------- 
     
     // Draw control
     //--------------------------------------------------------------------
@@ -760,60 +783,72 @@ int GuiSpinner(Rectangle bounds, int value, int minValue, int maxValue)
 }
 
 // Text Box element, returns input text
-// NOTE: Requires static variables: framesCounter, maxChars - ERROR!
+// NOTE: Requires static variables: framesCounter - ERROR!
 char *GuiTextBox(Rectangle bounds, char *text)
 {
-    static int maxChars = 20;
+    #define MAX_CHARS_LENGTH  	20
+    #define KEY_BACKSPACE_TEXT   3
+    
     int initPos = bounds.x + 4;
     char letter = -1;
     static int framesCounter = 0;
+    Vector2 mousePoint = GetMousePosition();
     
+    // Update control
+    //-------------------------------------------------------------------- 
     framesCounter++;
     
     letter = GetKeyPressed();
-    
-    if (letter != -1)
-    {
-        if (letter == 3)
+  
+    if (CheckCollisionPointRec(mousePoint, bounds)) 
+    {        
+        if (letter != -1)
         {
-            for (int i = 0; i < maxChars; i++)
+            if (letter == KEY_BACKSPACE_TEXT)
             {
-                if ((text[i] == '\0') && (i > 0))
+                for (int i = 0; i < MAX_CHARS_LENGTH; i++)
                 {
-                    text[i - 1] = '\0';
-                    break;
+                    if ((text[i] == '\0') && (i > 0))
+                    {
+                        text[i - 1] = '\0';
+                        break;
+                    }
                 }
+                
+                text[MAX_CHARS_LENGTH - 1] = '\0';
             }
-            
-            text[19] = '\0';
-        }
-        else
-        {
-            for (int i = 0; i < maxChars; i++)
+            else
             {
-                if (text[i] == '\0')
+                for (int i = 0; i < MAX_CHARS_LENGTH; i++)
                 {
-                    text[i] = letter;
-                    break;
+                    if (text[i] == '\0')
+                    {
+                        text[i] = letter;
+                        break;
+                    }
                 }
             }
         }
     }
+    //-------------------------------------------------------------------- 
 
     // Draw control
     //--------------------------------------------------------------------
-    DrawRectangleRec(bounds, GetColor(style[TEXTBOX_BORDER_COLOR]));
+    if (CheckCollisionPointRec(mousePoint, bounds)) DrawRectangleRec(bounds, GetColor(style[TOGGLE_ACTIVE_BORDER_COLOR]));
+    else DrawRectangleRec(bounds, GetColor(style[TEXTBOX_BORDER_COLOR]));
+    
     DrawRectangle(bounds.x + style[TEXTBOX_BORDER_WIDTH], bounds.y + style[TEXTBOX_BORDER_WIDTH], bounds.width - (style[TEXTBOX_BORDER_WIDTH] * 2), bounds.height - (style[TEXTBOX_BORDER_WIDTH] * 2), GetColor(style[TEXTBOX_INSIDE_COLOR]));
-
-    for (int i = 0; i < maxChars; i++)
+    
+    for (int i = 0; i < MAX_CHARS_LENGTH; i++)
     {
         if (text[i] == '\0') break;
         
-        DrawText(FormatText("%c", text[i]), initPos, bounds.y + 10, style[TEXTBOX_TEXT_FONTSIZE], GetColor(style[TEXTBOX_TEXT_COLOR]));
-        initPos += ((GetDefaultFont().charSet[(int)text[i] - 32].w + 2));
+        DrawText(FormatText("%c", text[i]), initPos, bounds.y + 5, style[TEXTBOX_TEXT_FONTSIZE], GetColor(style[TEXTBOX_TEXT_COLOR]));
+        
+        initPos += ((GetDefaultFont().charRecs[(int)text[i] - 32].width + 2));
     }
 
-    if ((framesCounter/20)%2) DrawLine(initPos + 2, bounds.y + 10, initPos + 2, bounds.y + 10 + 10, GetColor(style[TEXTBOX_LINE_COLOR]));
+    if ((framesCounter/20)%2 && CheckCollisionPointRec(mousePoint, bounds)) DrawLine(initPos + 2, bounds.y, initPos + 2, bounds.y + 10 + 10, GetColor(style[TEXTBOX_LINE_COLOR]));
     //--------------------------------------------------------------------    
 
     return text;