@@ -280,8 +280,8 @@ pub fn show_extended_multi_select(s: &mut Cursive, title: &str, extended_multi_s
280280 // 添加分隔符
281281 select. add_item ( "--- 依赖项 Features ---" . to_string ( ) , usize:: MAX ) ;
282282
283- // 添加依赖项选项
284- for dep in & extended_multi_select. dependencies {
283+ // 添加依赖项选项,使用唯一索引
284+ for ( dep_idx , dep) in extended_multi_select. dependencies . iter ( ) . enumerate ( ) {
285285 let selected_count = extended_multi_select. dep_selected_features
286286 . get ( & dep. name )
287287 . map ( |indices| indices. len ( ) )
@@ -292,7 +292,9 @@ pub fn show_extended_multi_select(s: &mut Cursive, title: &str, extended_multi_s
292292 } else {
293293 format ! ( "📦 {} (no features selected)" , dep. name)
294294 } ;
295- select. add_item ( label, usize:: MAX - 1 ) ;
295+ // 使用 variants.len() + 1 + dep_idx 作为唯一索引
296+ let unique_dep_index = extended_multi_select. variants . len ( ) + 1 + dep_idx;
297+ select. add_item ( label, unique_dep_index) ;
296298 }
297299
298300 // 保存数据到应用数据中
@@ -408,7 +410,7 @@ fn toggle_extended_selection(s: &mut Cursive) {
408410 }
409411
410412 // 检查是否点击了依赖项
411- if current_selected_idx >= variants. len ( ) {
413+ if current_selected_idx >= variants. len ( ) + 1 && current_selected_idx != usize :: MAX {
412414 // 这是依赖项,计算依赖项索引
413415 let dep_index = current_selected_idx - variants. len ( ) - 1 ; // 减1是因为分隔符
414416 if let Some ( dep) = dependencies. get ( dep_index) {
@@ -460,8 +462,8 @@ fn toggle_extended_selection(s: &mut Cursive) {
460462 // 添加分隔符
461463 view. add_item ( "--- 依赖项 Features ---" . to_string ( ) , usize:: MAX ) ;
462464
463- // 重新添加依赖项
464- for dep in & dependencies {
465+ // 重新添加依赖项,使用唯一索引
466+ for ( dep_idx , dep) in dependencies. iter ( ) . enumerate ( ) {
465467 let selected_count = dep_selected_features
466468 . get ( & dep. name )
467469 . map ( |indices| indices. len ( ) )
@@ -472,7 +474,9 @@ fn toggle_extended_selection(s: &mut Cursive) {
472474 } else {
473475 format ! ( "📦 {} (no features selected)" , dep. name)
474476 } ;
475- view. add_item ( label, usize:: MAX - 1 ) ;
477+ // 使用 variants.len() + 1 + dep_idx 作为唯一索引
478+ let unique_dep_index = variants. len ( ) + 1 + dep_idx;
479+ view. add_item ( label, unique_dep_index) ;
476480 }
477481
478482 view. set_selection ( current_selected_idx) ;
0 commit comments