ui/motif/text.c

changeset 927
b8c0f718b141
parent 925
df27741d02b5
child 966
e411ed7c5f10
--- a/ui/motif/text.c	Sun Nov 23 08:44:41 2025 +0100
+++ b/ui/motif/text.c	Sun Nov 23 09:28:22 2025 +0100
@@ -34,6 +34,8 @@
 #include "container.h"
 #include "pathbar.h"
 
+#include "../common/utils.h"
+
 #include <cx/string.h>
 
 
@@ -518,47 +520,6 @@
     XtFree((void*)pathbar);
 }
 
-// TODO: move to common
-static UiPathElm* default_pathelm_func(const char* full_path, size_t len, size_t* ret_nelm, void* data) {
-    cxstring *pathelms;
-    size_t nelm = cx_strsplit_a(cxDefaultAllocator, cx_strn(full_path, len), CX_STR("/"), 4096, &pathelms);
-
-    if (nelm == 0) {
-        *ret_nelm = 0;
-        return NULL;
-    }
-
-    UiPathElm* elms = (UiPathElm*)calloc(nelm, sizeof(UiPathElm));
-    size_t n = nelm;
-    int j = 0;
-    for (int i = 0; i < nelm; i++) {
-        cxstring c = pathelms[i];
-        if (c.length == 0) {
-            if (i == 0) {
-                c.length = 1;
-            }
-            else {
-                n--;
-                continue;
-            }
-        }
-
-        cxmutstr m = cx_strdup(c);
-        elms[j].name = m.ptr;
-        elms[j].name_len = m.length;
-        
-        size_t elm_path_len = c.ptr + c.length - full_path;
-        cxmutstr elm_path = cx_strdup(cx_strn(full_path, elm_path_len));
-        elms[j].path = elm_path.ptr;
-        elms[j].path_len = elm_path.length;
-
-        j++;
-    }
-    *ret_nelm = n;
-
-    return elms;
-}
-
 static void pathbar_activate(void *data, char *path, int index) {
     UiEventData *event = data;
     UiEvent evt;
@@ -584,7 +545,7 @@
 
     PathBar *pathbar = CreatePathBar(parent, xargs, n);
     if(!args->getpathelm) {
-        pathbar->getpathelm= default_pathelm_func;
+        pathbar->getpathelm= ui_default_pathelm_func;
     } else {
         pathbar->getpathelm = args->getpathelm;
         pathbar->getpathelmdata = args->getpathelmdata;

mercurial