general: Update to gtk-rs 0.7

This commit is contained in:
Sophie Herold 2023-08-02 14:27:23 +02:00
parent 66b257e4b5
commit 0cff205c9d
7 changed files with 269 additions and 179 deletions

View file

@ -341,13 +341,13 @@ mod imp {
let scroll_controller =
gtk::EventControllerScroll::new(gtk::EventControllerScrollFlags::VERTICAL);
scroll_controller.connect_scroll(glib::clone!(@weak obj => @default-return gtk::Inhibit(false), move |event, _, y| {
scroll_controller.connect_scroll(glib::clone!(@weak obj => @default-return glib::Propagation::Proceed, move |event, _, y| {
// use Ctrl key as modifier for vertical scrolling
if event.current_event_state().contains(gdk::ModifierType::CONTROL_MASK)
|| event.current_event_state().contains(gdk::ModifierType::SHIFT_MASK)
{
// propagate event to scrolled window
return gtk::Inhibit(false);
return glib::Propagation::Proceed;
}
// touchpads do zoom via gestures only
@ -355,7 +355,7 @@ mod imp {
== Some(gdk::InputSource::Touchpad)
{
// propagate event to scrolled window
return gtk::Inhibit(false);
return glib::Propagation::Proceed;
}
// Use exponential scaling since zoom is always multiplicative with the existing value
@ -379,7 +379,7 @@ mod imp {
}
// do not propagate event to scrolled window
gtk::Inhibit(true)
glib::Propagation::Stop
}));
obj.add_controller(scroll_controller);
@ -837,7 +837,7 @@ impl LpImage {
}
DecoderUpdate::Animated => {
let callback_id = self
.add_tick_callback(glib::clone!(@weak self as obj => @default-return glib::Continue(false), move |_, clock| obj.tick_callback(clock)));
.add_tick_callback(glib::clone!(@weak self as obj => @default-return glib::ControlFlow::Break, move |_, clock| obj.tick_callback(clock)));
imp.tick_callback.replace(Some(callback_id));
}
DecoderUpdate::UnsupportedFormat => {
@ -852,10 +852,10 @@ impl LpImage {
/// Roughly called for every frame if image is visible
///
/// We handle advancing to the next frame for animated GIFs etc here.
fn tick_callback(&self, clock: &gdk::FrameClock) -> glib::Continue {
fn tick_callback(&self, clock: &gdk::FrameClock) -> glib::ControlFlow {
// Do not animate if not visible
if !self.is_mapped() {
return glib::Continue(true);
return glib::ControlFlow::Continue;
}
let elapsed = clock.frame_time() - self.imp().last_animated_frame.get();
@ -872,7 +872,7 @@ impl LpImage {
}
}
glib::Continue(true)
glib::ControlFlow::Continue
}
pub fn is_loaded(&self) -> bool {

View file

@ -139,7 +139,7 @@ mod imp {
// Manually mange widget layout, see `WidgetImpl` for details
obj.set_layout_manager(None::<gtk::LayoutManager>);
let signal_group = glib::SignalGroup::new(LpImage::static_type());
let signal_group = glib::SignalGroup::new::<LpImage>();
obj.connect_notify_local(
Some("current-page"),
clone!(@weak signal_group => move |obj, _| {

View file

@ -132,22 +132,30 @@ mod imp {
gtk::EventControllerScroll::new(gtk::EventControllerScrollFlags::HORIZONTAL);
scroll_controller.connect_scroll(
glib::clone!(@weak obj => @default-return gtk::Inhibit(false), move |_, x, _| {
glib::clone!(@weak obj => @default-return glib::Propagation::Proceed, move |_, x, _| {
let direction_sign = if obj.imp().is_rtl() { -1. } else { 1. };
if x * direction_sign > 0. {
// check end
if let Some(max) = obj.imp().snap_points().last() {
gtk::Inhibit(obj.position() >= *max)
if obj.position() >= *max {
glib::Propagation::Stop
} else {
glib::Propagation::Proceed
}
} else {
gtk::Inhibit(true)
glib::Propagation::Stop
}
} else {
//check beginning
if let Some(min) = obj.imp().snap_points().first() {
gtk::Inhibit(obj.position() <= *min)
if obj.position() <= *min {
glib::Propagation::Stop
} else {
glib::Propagation::Proceed
}
} else {
gtk::Inhibit(true)
glib::Propagation::Stop
}
}
}),