Compare commits
2 Commits
77f32e55cf
...
79ddd2680b
Author | SHA1 | Date | |
---|---|---|---|
79ddd2680b | |||
b2441ec2dc |
@@ -38,11 +38,11 @@ impl PageCache {
|
||||
|
||||
pub fn get_page_or_cache(&mut self, page_number: usize) -> Result<Rc<MyPageType>> {
|
||||
if let Some(page) = self.get_page(page_number) {
|
||||
return Ok(page);
|
||||
Ok(page)
|
||||
} else {
|
||||
let _ = self.cache_page(page_number, 100);
|
||||
if let Some(page) = self.get_page(page_number) {
|
||||
return Ok(page);
|
||||
Ok(page)
|
||||
} else {
|
||||
bail!("Failed caching and retrieving page {}", page_number);
|
||||
}
|
||||
|
19
src/ui.rs
19
src/ui.rs
@@ -2,6 +2,7 @@ use std::{
|
||||
cell::RefCell,
|
||||
path::{Path, PathBuf},
|
||||
rc::Rc,
|
||||
time::{Duration, Instant},
|
||||
};
|
||||
|
||||
use gtk::{
|
||||
@@ -24,6 +25,7 @@ pub struct Ui {
|
||||
pub image_left: Picture,
|
||||
pub image_right: Picture,
|
||||
pub document_canvas: Option<DocumentCanvas>,
|
||||
pub last_touch_time: Option<Instant>,
|
||||
}
|
||||
|
||||
pub struct DocumentCanvas {
|
||||
@@ -55,21 +57,19 @@ impl DocumentCanvas {
|
||||
|
||||
pub fn cache_initial_pages(&self, area_height: i32) {
|
||||
self.page_cache_sender.send_priority_cache_commands(
|
||||
&vec![self.current_page_number, self.current_page_number + 1],
|
||||
&[self.current_page_number, self.current_page_number + 1],
|
||||
area_height,
|
||||
);
|
||||
}
|
||||
|
||||
pub fn cache_surrounding_pages(&self, area_height: i32) {
|
||||
self.page_cache_sender.send_cache_commands(
|
||||
&vec![
|
||||
self.current_page_number.saturating_sub(2),
|
||||
&[self.current_page_number.saturating_sub(2),
|
||||
self.current_page_number.saturating_sub(1),
|
||||
self.current_page_number,
|
||||
self.current_page_number + 1,
|
||||
self.current_page_number + 2,
|
||||
self.current_page_number + 3,
|
||||
],
|
||||
self.current_page_number + 3],
|
||||
area_height,
|
||||
);
|
||||
}
|
||||
@@ -152,6 +152,14 @@ fn process_right_click(ui: &mut Ui, _x: f64, _y: f64) {
|
||||
}
|
||||
|
||||
fn process_left_click(ui: &mut Ui, x: f64, y: f64) {
|
||||
if let Some(last_touch_time) = ui.last_touch_time {
|
||||
if last_touch_time.elapsed() < Duration::from_millis(100) {
|
||||
// Prevent accidental double touching
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ui.last_touch_time = Some(Instant::now());
|
||||
if ui.document_canvas.is_none() {
|
||||
return;
|
||||
}
|
||||
@@ -238,6 +246,7 @@ impl Ui {
|
||||
image_left,
|
||||
image_right,
|
||||
document_canvas: None,
|
||||
last_touch_time: None,
|
||||
};
|
||||
let ui = Rc::new(RefCell::new(ui));
|
||||
|
||||
|
Reference in New Issue
Block a user