filterIn
Remove all characters that not present in filter_chars. Designed to run after event processing and before drawing.
Parameters
- self:*TextEntryWidget
- *TextEntryWidget
- filter_chars:[]const u8
- []const u8
Source
Implementation
pub fn filterIn(self: *TextEntryWidget, filter_chars: []const u8) void {
if (filter_chars.len == 0) {
return;
}
var i: usize = 0;
var j: usize = 0;
const n = self.len;
while (i < n) {
if (std.mem.findScalar(u8, filter_chars, self.text[i]) == null) {
self.len -= 1;
var sel = self.textLayout.selection;
if (sel.start > i) sel.start -= 1;
if (sel.cursor > i) sel.cursor -= 1;
if (sel.end > i) sel.end -= 1;
self.text_changed = true;
i += 1;
} else {
self.text[j] = self.text[i];
i += 1;
j += 1;
}
}
if (j < self.text.len)
self.text[j] = 0;
}