Fix compilation for macos
This commit is contained in:
parent
53275c9137
commit
aadab38487
@ -1055,6 +1055,8 @@ is_ascii_control_char(char x) {
|
|||||||
const bool previous_has_marked_text = [self hasMarkedText];
|
const bool previous_has_marked_text = [self hasMarkedText];
|
||||||
[self unmarkText];
|
[self unmarkText];
|
||||||
_glfw.ns.text[0] = 0;
|
_glfw.ns.text[0] = 0;
|
||||||
|
GLFWkeyevent glfw_keyevent;
|
||||||
|
_glfwInitializeKeyEvent(&glfw_keyevent, key, scancode, GLFW_PRESS, mods);
|
||||||
if (!_glfw.ns.unicodeData) {
|
if (!_glfw.ns.unicodeData) {
|
||||||
// Using the cocoa API for key handling is disabled, as there is no
|
// Using the cocoa API for key handling is disabled, as there is no
|
||||||
// reliable way to handle dead keys using it. Only use it if the
|
// reliable way to handle dead keys using it. Only use it if the
|
||||||
@ -1095,14 +1097,16 @@ is_ascii_control_char(char x) {
|
|||||||
if (window->ns.deadKeyState && (char_count == 0 || scancode == 0x75)) {
|
if (window->ns.deadKeyState && (char_count == 0 || scancode == 0x75)) {
|
||||||
// 0x75 is the delete key which needs to be ignored during a compose sequence
|
// 0x75 is the delete key which needs to be ignored during a compose sequence
|
||||||
debug_key(@"Sending pre-edit text for dead key (text: %@ markedText: %@).\n", @(format_text(_glfw.ns.text)), markedText);
|
debug_key(@"Sending pre-edit text for dead key (text: %@ markedText: %@).\n", @(format_text(_glfw.ns.text)), markedText);
|
||||||
_glfwInputKeyboard(window, key, scancode, GLFW_PRESS, mods,
|
glfw_keyevent.text = [[markedText string] UTF8String];
|
||||||
[[markedText string] UTF8String], 1); // update pre-edit text
|
glfw_keyevent.ime_state = 1;
|
||||||
|
_glfwInputKeyboard(window, &glfw_keyevent); // update pre-edit text
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (in_compose_sequence) {
|
if (in_compose_sequence) {
|
||||||
debug_key(@"Clearing pre-edit text at end of compose sequence\n");
|
debug_key(@"Clearing pre-edit text at end of compose sequence\n");
|
||||||
_glfwInputKeyboard(window, key, scancode, GLFW_PRESS, mods,
|
glfw_keyevent.text = NULL;
|
||||||
NULL, 1); // clear pre-edit text
|
glfw_keyevent.ime_state = 1;
|
||||||
|
_glfwInputKeyboard(window, &glfw_keyevent); // clear pre-edit text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (is_ascii_control_char(_glfw.ns.text[0])) _glfw.ns.text[0] = 0; // don't send text for ascii control codes
|
if (is_ascii_control_char(_glfw.ns.text[0])) _glfw.ns.text[0] = 0; // don't send text for ascii control codes
|
||||||
@ -1110,18 +1114,22 @@ is_ascii_control_char(char x) {
|
|||||||
@(format_text(_glfw.ns.text)), @(_glfwGetKeyName(key)), markedText);
|
@(format_text(_glfw.ns.text)), @(_glfwGetKeyName(key)), markedText);
|
||||||
if (!window->ns.deadKeyState) {
|
if (!window->ns.deadKeyState) {
|
||||||
if ([self hasMarkedText]) {
|
if ([self hasMarkedText]) {
|
||||||
_glfwInputKeyboard(window, key, scancode, GLFW_PRESS, mods,
|
glfw_keyevent.text = [[markedText string] UTF8String];
|
||||||
[[markedText string] UTF8String], 1); // update pre-edit text
|
glfw_keyevent.ime_state = 1;
|
||||||
|
_glfwInputKeyboard(window, &glfw_keyevent); // update pre-edit text
|
||||||
} else if (previous_has_marked_text) {
|
} else if (previous_has_marked_text) {
|
||||||
_glfwInputKeyboard(window, key, scancode, GLFW_PRESS, mods,
|
glfw_keyevent.text = NULL;
|
||||||
NULL, 1); // clear pre-edit text
|
glfw_keyevent.ime_state = 1;
|
||||||
|
_glfwInputKeyboard(window, &glfw_keyevent); // clear pre-edit text
|
||||||
}
|
}
|
||||||
if (([self hasMarkedText] || previous_has_marked_text) && !_glfw.ns.text[0]) {
|
if (([self hasMarkedText] || previous_has_marked_text) && !_glfw.ns.text[0]) {
|
||||||
// do not pass keys like BACKSPACE while there's pre-edit text, let IME handle it
|
// do not pass keys like BACKSPACE while there's pre-edit text, let IME handle it
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_glfwInputKeyboard(window, key, scancode, GLFW_PRESS, mods, _glfw.ns.text, 0);
|
glfw_keyevent.text = _glfw.ns.text;
|
||||||
|
glfw_keyevent.ime_state = 0;
|
||||||
|
_glfwInputKeyboard(window, &glfw_keyevent);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)flagsChanged:(NSEvent *)event
|
- (void)flagsChanged:(NSEvent *)event
|
||||||
@ -1143,14 +1151,19 @@ is_ascii_control_char(char x) {
|
|||||||
else
|
else
|
||||||
action = GLFW_RELEASE;
|
action = GLFW_RELEASE;
|
||||||
|
|
||||||
_glfwInputKeyboard(window, key, [event keyCode], action, mods, "", 0);
|
GLFWkeyevent glfw_keyevent;
|
||||||
|
_glfwInitializeKeyEvent(&glfw_keyevent, key, [event keyCode], action, mods);
|
||||||
|
_glfwInputKeyboard(window, &glfw_keyevent);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)keyUp:(NSEvent *)event
|
- (void)keyUp:(NSEvent *)event
|
||||||
{
|
{
|
||||||
const int key = translateKey([event keyCode], true);
|
const int key = translateKey([event keyCode], true);
|
||||||
const int mods = translateFlags([event modifierFlags]);
|
const int mods = translateFlags([event modifierFlags]);
|
||||||
_glfwInputKeyboard(window, key, [event keyCode], GLFW_RELEASE, mods, "", 0);
|
|
||||||
|
GLFWkeyevent glfw_keyevent;
|
||||||
|
_glfwInitializeKeyEvent(&glfw_keyevent, key, [event keyCode], GLFW_RELEASE, mods);
|
||||||
|
_glfwInputKeyboard(window, &glfw_keyevent);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)scrollWheel:(NSEvent *)event
|
- (void)scrollWheel:(NSEvent *)event
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user