Don't rely on Range::is_empty to check for selection emptiness

This method returns true when `start > end`, so our `backspace` and
`delete` implementations were subtly wrong because they always deleted
one extra character for reversed selections.
This commit is contained in:
Antonio Scandurra
2021-04-29 10:38:11 +02:00
parent fdefd32de0
commit 0aacf858ce
2 changed files with 21 additions and 16 deletions
+3 -6
View File
@@ -12,14 +12,11 @@ use display_map::*;
use std::{cmp, ops::Range};
trait RangeExt<T> {
fn sorted(&self) -> (T, T);
fn sorted(&self) -> Range<T>;
}
impl<T: Ord + Clone> RangeExt<T> for Range<T> {
fn sorted(&self) -> (T, T) {
(
cmp::min(&self.start, &self.end).clone(),
cmp::max(&self.start, &self.end).clone(),
)
fn sorted(&self) -> Self {
cmp::min(&self.start, &self.end).clone()..cmp::max(&self.start, &self.end).clone()
}
}