]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/xonotic/colorpicker.qc
Change indentation from spaces to tabs
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / colorpicker.qc
index b88d5d9a7d8f3973e5d828c0da66cac207db309a..583a4cb251b8e8b5b3459e6ca82ccda63eb28608 100644 (file)
@@ -16,25 +16,31 @@ void XonoticColorpicker_configureXonoticColorpicker(entity me, entity theTextbox
        me.configureImage(me, me.image);
 }
 
-float XonoticColorpicker_mousePress(entity me, vector coords)
+METHOD(XonoticColorpicker, mousePress, bool(XonoticColorpicker this, vector pos))
 {
-       me.mouseDrag(me, coords);
-       return 1;
+       this.mouseDrag(this, pos);
+
+       if(this.controlledTextbox.applyButton)
+       {
+               this.controlledTextbox.applyButton.disabled = false;
+       }
+
+       return true;
 }
 
 // must match hslimage.c
 vector hslimage_color(vector v, vector margin)
 {
-    v_x = (v.x - margin.x) / (1 - 2 * margin.x);
-    v_y = (v.y - margin.y) / (1 - 2 * margin.y);
-    if(v.x < 0) v_x = 0;
-    if(v.y < 0) v_y = 0;
-    if(v.x > 1) v_x = 1;
-    if(v.y > 1) v_y = 1;
-    if(v.y > 0.875) // grey bar
-        return hsl_to_rgb(eZ * v.x);
-    else
-        return hsl_to_rgb(v.x * 6 * eX + eY + v.y / 0.875 * eZ);
+       v_x = (v.x - margin.x) / (1 - 2 * margin.x);
+       v_y = (v.y - margin.y) / (1 - 2 * margin.y);
+       if(v.x < 0) v_x = 0;
+       if(v.y < 0) v_y = 0;
+       if(v.x > 1) v_x = 1;
+       if(v.y > 1) v_y = 1;
+       if(v.y > 0.875) // grey bar
+               return hsl_to_rgb(eZ * v.x);
+       else
+               return hsl_to_rgb(v.x * 6 * eX + eY + v.y / 0.875 * eZ);
 }
 
 vector color_hslimage(vector v, vector margin)
@@ -58,57 +64,25 @@ vector color_hslimage(vector v, vector margin)
 
 float XonoticColorpicker_mouseDrag(entity me, vector coords)
 {
-       float i, carets;
+       int i;
        for (;;)
        {
                i = me.controlledTextbox.cursorPos;
-               if(i >= 2)
-               {
-                       if(substring(me.controlledTextbox.text, i-2, 1) == "^")
-                       {
-                               carets = 1;
-                               while (i - 2 - carets >= 0 && substring(me.controlledTextbox.text, i - 2 - carets, 1) == "^")
-                                       ++carets;
-                               if (carets & 1)
-                                       if(strstrofs("0123456789", substring(me.controlledTextbox.text, i-1, 1), 0) >= 0)
-                                       {
-                                               me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                               me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                               continue;
-                                       }
-                       }
-               }
-
-               if(i >= 5)
-               {
-                       if(substring(me.controlledTextbox.text, i-5, 2) == "^x")
-                       {
-                               carets = 1;
-                               while (i - 5 - carets >= 0 && substring(me.controlledTextbox.text, i - 5 - carets, 1) == "^")
-                                       ++carets;
-                               if (carets & 1)
-                                       if(strstrofs("0123456789abcdefABCDEF", substring(me.controlledTextbox.text, i-3, 1), 0) >= 0)
-                                               if(strstrofs("0123456789abcdefABCDEF", substring(me.controlledTextbox.text, i-2, 1), 0) >= 0)
-                                                       if(strstrofs("0123456789abcdefABCDEF", substring(me.controlledTextbox.text, i-1, 1), 0) >= 0)
-                                                       {
-                                                               me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                                               me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                                               me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                                               me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                                               me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                                               continue;
-                                                       }
-                       }
-               }
-               break;
+               string theText = me.controlledTextbox.text;
+               vector res = checkColorCode(theText, strlen(theText), i, true);
+               if (!res.x)
+                       break;
+
+               int cc_len = res.x;
+               int new_pos = i - res.y;
+               theText = strcat(substring(theText, 0, new_pos), substring(theText, new_pos + cc_len, -1));
+               me.controlledTextbox.setText(me.controlledTextbox, theText);
+               me.controlledTextbox.cursorPos = new_pos;
        }
 
        if(substring(me.controlledTextbox.text, i-1, 1) == "^")
        {
-               carets = 1;
-               while (i - 1 - carets >= 0 && substring(me.controlledTextbox.text, i - 1 - carets, 1) == "^")
-                       ++carets;
-               if (carets & 1)
+               if(!isCaretEscaped(me.controlledTextbox.text, i-1))
                        me.controlledTextbox.enterText(me.controlledTextbox, "^"); // escape previous caret
        }