mirror of
https://github.com/CamHenlin/MessagesForMacintosh.git
synced 2025-02-16 08:31:04 +00:00
fix problems with non-char keyboard input causing more than one input -- pretty much complete and now back to needing a physical mac to test with
This commit is contained in:
parent
111e717b15
commit
040d613e24
38
nuklear.h
38
nuklear.h
@ -7818,6 +7818,9 @@ nk_input_glyph(struct nk_context *ctx, const nk_glyph glyph)
|
||||
NK_INPUT_MAX - in->keyboard.text_len);
|
||||
in->keyboard.text_len += len;
|
||||
}
|
||||
|
||||
// in->keyboard.keys[key].clicked++;
|
||||
// in->keyboard.keys[key].down = down;
|
||||
}
|
||||
NK_API void
|
||||
nk_input_char(struct nk_context *ctx, char c)
|
||||
@ -15643,6 +15646,7 @@ nk_textedit_clamp(struct nk_text_edit *state)
|
||||
NK_API void
|
||||
nk_textedit_delete(struct nk_text_edit *state, short where, short len)
|
||||
{
|
||||
|
||||
/* delete characters while updating undo */
|
||||
nk_textedit_makeundo_delete(state, where, len);
|
||||
nk_str_delete_runes(&state->string, where, len);
|
||||
@ -16046,8 +16050,9 @@ retry:
|
||||
nk_textedit_delete_selection(state);
|
||||
else {
|
||||
short n = state->string.len;
|
||||
if (state->cursor < n)
|
||||
if (state->cursor < n) {
|
||||
nk_textedit_delete(state, state->cursor, 1);
|
||||
}
|
||||
}
|
||||
state->has_preferred_x = 0;
|
||||
break;
|
||||
@ -16706,18 +16711,29 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out,
|
||||
cursor_follow = nk_true;
|
||||
}
|
||||
|
||||
{short i; /* keyboard input */
|
||||
short old_mode = edit->mode;
|
||||
for (i = 0; i < NK_KEY_MAX; ++i) {
|
||||
if (i == NK_KEY_ENTER || i == NK_KEY_TAB) continue; /* special case */
|
||||
if (nk_input_is_key_pressed(in, (enum nk_keys)i)) {
|
||||
nk_textedit_key(edit, (enum nk_keys)i, shift_mod, font, row_height);
|
||||
cursor_follow = nk_true;
|
||||
{ /* keyboard input */
|
||||
short i;
|
||||
short old_mode = edit->mode;
|
||||
for (i = 0; i < NK_KEY_MAX; ++i) {
|
||||
|
||||
if (i == NK_KEY_ENTER || i == NK_KEY_TAB) {
|
||||
|
||||
continue; /* special case */
|
||||
}
|
||||
|
||||
if (nk_input_is_key_pressed(in, (enum nk_keys)i)) {
|
||||
|
||||
nk_textedit_key(edit, (enum nk_keys)i, shift_mod, font, row_height);
|
||||
cursor_follow = nk_true;
|
||||
in->keyboard.keys[(enum nk_keys)i].down = nk_false;
|
||||
in->keyboard.keys[(enum nk_keys)i].clicked--;
|
||||
}
|
||||
}
|
||||
|
||||
if (old_mode != edit->mode) {
|
||||
in->keyboard.text_len = 0;
|
||||
}
|
||||
}
|
||||
if (old_mode != edit->mode) {
|
||||
in->keyboard.text_len = 0;
|
||||
}}
|
||||
|
||||
/* text input */
|
||||
edit->filter = filter;
|
||||
|
@ -1,7 +1,5 @@
|
||||
// TODO:
|
||||
// - test, bug fixes, write blog posts
|
||||
// - bug: messages start over-writing eachother in main chat -- need a way to force clear it
|
||||
// - bug: delete key deletes infinitely
|
||||
// - test on physical, bug fixes, write blog posts
|
||||
|
||||
#define WINDOW_WIDTH 510
|
||||
#define WINDOW_HEIGHT 302
|
||||
|
@ -1184,7 +1184,7 @@ NK_API int nk_quickdraw_handle_event(EventRecord *event, struct nk_context *nukl
|
||||
FindWindow(event->where, &window);
|
||||
// char logb[255];
|
||||
// sprintf(logb, "nk_quickdraw_handle_event event %d", event->what);
|
||||
// // writeSerialPortDebug(boutRefNum, logb);
|
||||
// writeSerialPortDebug(boutRefNum, logb);
|
||||
|
||||
switch (event->what) {
|
||||
case updateEvt: {
|
||||
@ -1323,9 +1323,8 @@ NK_API int nk_quickdraw_handle_event(EventRecord *event, struct nk_context *nukl
|
||||
|
||||
nk_input_key(nuklear_context, NK_KEY_SHIFT, isKeyDown);
|
||||
} else if (key == deleteKey && isKeyDown) {
|
||||
|
||||
nk_input_key(nuklear_context, NK_KEY_DEL, 1);
|
||||
nk_input_key(nuklear_context, NK_KEY_DEL, 0);
|
||||
|
||||
nk_input_key(nuklear_context, NK_KEY_DEL, isKeyDown);
|
||||
} else if (key == enterKey) {
|
||||
|
||||
nk_input_key(nuklear_context, NK_KEY_ENTER, isKeyDown);
|
||||
|
Loading…
x
Reference in New Issue
Block a user