|
1 | | -use super::project::{PROJECT_STATE, ProjectState}; |
| 1 | +use super::{ |
| 2 | + project::{PROJECT_STATE, ProjectState}, |
| 3 | + segment::async_reload_segment_preview, |
| 4 | +}; |
2 | 5 | use crate::{ |
3 | 6 | global_store, logic_cb, |
4 | 7 | slint_generatedAppWindow::{ |
@@ -197,8 +200,10 @@ fn video_editor_paste(ui: &AppWindow) { |
197 | 200 | } |
198 | 201 | } |
199 | 202 |
|
200 | | - let pasted_count = segments_to_paste.len(); |
| 203 | + let mut need_split = false; |
| 204 | + let mut split_segment_index = 0; |
201 | 205 | let mut batch_command = BatchCommand::new("Paste segments".to_string()); |
| 206 | + let pasted_count = segments_to_paste.len(); |
202 | 207 |
|
203 | 208 | let result = with_history_manager(|state| { |
204 | 209 | // 检查当前编辑的轨道类型是否与 segments 类型一致 |
@@ -232,10 +237,7 @@ fn video_editor_paste(ui: &AppWindow) { |
232 | 237 | )); |
233 | 238 | } |
234 | 239 |
|
235 | | - // 找到 timeline_offset 所在的 segment 位置 |
236 | 240 | let mut insert_index = track.segments_count(); |
237 | | - let mut need_split = false; |
238 | | - let mut split_segment_index = 0; |
239 | 241 | let mut split_time = Duration::ZERO; |
240 | 242 |
|
241 | 243 | for (i, segment) in track.segments().iter().enumerate() { |
@@ -288,6 +290,16 @@ fn video_editor_paste(ui: &AppWindow) { |
288 | 290 | match result { |
289 | 291 | Ok(()) => { |
290 | 292 | sync_manager_to_ui(ui); |
| 293 | + |
| 294 | + if need_split { |
| 295 | + async_reload_segment_preview(ui.as_weak(), track_idx, split_segment_index, false); |
| 296 | + async_reload_segment_preview( |
| 297 | + ui.as_weak(), |
| 298 | + track_idx, |
| 299 | + split_segment_index + 2, |
| 300 | + true, |
| 301 | + ); |
| 302 | + } |
291 | 303 | crate::toast_success!( |
292 | 304 | ui, |
293 | 305 | format!( |
|
0 commit comments