X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fcolorpicker.qc;h=46e698c2e2a1d6a9497ab6c25ffc350b776948ad;hb=060a811f3d8b7aaf8c15b5e450c9975e41a29922;hp=357276e16adf3794334eb7d640089b78350504ca;hpb=8c965aa90470cfa8cbfaff88db71b6b5899a90ce;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/xonotic/colorpicker.qc b/qcsrc/menu/xonotic/colorpicker.qc index 357276e16..46e698c2e 100644 --- a/qcsrc/menu/xonotic/colorpicker.qc +++ b/qcsrc/menu/xonotic/colorpicker.qc @@ -16,10 +16,10 @@ 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); + return true; } // must match hslimage.c @@ -58,57 +58,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(IS_DIGIT(substring(me.controlledTextbox.text, i-1, 1))) - { - 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(IS_HEXDIGIT(substring(me.controlledTextbox.text, i - 3, 1))) - if(IS_HEXDIGIT(substring(me.controlledTextbox.text, i - 2, 1))) - if(IS_HEXDIGIT(substring(me.controlledTextbox.text, i - 1, 1))) - { - 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 }