From 5eb77ea17c330d948fb2997603df0f64c6f1727c Mon Sep 17 00:00:00 2001 From: Duy Tran Khanh Date: Sat, 6 Feb 2021 09:47:15 +0700 Subject: [PATCH] Implement most stable (?) send click event method --- .../src/main/java/org/lwjgl/glfw/GLFW.java | 1 - Natives/SurfaceViewController.m | 57 +++++++++---------- 2 files changed, 26 insertions(+), 32 deletions(-) diff --git a/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java b/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java index 0658fbad..6683dcb6 100644 --- a/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java +++ b/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java @@ -1149,7 +1149,6 @@ public class GLFW public static void glfwSetInputMode(@NativeType("GLFWwindow *") long window, int mode, int value) { if (mode == GLFW_CURSOR) { - System.out.println("GLFW: glfwSetInputMode(GLFW_CURSOR, " + value + ")"); switch (value) { case GLFW_CURSOR_DISABLED: CallbackBridge.sendGrabbing(true, (int) mGLFWCursorX, (int) mGLFWCursorY); diff --git a/Natives/SurfaceViewController.m b/Natives/SurfaceViewController.m index 85406981..77c7c5b2 100644 --- a/Natives/SurfaceViewController.m +++ b/Natives/SurfaceViewController.m @@ -101,8 +101,6 @@ UITextField *inputView; ADD_BUTTON_VISIBLE(@"⬛", space, CGRectMake(width - 5 * 2 - 50 * 2, height - 5 * 2 - 50 * 2, BTN_SQUARE)); ADD_BUTTON_VISIBLE(@"Esc", escape, CGRectMake(width - 5 - 80, height - 5 - 30, BTN_RECT)); - - ADD_BUTTON_VISIBLE(@"Resize", special_resize, CGRectMake(width - 5 - 80, 5, BTN_RECT)); // ADD_BUTTON_VISIBLE(@"Enter", enter, CGRectMake(5, 70.0, BTN_SQUARE)); @@ -116,7 +114,12 @@ UITextField *inputView; MGLKView *view = glView = (MGLKView *) self.view; view.drawableDepthFormat = MGLDrawableDepthFormat24; view.enableSetNeedsDisplay = YES; + + UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(triggerClickEvent:)]; + tapGesture.numberOfTapsRequired = 1; + [view addGestureRecognizer:tapGesture]; + // Init GLES self.context = [[MGLContext alloc] initWithAPI:kMGLRenderingAPIOpenGLES3]; if (!self.context) { @@ -137,25 +140,19 @@ UITextField *inputView; [self setupGL]; } -// sendData: type, keycode, scancode, action, mods - -int currentVisibility = 1; -ADD_BUTTON_DEF(special_togglebtn) { - if (held == 0) { - currentVisibility = !currentVisibility; - for (int i = 0; i < togglableVisibleButtonIndex + 1; i++) { - togglableVisibleButtons[i].hidden = currentVisibility; - } +- (void)triggerClickEvent:(UITapGestureRecognizer *)sender { + if (sender.state == UIGestureRecognizerStateRecognized) { + CGFloat screenScale = [[UIScreen mainScreen] scale]; + CGPoint locationInView = [sender locationInView:[sender.view superview]]; + callback_SurfaceViewController_onTouch(event, locationInView.x * screenScale, locationInView.y * screenScale); + + Java_org_lwjgl_glfw_CallbackBridge_nativeSendMouseButton(NULL, NULL, + isGrabbing == JNI_TRUE ? GLFW_MOUSE_BUTTON_RIGHT : GLFW_MOUSE_BUTTON_LEFT, 1, 0); + Java_org_lwjgl_glfw_CallbackBridge_nativeSendMouseButton(NULL, NULL, + isGrabbing == JNI_TRUE ? GLFW_MOUSE_BUTTON_RIGHT : GLFW_MOUSE_BUTTON_LEFT, 0, 0); } } -/* -- (BOOL)textView:(UITextView *)inputView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text -{ - NSLog(@"input"); -} -*/ - -(void)inputViewDidChange { if ([inputView.text length] <= 1) { Java_org_lwjgl_glfw_CallbackBridge_nativeSendKey(NULL, NULL, GLFW_KEY_BACKSPACE, 0, 1, 0); @@ -184,6 +181,16 @@ ADD_BUTTON_DEF(special_togglebtn) { Java_org_lwjgl_glfw_CallbackBridge_nativeSendKey(NULL, NULL, GLFW_KEY_ENTER, 0, 0, 0); } +int currentVisibility = 1; +ADD_BUTTON_DEF(special_togglebtn) { + if (held == 0) { + currentVisibility = !currentVisibility; + for (int i = 0; i < togglableVisibleButtonIndex + 1; i++) { + togglableVisibleButtons[i].hidden = currentVisibility; + } + } +} + ADD_BUTTON_DEF(special_keyboard) { if (held == 0) { [inputView resignFirstResponder]; @@ -200,17 +207,6 @@ ADD_BUTTON_DEF(special_mouse_sec) { Java_org_lwjgl_glfw_CallbackBridge_nativeSendMouseButton(NULL, NULL, GLFW_MOUSE_BUTTON_RIGHT, held, 0); } -ADD_BUTTON_DEF(special_resize) { - CGRect screenBounds = [[UIScreen mainScreen] bounds]; - CGFloat screenScale = [[UIScreen mainScreen] scale]; - - int width = (int) roundf(screenBounds.size.width * screenScale); - int height = (int) roundf(screenBounds.size.height * screenScale); - - Java_org_lwjgl_glfw_CallbackBridge_nativeSendScreenSize(NULL, NULL, width, height); - Java_org_lwjgl_glfw_CallbackBridge_nativeSendWindowPos(NULL, NULL, 0, 0); -} - ADD_BUTTON_DEF_KEY(f3, GLFW_KEY_F3) ADD_BUTTON_DEF_KEY(f5, GLFW_KEY_F5) ADD_BUTTON_DEF_KEY(t, GLFW_KEY_T) @@ -264,12 +260,11 @@ ADD_BUTTON_DEF_KEY(escape, GLFW_KEY_ESCAPE) - (void)sendTouchEvent:(NSSet *)touches withEvent:(int)event { - CGRect screenBounds = [[UIScreen mainScreen] bounds]; CGFloat screenScale = [[UIScreen mainScreen] scale]; UITouch* touchEvent = [touches anyObject]; CGPoint locationInView = [touchEvent locationInView:self.view]; - // CGPoint normalizedPoint = getNormalizedPoint(self.view, locationInView); + callback_SurfaceViewController_onTouch(event, locationInView.x * screenScale, locationInView.y * screenScale /* normalizedPoint.x, normalizedPoint.y */); }