image/scrollable: Abstract adjustment access

This commit is contained in:
Sophie Herold 2023-12-05 21:26:09 +01:00
parent 3ab4d82d36
commit d69d0d5e47
3 changed files with 35 additions and 25 deletions

View file

@ -20,6 +20,9 @@ use super::*;
impl ScrollableImpl for imp::LpImage {}
impl imp::LpImage {
/// Adjustment setter needed for Scrollable implementation
///
/// The adjustment get's set by the `GtkScrolledWindow`
pub fn set_hadjustment(&self, hadjustment: Option<gtk::Adjustment>) {
let obj = self.obj();
@ -100,6 +103,26 @@ impl LpImage {
);
}
pub fn set_hadj_value(&self, value: f64) {
let hadjustment = self.hadjustment();
let value = value.clamp(0., hadjustment.upper() - hadjustment.page_size());
hadjustment.set_value(value);
}
pub fn set_vadj_value(&self, value: f64) {
let vadjustment = self.vadjustment();
let value = value.clamp(0., vadjustment.upper() - vadjustment.page_size());
self.vadjustment().set_value(value);
}
pub fn hadj_value(&self) -> f64 {
self.hadjustment().value()
}
pub fn vadj_value(&self) -> f64 {
self.vadjustment().value()
}
pub fn max_hadjustment_value(&self) -> f64 {
f64::max(self.image_displayed_width() - self.widget_width(), 0.)
}