extend textfield API (Motif) default tip

Sun, 11 Jan 2026 15:10:20 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sun, 11 Jan 2026 15:10:20 +0100
changeset 1045
e855396fd839
parent 1044
c6b58646c249

extend textfield API (Motif)

ui/gtk/text.c file | annotate | diff | comparison | revisions
ui/motif/text.c file | annotate | diff | comparison | revisions
ui/motif/toolkit.c file | annotate | diff | comparison | revisions
ui/ui/text.h file | annotate | diff | comparison | revisions
--- a/ui/gtk/text.c	Sun Jan 11 14:59:15 2026 +0100
+++ b/ui/gtk/text.c	Sun Jan 11 15:10:20 2026 +0100
@@ -699,8 +699,8 @@
 #endif
 }
 
-void ui_textfield_set_selection(UIWIDGET textfield, int begin, int length) {
-    ENTRY_SET_SELECTION(textfield, begin, begin+length);
+void ui_textfield_set_selection(UIWIDGET textfield, int begin, int end) {
+    ENTRY_SET_SELECTION(textfield, begin, end);
 }
 
 void ui_textfield_select_all(UIWIDGET textfield) {
--- a/ui/motif/text.c	Sun Jan 11 14:59:15 2026 +0100
+++ b/ui/motif/text.c	Sun Jan 11 15:10:20 2026 +0100
@@ -492,6 +492,39 @@
     return create_textfield(obj, args, FALSE, FALSE);
 }
 
+void ui_textfield_focus(UIWIDGET textfield) {
+    ui_textfield_focus_without_selecting(textfield);
+    ui_textfield_select_all(textfield);
+}
+
+void ui_textfield_focus_without_selecting(UIWIDGET textfield) {
+    XmProcessTraversal(textfield, XmTRAVERSE_CURRENT);
+}
+
+void ui_textfield_set_selection(UIWIDGET textfield, int begin, int end) {
+    XmTextSetSelection(textfield, begin, end, 0);
+}
+
+void ui_textfield_select_all(UIWIDGET textfield) {
+    XmTextSetSelection(textfield, 0, XmTextGetLastPosition(textfield), 0);
+}
+
+void ui_textfield_set_editable(UIWIDGET textfield, UiBool editable) {
+    XmTextFieldSetEditable(textfield, editable);
+}
+
+UiBool ui_textfield_is_editable(UIWIDGET textfield) {
+    return XmTextFieldGetEditable(textfield);
+}
+
+void ui_textfield_set_position(UIWIDGET textfield, int pos) {
+    XmTextFieldSetInsertionPosition(textfield, pos);
+}
+
+int ui_textfield_get_position(UIWIDGET textfield) {
+    return (int)XmTextFieldGetInsertionPosition(textfield);
+}
+
 char* ui_textfield_get(UiString *str) {
     if(str->value.free) {
         str->value.free(str->value.ptr);
--- a/ui/motif/toolkit.c	Sun Jan 11 14:59:15 2026 +0100
+++ b/ui/motif/toolkit.c	Sun Jan 11 15:10:20 2026 +0100
@@ -39,6 +39,7 @@
 #include "../common/document.h"
 #include "../common/properties.h"
 #include "../common/app.h"
+#include "../common/threadpool.h"
 #include <cx/buffer.h>
 
 #include <X11/Intrinsic.h>
--- a/ui/ui/text.h	Sun Jan 11 14:59:15 2026 +0100
+++ b/ui/ui/text.h	Sun Jan 11 15:10:20 2026 +0100
@@ -158,7 +158,7 @@
 
 UIEXPORT void ui_textfield_focus(UIWIDGET textfield);
 UIEXPORT void ui_textfield_focus_without_selecting(UIWIDGET textfield);
-UIEXPORT void ui_textfield_set_selection(UIWIDGET textfield, int begin, int length);
+UIEXPORT void ui_textfield_set_selection(UIWIDGET textfield, int begin, int end);
 UIEXPORT void ui_textfield_select_all(UIWIDGET textfield);
 UIEXPORT void ui_textfield_set_editable(UIWIDGET textfield, UiBool editable);
 UIEXPORT UiBool ui_textfield_is_editable(UIWIDGET textfield);

mercurial