From 65d1e8d73d2ffcca255d0fe1c2c3b5edf5ca545e Mon Sep 17 00:00:00 2001 From: Matthieu Baumann Date: Thu, 24 Feb 2022 00:45:41 +0100 Subject: [PATCH] First step to fix touchmove --- src/core/al-ui/src/input.rs | 14 ++++++++------ src/core/al-ui/src/layout.rs | 8 ++++++-- src/core/al-ui/src/lib.rs | 9 ++++++--- src/js/View.js | 6 +++--- 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/core/al-ui/src/input.rs b/src/core/al-ui/src/input.rs index 58ca10df..429a7494 100644 --- a/src/core/al-ui/src/input.rs +++ b/src/core/al-ui/src/input.rs @@ -954,8 +954,8 @@ pub fn install_canvas_events(runner_ref: GuiRef) -> Result<(), JsValue> { push_touches(&mut *runner_lock, egui::TouchPhase::Start, &event); runner_lock.needs_repaint.set_true(); - event.stop_propagation(); - event.prevent_default(); + //event.stop_propagation(); + //event.prevent_default(); }) as Box); canvas.add_event_listener_with_callback(event_name, closure.as_ref().unchecked_ref())?; closure.forget(); @@ -978,8 +978,10 @@ pub fn install_canvas_events(runner_ref: GuiRef) -> Result<(), JsValue> { push_touches(&mut *runner_lock, egui::TouchPhase::Move, &event); runner_lock.needs_repaint.set_true(); - event.stop_propagation(); - event.prevent_default(); + runner_lock.cur_mouse_pos = pos; + + //event.stop_propagation(); + //event.prevent_default(); }) as Box); canvas.add_event_listener_with_callback(event_name, closure.as_ref().unchecked_ref())?; closure.forget(); @@ -1008,8 +1010,8 @@ pub fn install_canvas_events(runner_ref: GuiRef) -> Result<(), JsValue> { push_touches(&mut *runner_lock, egui::TouchPhase::End, &event); runner_lock.needs_repaint.set_true(); - event.stop_propagation(); - event.prevent_default(); + //event.stop_propagation(); + //event.prevent_default(); // Finally, focus or blur on agent to toggle keyboard manipulate_agent(&runner_lock, runner_lock.input.latest_touch_pos); diff --git a/src/core/al-ui/src/layout.rs b/src/core/al-ui/src/layout.rs index cf006171..1b0f5177 100644 --- a/src/core/al-ui/src/layout.rs +++ b/src/core/al-ui/src/layout.rs @@ -13,6 +13,7 @@ pub struct LayerLayout { use crate::widgets::SurveyGrid; use crate::Event; +use egui::InnerResponse; use wasm_bindgen::prelude::JsValue; use std::sync::{Arc, Mutex}; impl LayerLayout { @@ -25,8 +26,8 @@ impl LayerLayout { }) } - pub fn show(&mut self, ui: &mut egui::Ui, events: Arc>>) { - egui::Window::new("Aladin Lite v3") + pub fn show(&mut self, ui: &mut egui::Ui, events: Arc>>) -> egui::Rect { + let response = egui::Window::new("Aladin Lite v3") .collapsible(true) .show(ui.ctx(), |ui| { ui.set_max_width(270.0); @@ -70,6 +71,9 @@ impl LayerLayout { wasm_bindgen_futures::spawn_local(fut); } }); + response.unwrap() + .response + .rect } fn ui(&mut self, ui: &mut egui::Ui, events: Arc>>) { diff --git a/src/core/al-ui/src/lib.rs b/src/core/al-ui/src/lib.rs index e525214f..ba04e812 100644 --- a/src/core/al-ui/src/lib.rs +++ b/src/core/al-ui/src/lib.rs @@ -77,6 +77,8 @@ pub struct Gui { } use al_core::WebGlContext; use std::sync::{Arc, Mutex}; +use egui::Pos2; +use cgmath::Vector2; impl Gui { pub fn new(aladin_lite_div: &str, gl: &WebGlContext) -> Result { let ctx = egui::CtxRef::default(); @@ -91,7 +93,7 @@ impl Gui { let gui = Self { ctx, painter, - + input, layout, clipped_meshes: None, @@ -167,10 +169,11 @@ impl Gui { }); });*/ - layout.show(ui, events); + layout.show(ui, events) }); - self.mouse_on_ui = !response.response.hovered(); + self.mouse_on_ui = response.inner.contains(self.cur_mouse_pos); + al_core::log(&format!("mouse: {:?}", self.mouse_on_ui)); } self.painter.upload_egui_texture(&self.ctx.texture()); diff --git a/src/js/View.js b/src/js/View.js index 75d77d28..6a3f78e4 100644 --- a/src/js/View.js +++ b/src/js/View.js @@ -491,6 +491,7 @@ export let View = (function() { if(view.aladin.webglAPI.posOnUi()) { return; } + // zoom pinching if (e.type==='touchstart' && e.originalEvent && e.originalEvent.targetTouches && e.originalEvent.targetTouches.length==2) { view.dragging = false; @@ -522,7 +523,7 @@ export let View = (function() { view.dragy = xymouse.y; } - + console.log("AAAA") view.dragging = true; if (view.mode==View.PAN) { view.setCursor('move'); @@ -689,8 +690,8 @@ export let View = (function() { e.preventDefault(); var xymouse = view.imageCanvas.relMouseCoords(e); p = xymouse; - if(view.aladin.webglAPI.posOnUi()) { + if(view.aladin.webglAPI.posOnUi()) { return; } @@ -766,7 +767,6 @@ export let View = (function() { if (! view.dragging) { return; } - //var xoffset, yoffset; var s1, s2; if (e.originalEvent && e.originalEvent.targetTouches) {