]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/xonotic/inputbox.c
Merge branch 'master' into terencehill/itemstime
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / inputbox.c
index c585e0548672fe9d9f9d33476cd19d42183e7b50..dbbcc7b0c495af9609cae5dfac612b2ef4da9f74 100644 (file)
@@ -5,9 +5,9 @@ CLASS(XonoticInputBox) EXTENDS(InputBox)
        METHOD(XonoticInputBox, setText, void(entity, string))
        ATTRIB(XonoticInputBox, fontSize, float, SKINFONTSIZE_NORMAL)
        ATTRIB(XonoticInputBox, image, string, SKINGFX_INPUTBOX)
-       ATTRIB(XonoticInputBox, onChange, void(entity, entity), SUB_Null)
+       ATTRIB(XonoticInputBox, onChange, void(entity, entity), func_null)
        ATTRIB(XonoticInputBox, onChangeEntity, entity, NULL)
-       ATTRIB(XonoticInputBox, onEnter, void(entity, entity), SUB_Null)
+       ATTRIB(XonoticInputBox, onEnter, void(entity, entity), func_null)
        ATTRIB(XonoticInputBox, onEnterEntity, entity, NULL)
        ATTRIB(XonoticInputBox, marginLeft, float, SKINMARGIN_INPUTBOX_CHARS)
        ATTRIB(XonoticInputBox, marginRight, float, SKINMARGIN_INPUTBOX_CHARS)
@@ -20,6 +20,8 @@ CLASS(XonoticInputBox) EXTENDS(InputBox)
        METHOD(XonoticInputBox, loadCvars, void(entity))
        METHOD(XonoticInputBox, saveCvars, void(entity))
        METHOD(XonoticInputBox, keyDown, float(entity, float, float, float))
+
+       ATTRIB(XonoticInputBox, saveImmediately, float, 0)
 ENDCLASS(XonoticInputBox)
 entity makeXonoticInputBox(float, string);
 #endif
@@ -32,7 +34,7 @@ entity makeXonoticInputBox(float doEditColorCodes, string theCvar)
        me.configureXonoticInputBox(me, doEditColorCodes, theCvar);
        return me;
 }
-void configureXonoticInputBoxXonoticInputBox(entity me, float doEditColorCodes, string theCvar)
+void XonoticInputBox_configureXonoticInputBox(entity me, float doEditColorCodes, string theCvar)
 {
        me.configureInputBox(me, "", 0, me.fontSize, me.image);
        me.editColorCodes = doEditColorCodes;
@@ -44,44 +46,48 @@ void configureXonoticInputBoxXonoticInputBox(entity me, float doEditColorCodes,
        }
        me.cursorPos = strlen(me.text);
 }
-void focusLeaveXonoticInputBox(entity me)
+void XonoticInputBox_focusLeave(entity me)
 {
        me.saveCvars(me);
 }
-void setTextXonoticInputBox(entity me, string new)
+void XonoticInputBox_setText(entity me, string new)
 {
        if(me.text != new)
        {
                SUPER(XonoticInputBox).setText(me, new);
-               me.onChange(me, me.onChangeEntity);
+               if(me.onChange)
+                       me.onChange(me, me.onChangeEntity);
+               if(me.saveImmediately)
+                       me.saveCvars(me);
        }
        else
                SUPER(XonoticInputBox).setText(me, new);
 }
-void loadCvarsXonoticInputBox(entity me)
+void XonoticInputBox_loadCvars(entity me)
 {
        if not(me.cvarName)
                return;
        SUPER(XonoticInputBox).setText(me, cvar_string(me.cvarName));
 }
-void saveCvarsXonoticInputBox(entity me)
+void XonoticInputBox_saveCvars(entity me)
 {
        if not(me.cvarName)
                return;
        cvar_set(me.cvarName, me.text);
 }
-float keyDownXonoticInputBox(entity me, float key, float ascii, float shift)
+float XonoticInputBox_keyDown(entity me, float key, float ascii, float shift)
 {
        float r;
        r = 0;
-       if(key == K_ENTER)
+       if(key == K_ENTER || key == K_KP_ENTER)
        {
                if(me.cvarName)
                {
                        me.saveCvars(me);
                        r = 1;
                }
-               me.onEnter(me, me.onEnterEntity);
+               if(me.onEnter)
+                       me.onEnter(me, me.onEnterEntity);
        }
        if(SUPER(XonoticInputBox).keyDown(me, key, ascii, shift))
                r = 1;