mirror of
https://github.com/CamHenlin/MessagesForMacintosh.git
synced 2025-02-19 11:31:10 +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);
|
NK_INPUT_MAX - in->keyboard.text_len);
|
||||||
in->keyboard.text_len += len;
|
in->keyboard.text_len += len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// in->keyboard.keys[key].clicked++;
|
||||||
|
// in->keyboard.keys[key].down = down;
|
||||||
}
|
}
|
||||||
NK_API void
|
NK_API void
|
||||||
nk_input_char(struct nk_context *ctx, char c)
|
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_API void
|
||||||
nk_textedit_delete(struct nk_text_edit *state, short where, short len)
|
nk_textedit_delete(struct nk_text_edit *state, short where, short len)
|
||||||
{
|
{
|
||||||
|
|
||||||
/* delete characters while updating undo */
|
/* delete characters while updating undo */
|
||||||
nk_textedit_makeundo_delete(state, where, len);
|
nk_textedit_makeundo_delete(state, where, len);
|
||||||
nk_str_delete_runes(&state->string, where, len);
|
nk_str_delete_runes(&state->string, where, len);
|
||||||
@ -16046,8 +16050,9 @@ retry:
|
|||||||
nk_textedit_delete_selection(state);
|
nk_textedit_delete_selection(state);
|
||||||
else {
|
else {
|
||||||
short n = state->string.len;
|
short n = state->string.len;
|
||||||
if (state->cursor < n)
|
if (state->cursor < n) {
|
||||||
nk_textedit_delete(state, state->cursor, 1);
|
nk_textedit_delete(state, state->cursor, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
state->has_preferred_x = 0;
|
state->has_preferred_x = 0;
|
||||||
break;
|
break;
|
||||||
@ -16706,18 +16711,29 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out,
|
|||||||
cursor_follow = nk_true;
|
cursor_follow = nk_true;
|
||||||
}
|
}
|
||||||
|
|
||||||
{short i; /* keyboard input */
|
{ /* keyboard input */
|
||||||
short old_mode = edit->mode;
|
short i;
|
||||||
for (i = 0; i < NK_KEY_MAX; ++i) {
|
short old_mode = edit->mode;
|
||||||
if (i == NK_KEY_ENTER || i == NK_KEY_TAB) continue; /* special case */
|
for (i = 0; i < NK_KEY_MAX; ++i) {
|
||||||
if (nk_input_is_key_pressed(in, (enum nk_keys)i)) {
|
|
||||||
nk_textedit_key(edit, (enum nk_keys)i, shift_mod, font, row_height);
|
if (i == NK_KEY_ENTER || i == NK_KEY_TAB) {
|
||||||
cursor_follow = nk_true;
|
|
||||||
|
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 */
|
/* text input */
|
||||||
edit->filter = filter;
|
edit->filter = filter;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
// TODO:
|
// TODO:
|
||||||
// - test, bug fixes, write blog posts
|
// - test on physical, 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
|
|
||||||
|
|
||||||
#define WINDOW_WIDTH 510
|
#define WINDOW_WIDTH 510
|
||||||
#define WINDOW_HEIGHT 302
|
#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);
|
FindWindow(event->where, &window);
|
||||||
// char logb[255];
|
// char logb[255];
|
||||||
// sprintf(logb, "nk_quickdraw_handle_event event %d", event->what);
|
// sprintf(logb, "nk_quickdraw_handle_event event %d", event->what);
|
||||||
// // writeSerialPortDebug(boutRefNum, logb);
|
// writeSerialPortDebug(boutRefNum, logb);
|
||||||
|
|
||||||
switch (event->what) {
|
switch (event->what) {
|
||||||
case updateEvt: {
|
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);
|
nk_input_key(nuklear_context, NK_KEY_SHIFT, isKeyDown);
|
||||||
} else if (key == deleteKey && isKeyDown) {
|
} else if (key == deleteKey && isKeyDown) {
|
||||||
|
|
||||||
nk_input_key(nuklear_context, NK_KEY_DEL, 1);
|
nk_input_key(nuklear_context, NK_KEY_DEL, isKeyDown);
|
||||||
nk_input_key(nuklear_context, NK_KEY_DEL, 0);
|
|
||||||
} else if (key == enterKey) {
|
} else if (key == enterKey) {
|
||||||
|
|
||||||
nk_input_key(nuklear_context, NK_KEY_ENTER, isKeyDown);
|
nk_input_key(nuklear_context, NK_KEY_ENTER, isKeyDown);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user