mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-01-08 22:28:12 -05:00
app: begin edit scrolling port from mouse select to also for android touch
This commit is contained in:
@@ -357,8 +357,8 @@ pub async fn make(app: &App, window: SceneNodePtr, i18n_fish: &I18nBabelFish) {
|
||||
*/
|
||||
|
||||
// Text edit
|
||||
//let node = create_singleline_edit("editz");
|
||||
let node = create_multiline_edit("editz");
|
||||
let node = create_singleline_edit("editz");
|
||||
//let node = create_multiline_edit("editz");
|
||||
node.set_property_bool(atom, Role::App, "is_active", true).unwrap();
|
||||
node.set_property_bool(atom, Role::App, "is_focused", true).unwrap();
|
||||
|
||||
@@ -381,9 +381,9 @@ pub async fn make(app: &App, window: SceneNodePtr, i18n_fish: &I18nBabelFish) {
|
||||
// Only for multiline edit
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
let prop = node.get_property("height_range").unwrap();
|
||||
prop.set_f32(atom, Role::App, 0, 0.).unwrap();
|
||||
prop.set_f32(atom, Role::App, 1, 400.).unwrap();
|
||||
//let prop = node.get_property("height_range").unwrap();
|
||||
//prop.set_f32(atom, Role::App, 0, 0.).unwrap();
|
||||
//prop.set_f32(atom, Role::App, 1, 400.).unwrap();
|
||||
|
||||
let prop = node.get_property("padding").unwrap();
|
||||
prop.set_f32(atom, Role::App, 0, 20.).unwrap();
|
||||
@@ -437,8 +437,8 @@ pub async fn make(app: &App, window: SceneNodePtr, i18n_fish: &I18nBabelFish) {
|
||||
me,
|
||||
window_scale.clone(),
|
||||
app.render_api.clone(),
|
||||
//BaseEditType::SingleLine,
|
||||
BaseEditType::MultiLine,
|
||||
BaseEditType::SingleLine,
|
||||
//BaseEditType::MultiLine,
|
||||
)
|
||||
})
|
||||
.await;
|
||||
|
||||
@@ -786,8 +786,11 @@ impl BaseEdit {
|
||||
}
|
||||
|
||||
async fn handle_touch_move(&self, mut touch_pos: Point) -> bool {
|
||||
if !self.is_active.get() {
|
||||
return false
|
||||
}
|
||||
|
||||
//t!("handle_touch_move({touch_pos:?})");
|
||||
let atom = &mut self.render_api.make_guard(gfxtag!("BaseEdit::handle_touch_move"));
|
||||
// We must update with non relative touch_pos bcos when doing vertical scrolling
|
||||
// we will modify the scroll, which is used by abs_to_local(), which is used
|
||||
// to then calculate the max scroll. So it ends up jumping around.
|
||||
@@ -804,6 +807,8 @@ impl BaseEdit {
|
||||
self.node().trigger("paste_request", vec![]).await.unwrap();
|
||||
} else {
|
||||
self.abs_to_local(&mut touch_pos);
|
||||
|
||||
let atom = &mut self.render_api.make_guard(gfxtag!("BaseEdit::handle_touch_move"));
|
||||
self.start_touch_select(touch_pos, atom).await;
|
||||
self.redraw_select(atom.batch_id).await;
|
||||
}
|
||||
@@ -812,6 +817,28 @@ impl BaseEdit {
|
||||
}
|
||||
TouchStateAction::DragSelectHandle { side } => {
|
||||
let handle_descent = self.handle_descent.get();
|
||||
|
||||
// New code
|
||||
|
||||
let rect = self.rect.get();
|
||||
let is_touch_hover = rect.contains(touch_pos);
|
||||
|
||||
let sel_sender = self.sel_sender.lock().clone().unwrap();
|
||||
// Mouse is outside rect?
|
||||
// If so we gotta scroll it while selecting.
|
||||
if !is_touch_hover {
|
||||
// This process will begin selecting text and applying scroll too.
|
||||
sel_sender.send(Some(touch_pos)).await.unwrap();
|
||||
} else {
|
||||
// Stop any existing select/scroll process
|
||||
sel_sender.send(None).await.unwrap();
|
||||
// Mouse is inside so just select the text once and be done.
|
||||
self.handle_select(touch_pos).await;
|
||||
}
|
||||
|
||||
// Old code
|
||||
|
||||
/*
|
||||
self.abs_to_local(&mut touch_pos);
|
||||
|
||||
let editor = self.lock_editor().await;
|
||||
@@ -852,6 +879,7 @@ impl BaseEdit {
|
||||
drop(editor);
|
||||
|
||||
self.redraw_select(atom.batch_id).await;
|
||||
*/
|
||||
}
|
||||
TouchStateAction::ScrollVert { start_pos, scroll_start } => {
|
||||
let travel_dist = self.behave.scroll_ctrl().travel(*start_pos, touch_pos);
|
||||
@@ -861,6 +889,7 @@ impl BaseEdit {
|
||||
return true
|
||||
}
|
||||
self.scroll.store(scroll, Ordering::Release);
|
||||
let atom = &mut self.render_api.make_guard(gfxtag!("BaseEdit::handle_touch_move"));
|
||||
self.redraw_scroll(atom.batch_id).await;
|
||||
}
|
||||
TouchStateAction::SetCursorPos => {
|
||||
@@ -885,6 +914,10 @@ impl BaseEdit {
|
||||
_ => {}
|
||||
}
|
||||
|
||||
// Stop any selection scrolling
|
||||
let scroll_sender = self.sel_sender.lock().clone().unwrap();
|
||||
scroll_sender.send(None).await.unwrap();
|
||||
|
||||
self.node().trigger("focus_request", vec![]).await.unwrap();
|
||||
|
||||
true
|
||||
|
||||
Reference in New Issue
Block a user