]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/item/inputbox.c
Custom colors for the Clear button
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / item / inputbox.c
index dc532c0ca39246ccbe1a0417f08e669abdae2b71..71f0b60bde8faaa4a0de854159c850f7335614ce 100644 (file)
@@ -31,11 +31,12 @@ CLASS(InputBox) EXTENDS(Label)
 
        ATTRIB(InputBox, enableClearButton, float, 1)
        ATTRIB(InputBox, clearButton, entity, NULL)
-       ATTRIB(InputBox, cb_size, vector, '0 0 0')
+       ATTRIB(InputBox, cb_width, float, 0)
        ATTRIB(InputBox, cb_pressed, float, 0)
        ATTRIB(InputBox, cb_focused, float, 0)
-       // ATTRIB(InputBox, cb_src, string, SKINGFX_CLEARBUTTON)
-       ATTRIB(InputBox, cb_src, string, "clearbutton")
+       ATTRIB(InputBox, cb_color, vector, '1 1 1')
+       ATTRIB(InputBox, cb_colorF, vector, '1 1 1')
+       ATTRIB(InputBox, cb_colorC, vector, '1 1 1')
 ENDCLASS(InputBox)
 void InputBox_Clear_Click(entity btn, entity me);
 #endif
@@ -52,8 +53,9 @@ void InputBox_resizeNotify(entity me, vector relOrigin, vector relSize, vector a
        SUPER(InputBox).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
        if (me.enableClearButton)
        {
-               me.cb_size = eX * (absSize_y / absSize_x) + eY;
-               me.keepspaceRight = me.keepspaceRight + me.cb_size_x;
+               me.cb_width = absSize_y / absSize_x;
+               me.cb_offset = bound(-1, me.cb_offset, 0) * me.cb_width; // bound to range -1, 0
+               me.keepspaceRight = me.keepspaceRight - me.cb_offset + me.cb_width;
        }
 }
 
@@ -71,10 +73,10 @@ void InputBox_Clear_Click(entity btn, entity me)
 
 float over_ClearButton(entity me, vector pos)
 {
-       if (pos_x >= 1 - me.cb_size_x)
-       if (pos_x < 1)
+       if (pos_x >= 1 + me.cb_offset - me.cb_width)
+       if (pos_x < 1 + me.cb_offset)
        if (pos_y >= 0)
-       if (pos_y < me.cb_size_y)
+       if (pos_y < 1)
                return 1;
        return 0;
 }
@@ -359,7 +361,7 @@ void InputBox_draw(entity me)
        }
        else
                draw_Text(me.realOrigin - eX * me.scrollPos, me.text, me.realFontSize, '1 1 1', 1, 0);
-               // skipping SUPER(InputBox).draw(me);
+
        if(!me.focused || (time - me.lastChangeTime) < floor(time - me.lastChangeTime) + 0.5)
                draw_Text(me.realOrigin + eX * (cursorPosInWidths - me.scrollPos), CURSOR, me.realFontSize, '1 1 1', 1, 0);
 
@@ -369,12 +371,15 @@ void InputBox_draw(entity me)
        if (me.text != "")
        {
                if(me.focused && me.cb_pressed)
-                       draw_Picture('1 1 0' - me.cb_size, strcat(me.cb_src, "_c"), me.cb_size, '1 1 1', 1);
+                       draw_Picture(eX * (1 + me.cb_offset - me.cb_width), strcat(me.cb_src, "_c"), eX * me.cb_width + eY, me.cb_colorC, 1);
                else if(me.focused && me.cb_focused)
-                       draw_Picture('1 1 0' - me.cb_size, strcat(me.cb_src, "_f"), me.cb_size, '1 1 1', 1);
+                       draw_Picture(eX * (1 + me.cb_offset - me.cb_width), strcat(me.cb_src, "_f"), eX * me.cb_width + eY, me.cb_colorF, 1);
                else
-                       draw_Picture('1 1 0' - me.cb_size, strcat(me.cb_src, "_n"), me.cb_size, '1 1 1', 1);
+                       draw_Picture(eX * (1 + me.cb_offset - me.cb_width), strcat(me.cb_src, "_n"), eX * me.cb_width + eY, me.cb_color, 1);
        }
+
+       // skipping SUPER(InputBox).draw(me);
+       Item_draw(me);
 }
 
 void InputBox_showNotify(entity me)