Browse Source

Remove code inside debug_assert macro

Code inside debug_assert! is not called in release mode. In release mode
all the debug_assert! is omitted so the code inside never runs.

https://doc.rust-lang.org/std/macro.debug_assert.html

I've moved all the code inside the debug_assert! call to outside and
assign to a variable so the assert is done in development version but
doesn't affects to the release version at all.
environments/review-master-cjudxy/deployments/29
Daniel García Moreno 7 years ago committed by Julian Sparber
parent
commit
211a15a780
  1. 127
      fractal-gtk/src/widgets/scroll_widget.rs

127
fractal-gtk/src/widgets/scroll_widget.rs

@ -137,28 +137,28 @@ impl ScrollWidget {
let autoscroll = Rc::downgrade(&self.autoscroll);
let view = self.widgets.view.downgrade();
adj.connect_property_upper_notify(move |adj| {
debug_assert!(
|| -> Option<()> {
let view = view.upgrade()?;
let upper = upper.upgrade()?;
let balance = balance.upgrade()?;
let autoscroll = autoscroll.upgrade()?;
let new_upper = adj.get_upper();
let diff = new_upper - upper.get();
/* Don't do anything if upper didn't change */
if diff != 0.0 {
upper.set(new_upper);
/* Stay at the end of the room history when autoscroll is on */
if autoscroll.get() {
adj.set_value(adj.get_upper() - adj.get_page_size());
} else if balance.take().map_or(false, |x| x == Position::Top) {
adj.set_value(adj.get_value() + diff);
view.set_kinetic_scrolling(true);
}
let check = || -> Option<()> {
let view = view.upgrade()?;
let upper = upper.upgrade()?;
let balance = balance.upgrade()?;
let autoscroll = autoscroll.upgrade()?;
let new_upper = adj.get_upper();
let diff = new_upper - upper.get();
/* Don't do anything if upper didn't change */
if diff != 0.0 {
upper.set(new_upper);
/* Stay at the end of the room history when autoscroll is on */
if autoscroll.get() {
adj.set_value(adj.get_upper() - adj.get_page_size());
} else if balance.take().map_or(false, |x| x == Position::Top) {
adj.set_value(adj.get_value() + diff);
view.set_kinetic_scrolling(true);
}
Some(())
}()
.is_some(),
}
Some(())
}();
debug_assert!(
check.is_some(),
"Upper notify callback couldn't acquire a strong pointer"
);
});
@ -169,64 +169,61 @@ impl ScrollWidget {
let spinner = self.widgets.spinner.downgrade();
let action_weak = action.map(|a| a.downgrade());
adj.connect_value_changed(move |adj| {
debug_assert!(
|| -> Option<()> {
let autoscroll = autoscroll.upgrade()?;
let r = revealer.upgrade()?;
let check = || -> Option<()> {
let autoscroll = autoscroll.upgrade()?;
let r = revealer.upgrade()?;
let bottom = adj.get_upper() - adj.get_page_size();
if adj.get_value() == bottom {
r.set_reveal_child(false);
autoscroll.set(true);
} else {
r.set_reveal_child(true);
autoscroll.set(false);
}
Some(())
}()
.is_some(),
let bottom = adj.get_upper() - adj.get_page_size();
if adj.get_value() == bottom {
r.set_reveal_child(false);
autoscroll.set(true);
} else {
r.set_reveal_child(true);
autoscroll.set(false);
}
Some(())
}();
debug_assert!(
check.is_some(),
"Value changed callback couldn't acquire a strong pointer"
);
let action_weak = action_weak.clone();
debug_assert!(
|| -> Option<()> {
let request_sent = request_sent.upgrade()?;
if !request_sent.get() {
let action = action_weak?.upgrade()?;
let spinner = spinner.upgrade()?;
/* the page size twice to detect if the user gets close the edge */
if adj.get_value() < adj.get_page_size() * 2.0 {
/* Load more messages once the user is nearly at the end of the history */
spinner.start();
let data = glib::Variant::from(&room_id);
action.activate(&data);
request_sent.set(true);
}
let check = || -> Option<()> {
let request_sent = request_sent.upgrade()?;
if !request_sent.get() {
let action = action_weak?.upgrade()?;
let spinner = spinner.upgrade()?;
/* the page size twice to detect if the user gets close the edge */
if adj.get_value() < adj.get_page_size() * 2.0 {
/* Load more messages once the user is nearly at the end of the history */
spinner.start();
let data = glib::Variant::from(&room_id);
action.activate(&data);
request_sent.set(true);
}
}
Some(())
}()
.is_some(),
"Can't request more messages"
);
Some(())
}();
debug_assert!(check.is_some(), "Can't request more messages");
});
let autoscroll = Rc::downgrade(&self.autoscroll);
let revealer = self.widgets.btn_revealer.downgrade();
let scroll = self.widgets.view.downgrade();
self.widgets.button.connect_clicked(move |_| {
let check = || -> Option<()> {
let autoscroll = autoscroll.upgrade()?;
let r = revealer.upgrade()?;
let s = scroll.upgrade()?;
r.set_reveal_child(false);
autoscroll.set(true);
scroll_down(&s, true);
Some(())
}();
debug_assert!(
|| -> Option<()> {
let autoscroll = autoscroll.upgrade()?;
let r = revealer.upgrade()?;
let s = scroll.upgrade()?;
r.set_reveal_child(false);
autoscroll.set(true);
scroll_down(&s, true);
Some(())
}()
.is_some(),
check.is_some(),
"Scroll down button onclick callback couldn't acquire a strong pointer"
);
});

Loading…
Cancel
Save