]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Menu text boxes: fix a couple issues after screen resolution change:
authorterencehill <piuntn@gmail.com>
Fri, 18 Oct 2024 16:03:31 +0000 (18:03 +0200)
committerterencehill <piuntn@gmail.com>
Fri, 18 Oct 2024 16:03:31 +0000 (18:03 +0200)
1. Text wasn't rewrapped correctly for all text boxes
2. campaign and welcome text boxes displayed line feeds as unprintable characters

Also remove TOS dialogs' .text attribute since it's redundant now

qcsrc/menu/xonotic/dialog_multiplayer_join_termsofservice.qc
qcsrc/menu/xonotic/dialog_multiplayer_join_termsofservice.qh
qcsrc/menu/xonotic/dialog_termsofservice.qc
qcsrc/menu/xonotic/dialog_termsofservice.qh
qcsrc/menu/xonotic/textbox.qc

index a967dcc26f19e50fb0a5c44687b90deb3a0dfcd3..b39407e7d267a4a3352250d6dc2889ed49056b5c 100644 (file)
@@ -34,13 +34,11 @@ void AdditionalServerInfo_OnGet(entity fh, entity me, int status)
                }
                case URL_READY_ERROR:
                {
-                       me.text = strzone("Error reading ToS");
-                       me.textBox.setText(me.textBox, me.text);
+                       me.textBox.setText(me.textBox, "Error reading ToS");
                        break;
                }
                case URL_READY_CANREAD:
                {
-                       strfree(me.text);
                        string temp = "";
                        for (string s; (s = url_fgets(fh)); )
                        {
@@ -50,8 +48,7 @@ void AdditionalServerInfo_OnGet(entity fh, entity me, int status)
                                        temp = s;
                        }
                        url_fclose(fh);
-                       me.text = strzone(temp);
-                       me.textBox.setText(me.textBox, me.text);
+                       me.textBox.setText(me.textBox, temp);
                        break;
                }
                default:
index ebc2d867e0d1740201354b716b8ea8daf9069620..cbe069e1f3d56d85f59f8a8db6df672370d31531 100644 (file)
@@ -10,7 +10,6 @@ CLASS(XonoticServerToSTab, XonoticTab)
        ATTRIB(XonoticServerToSTab, rows, float, 17);
        ATTRIB(XonoticServerToSTab, columns, float, 6.2);
 
-       ATTRIB(XonoticServerToSTab, text, string);
        ATTRIB(XonoticServerToSTab, textBox, entity);
 ENDCLASS(XonoticServerToSTab)
 entity makeXonoticServerToSTab();
index 83839a3f67c1364b7baa8fc2fe15ce34b913cad1..f71f0a6347460dcf812375ec45460886ed9e5aea 100644 (file)
@@ -37,13 +37,11 @@ void XonoticToS_OnGet(entity fh, entity me, int status)
                }
                case URL_READY_ERROR:
                {
-                       me.text = strzone("Error reading ToS");
-                       me.textBox.setText(me.textBox, me.text);
+                       me.textBox.setText(me.textBox, "Error reading ToS");
                        break;
                }
                case URL_READY_CANREAD:
                {
-                       strfree(me.text);
                        string temp = "";
                        for (string s; (s = url_fgets(fh)); )
                        {
@@ -53,8 +51,7 @@ void XonoticToS_OnGet(entity fh, entity me, int status)
                                        temp = s;
                        }
                        url_fclose(fh);
-                       me.text = strzone(temp);
-                       me.textBox.setText(me.textBox, me.text);
+                       me.textBox.setText(me.textBox, temp);
                        break;
                }
                default:
index 037450f0a2e1f6c88466ea89aac3eeef7fd0285f..8f6879d66a1e3571b4dc5b056221d5656fe2513a 100644 (file)
@@ -15,7 +15,6 @@ CLASS(XonoticToSDialog, XonoticRootDialog)
        ATTRIB(XonoticToSDialog, columns, float, 6.2);
        ATTRIB(XonoticToSDialog, name, string, "TermsOfService");
 
-       ATTRIB(XonoticToSDialog, text, string);
        ATTRIB(XonoticToSDialog, textBox, entity);
 
        ATTRIB(XonoticToSDialog, closable, float, 0);
index e79af1e335891810a5834a3b8fecbd4d0620fc05..f3e5da9d460fa25e0e6b4c2cb7b04091abe62dd1 100644 (file)
@@ -16,9 +16,10 @@ void XonoticTextBox_destroy(entity me)
                buf_del(me.stringList);
                me.stringList = -1;
        }
+       strfree(me.text);
 }
 
-void XonoticTextBox_setText(entity me, string text)
+void XonoticTextBox_setText(entity me, string txt)
 {
        if (me.stringList >= 0)
        {
@@ -26,6 +27,8 @@ void XonoticTextBox_setText(entity me, string text)
                me.stringList = -1;
        }
 
+       strcpy(me.text, txt);
+
        int buf;
        int line = 0;
 
@@ -33,7 +36,7 @@ void XonoticTextBox_setText(entity me, string text)
 
        buf = buf_create();
        string separator = (me.escapedNewLines) ? "\\n" : "\n";
-       for (int i = 0, n = tokenizebyseparator(text, separator); i < n; ++i)
+       for (int i = 0, n = tokenizebyseparator(txt, separator); i < n; ++i)
        {
                t = substring(argv(i), 0, -1);
                getWrappedLine_remaining = t;
@@ -58,8 +61,6 @@ string XonoticTextBox_getTextBoxLine(entity me, int i)
        return string_null;
 }
 
-// mostly copied from playerlist
-// FIXME: is this really needed
 void XonoticTextBox_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
 {
        me.itemAbsSize = '0 0 0';
@@ -69,19 +70,7 @@ void XonoticTextBox_resizeNotify(entity me, vector relOrigin, vector relSize, ve
        me.itemAbsSize.x = absSize.x * (1 - me.controlWidth);
        me.realFontSize.y = me.fontSize / me.itemAbsSize.y;
        me.realFontSize.x = me.fontSize / me.itemAbsSize.x;
-       string temp = string_null;
-       for (int i = 0; i < me.nItems; ++i)
-       {
-               if (!temp)
-               {
-                       temp = me.getTextBoxLine(me, i);
-               }
-               else
-               {
-                       temp = strcat(temp, "\n", me.getTextBoxLine(me, i));
-               }
-       }
-       me.setText(me, temp);
+       me.setText(me, strcat(me.text)); // rewrap
 }
 
 void XonoticTextBox_drawListBoxItem(entity me, int i, vector absSize, bool isSelected, bool isFocused)