Skip to content

Commit ace1c15

Browse files
committed
feat: 更新扩展多选界面,使用唯一索引添加依赖项选项
1 parent 5382b21 commit ace1c15

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

jkconfig/src/ui/components/editors/multi_select_editor.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)