From 65543ce2055779a28c5274d1bd0754d20f4aafb0 Mon Sep 17 00:00:00 2001 From: Julian Mutter Date: Sat, 21 Oct 2023 15:16:23 +0200 Subject: [PATCH] Enable navigation with left- and rightclick --- src/ui.rs | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/ui.rs b/src/ui.rs index 0c2fb13..04f0814 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -65,7 +65,19 @@ fn update_page_status(ui: &Ui) { ui.drawing_area.queue_draw(); } -fn process_touch(ui: &mut Ui, x: f64, y: f64) { +fn process_right_click(ui: &mut Ui, x: f64, y: f64) { + if ui.document_canvas.is_none() { + return; + } + + let doc = ui.document_canvas.as_mut().unwrap(); + if doc.current_page_number > 1 { + doc.current_page_number -= 1; + } + update_page_status(ui); +} + +fn process_left_click(ui: &mut Ui, x: f64, y: f64) { if ui.document_canvas.is_none() { return; } @@ -115,13 +127,20 @@ impl Ui { app_wrapper.append(&ui.borrow().bottom_bar); ui.borrow().bottom_bar.append(&ui.borrow().page_indicator); - let click = gtk4::GestureClick::new(); - click.set_button(0); - click.connect_pressed(glib::clone!(@weak ui => @default-panic, move |_, _, x, y| { - process_touch(&mut ui.borrow_mut(), x, y); + let click_left = gtk4::GestureClick::new(); + click_left.set_button(1); + click_left.connect_pressed(glib::clone!(@weak ui => @default-panic, move |_, _, x, y| { + process_left_click(&mut ui.borrow_mut(), x, y); })); - ui.borrow().drawing_area.add_controller(click); + let click_right = gtk4::GestureClick::new(); + click_right.set_button(3); + click_right.connect_pressed(glib::clone!(@weak ui => @default-panic, move |_, _, x, y| { + process_right_click(&mut ui.borrow_mut(), x, y); + })); + + ui.borrow().drawing_area.add_controller(click_left); + ui.borrow().drawing_area.add_controller(click_right); ui.borrow().drawing_area.set_draw_func( glib::clone!(@weak ui => move |area, context, _, _| {