git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@247 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
NishiOwO
2025-10-10 06:22:14 +00:00
parent 9fc580eeb2
commit 3e2d129b93
3 changed files with 19 additions and 6 deletions

View File

@@ -182,11 +182,10 @@ void MwLLNextEvent(MwLL handle) {
MwLLDispatch(handle, move, &p);
} else if(ev.type == KeyPress) {
int n = -1;
KeySym sym = XLookupKeysym(&ev.xkey, 0);
char* str = XKeysymToString(sym);
if(strcmp(str, "space") == 0) str = " ";
int n = -1;
char str[512];
KeySym sym;
XLookupString(&ev.xkey, str, 512, &sym, NULL);
/* HACK: this is bad, you can guess why */
if(strlen(str) == 1) {

View File

@@ -24,6 +24,7 @@ static void draw(MwWidget handle) {
MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground));
MwLLColor text = MwParseColor(handle, MwGetText(handle, MwNforeground));
const char* str = MwGetText(handle, MwNtext);
if(str == NULL) str = "";
r.x = 0;
r.y = 0;

View File

@@ -18,7 +18,20 @@ static void draw(MwWidget handle) {
}
static void key(MwWidget handle, int code) {
MwEntryClass->key(handle, code);
MwEntry e = handle->internal;
const char* str = MwGetText(handle, MwNtext);
int ok = 0;
if(str == NULL) str = "";
if(code == '-' && e->cursor == 0 && strchr(str, (int)'-') == NULL) {
ok = 1;
} else if('0' <= code && code <= '9') {
ok = 1;
} else if(code == '.' && strchr(str, (int)'.') == NULL) {
ok = 1;
}
if(ok) MwEntryClass->key(handle, code);
}
MwClassRec MwNumberEntryClassRec = {