mirror of
https://github.com/johrpan/musicus.git
synced 2025-10-26 19:57:25 +01:00
editor: Implement drag and drop where it makes sense
This commit is contained in:
parent
a13e406e99
commit
e47b7c2006
31 changed files with 888 additions and 87 deletions
|
|
@ -266,6 +266,20 @@ impl RecordingEditor {
|
|||
fn add_performer_row(&self, performer: Performer) {
|
||||
let row = RecordingEditorPerformerRow::new(&self.navigation(), &self.library(), performer);
|
||||
|
||||
row.connect_move(clone!(
|
||||
#[weak(rename_to = this)]
|
||||
self,
|
||||
move |target, source| {
|
||||
let mut performer_rows = this.imp().performer_rows.borrow_mut();
|
||||
if let Some(index) = performer_rows.iter().position(|p| p == target) {
|
||||
this.imp().performer_list.remove(&source);
|
||||
performer_rows.retain(|p| p != &source);
|
||||
this.imp().performer_list.insert(&source, index as i32);
|
||||
performer_rows.insert(index, source);
|
||||
}
|
||||
}
|
||||
));
|
||||
|
||||
row.connect_remove(clone!(
|
||||
#[weak(rename_to = this)]
|
||||
self,
|
||||
|
|
@ -298,6 +312,20 @@ impl RecordingEditor {
|
|||
ensemble_performer,
|
||||
);
|
||||
|
||||
row.connect_move(clone!(
|
||||
#[weak(rename_to = this)]
|
||||
self,
|
||||
move |target, source| {
|
||||
let mut ensemble_rows = this.imp().ensemble_rows.borrow_mut();
|
||||
if let Some(index) = ensemble_rows.iter().position(|p| p == target) {
|
||||
this.imp().ensemble_list.remove(&source);
|
||||
ensemble_rows.retain(|p| p != &source);
|
||||
this.imp().ensemble_list.insert(&source, index as i32);
|
||||
ensemble_rows.insert(index, source);
|
||||
}
|
||||
}
|
||||
));
|
||||
|
||||
row.connect_remove(clone!(
|
||||
#[weak(rename_to = this)]
|
||||
self,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue