diff -Naur a/lib/widget/input_complete.c b/lib/widget/input_complete.c
--- a/lib/widget/input_complete.c	2024-08-08 13:49:18.000000000 +0600
+++ b/lib/widget/input_complete.c	2024-08-25 08:44:41.545041816 +0600
@@ -685,6 +685,27 @@
     return strcmp (*(char *const *) a, *(char *const *) b);
 }
 
+/* Replace by g_ptr_array_insert when we depend on glib >= 2.40. */
+static
+void array_insert(GPtrArray *array, gpointer element, size_t pos)
+{
+    size_t original_array_len = array->len;
+
+    /* Allocate an unused element at the end of the array. */
+    g_ptr_array_add(array, NULL);
+
+    /* If we are not inserting at the end, move the elements by one. */
+    if (pos < original_array_len) {
+        memmove(&(array->pdata[pos + 1]),
+                &(array->pdata[pos]),
+                (original_array_len - pos) * sizeof(gpointer));
+    }
+
+    /* Insert the value and bump the array len */
+    array->pdata[pos] = element;
+}
+
+
 /* --------------------------------------------------------------------------------------------- */
 /** Returns an array of char * matches with the longest common denominator
    in the 1st entry. Then a NULL terminated list of different possible
@@ -763,7 +784,7 @@
         }
 
         string = g_ptr_array_index (match_list, 0);
-        g_ptr_array_insert (match_list, 0, g_strndup (string, low));
+        array_insert (match_list, g_strndup (string, low), 0);
     }
 
     return match_list;
