void CEdit::ReplaceSel(LPCSTR lpszNewText) { // Inserts the given text to replace the current selection // or at the insert cursor position if there is no selection. Boolean has_selection = False; XmTextPosition left = (XmTextPosition) 0 ; XmTextPosition right = (XmTextPosition) 0 ; if (_xd_textwidget!=NULL) { if (XmIsText(_xd_textwidget)) { has_selection = XmTextGetSelectionPosition(_xd_textwidget, &left, &right); if (!has_selection) left = right = XmTextGetInsertionPosition(_xd_textwidget); XmTextReplace(_xd_textwidget, left, right, (char *)lpszNewText); } else if (XmIsTextField(_xd_textwidget)) { has_selection = XmTextFieldGetSelectionPosition(_xd_textwidget, &left, &right); if (!has_selection) left = right = XmTextFieldGetInsertionPosition(_xd_textwidget); XmTextFieldReplace(_xd_textwidget, left, right, (char *)lpszNewText); } } }
void insert_source_argAct(Widget w, XEvent*, String*, Cardinal*) { clear_isearch(); string arg = source_arg->get_string(); if (XmIsText(w)) { if (XmTextGetEditable(w)) { XmTextPosition pos = XmTextGetInsertionPosition(w); XmTextReplace(w, pos, pos, XMST(arg.chars())); } } else if (XmIsTextField(w)) { if (XmTextFieldGetEditable(w)) { XmTextPosition pos = XmTextFieldGetInsertionPosition(w); XmTextFieldReplace(w, pos, pos, XMST(arg.chars())); } } }
static int motListSetSelectedTextAttrib(Ihandle* ih, const char* value) { XmTextPosition start, end; Widget cbedit; if (!ih->data->has_editbox) return 0; if (!value) return 0; XtVaGetValues(ih->handle, XmNtextField, &cbedit, NULL); if (XmTextFieldGetSelectionPosition(cbedit, &start, &end) && start!=end) { iupAttribSet(ih, "_IUPMOT_DISABLE_TEXT_CB", "1"); /* disable callbacks */ XmTextFieldReplace(cbedit, start, end, (char*)value); iupAttribSet(ih, "_IUPMOT_DISABLE_TEXT_CB", NULL); } return 0; }