Skip to content

Commit

Permalink
Merge pull request 3snowp7im#16 from wooferzfg/time-formatters
Browse files Browse the repository at this point in the history
Fix multiple issues with Run Editor
  • Loading branch information
CryZe authored Feb 14, 2017
2 parents f6129ce + 7004a5b commit 73a3598
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
2 changes: 1 addition & 1 deletion src/run.rs
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ impl Run {
// Fix Best Segment time if the PB segment is faster
let current_segment = time - previous_time;
if comparison == PERSONAL_BEST_COMPARISON_NAME {
let time = &mut segment.best_segment_time()[method];
let time = &mut segment.best_segment_time_mut()[method];
if time.map_or(true, |t| t > current_segment) {
*time = Some(current_segment);
}
Expand Down
29 changes: 23 additions & 6 deletions src/run_editor/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,8 @@ impl RunEditor {
}
self.run.segments_mut().insert(selected_segment, segment);

self.select_only(selected_segment);

self.fix();
}

Expand All @@ -238,8 +240,7 @@ impl RunEditor {
}
self.run.segments_mut().insert(next_segment, segment);

self.unselect(selected_segment);
self.select_additionally(next_segment);
self.select_only(next_segment);

self.fix();
}
Expand Down Expand Up @@ -323,8 +324,15 @@ impl RunEditor {
removed += 1;
}
}
let last = self.selected_segments.len() - 1;
self.selected_segments.drain(..last);

let selected_segment = self.selected_segment_index();
let above_count = self.selected_segments.iter().filter(|&&i| i < selected_segment).count();
let mut new_index = selected_segment - above_count;
if new_index >= self.run.len() {
new_index = self.run.len() - 1;
}
self.selected_segments.clear();
self.selected_segments.push(new_index);

self.fix();
}
Expand Down Expand Up @@ -370,10 +378,14 @@ impl RunEditor {
}

pub fn can_move_segments_up(&self) -> bool {
self.selected_segments != &[0]
!self.selected_segments.iter().any(|&s| s == 0)
}

pub fn move_segments_up(&mut self) {
if !self.can_move_segments_up() {
return;
}

for i in 0..self.run.len() - 1 {
if self.selected_segments.contains(&(i + 1)) {
self.switch_segments(i);
Expand All @@ -388,10 +400,15 @@ impl RunEditor {
}

pub fn can_move_segments_down(&self) -> bool {
self.selected_segments != &[self.run.len() - 1]
let last_index = self.run.len() - 1;
!self.selected_segments.iter().any(|&s| s == last_index)
}

pub fn move_segments_down(&mut self) {
if !self.can_move_segments_down() {
return;
}

for i in 0..self.run.len() - 1 {
if self.selected_segments.contains(&i) {
self.switch_segments(i);
Expand Down

0 comments on commit 73a3598

Please sign in to comment.