@@ -153,6 +153,7 @@ component SegmentFilterList inherits Rectangle {
153153 private property <bool > preset-mode ;
154154
155155 callback clicked (filter : SegmentFilter );
156+ callback filter-selected (ty : FilterType );
156157
157158 changed selected-index => {
158159 if (selected-index == -1 ) {
@@ -254,6 +255,7 @@ component SegmentFilterList inherits Rectangle {
254255 VEFilter.selected-filter = filter;
255256 VEFilter.is-in-edit-mode = VEFilter.is-edit-mode-filter (filter.name);
256257 Store.video-editor-segment-filter-flag = !Store.video-editor-segment-filter-flag;
258+ root .filter-selected (filter.ty);
257259 }
258260 }
259261 }
@@ -374,6 +376,7 @@ component SegmentFilter inherits Rectangle {
374376
375377 private property <VideoEditorTrackSegment > segment : Logic.video-editor-selected-segment (Store.video-editor-segment-selected-flag, Store.video-editor-segment-filter-flag);
376378 private property <SegmentFilter > selected-filter <=> VEFilter.selected-filter;
379+ private property <bool > auto-switching-tab : false ;
377380
378381 // 例如通过界面调整了filter状态,但是selected-filter没有及时更新。导致状态不一致
379382 // 通过segment变化及时更新当前filter状态
@@ -390,7 +393,10 @@ component SegmentFilter inherits Rectangle {
390393 y : 0 ;
391394
392395 changed checked-index => {
393- sl.selected-index = -1 ;
396+ if (!auto-switching-tab) {
397+ sl.selected-index = -1 ;
398+ }
399+ auto-switching-tab = false ;
394400 }
395401
396402 open-filters-selector (checked-index) => {
@@ -408,6 +414,17 @@ component SegmentFilter inherits Rectangle {
408414 y : tab.y + tab.height + Theme.spacing * 2 ;
409415 height : root .height - td.height - tab.height - rec.height;
410416 segment : root .segment;
417+
418+ filter-selected (ty) => {
419+ auto-switching-tab = true ;
420+ if (ty == FilterType.Video) {
421+ tab.checked-index = 0 ;
422+ } else if (ty == FilterType.Audio) {
423+ tab.checked-index = 1 ;
424+ } else if (ty == FilterType.Image) {
425+ tab.checked-index = 2 ;
426+ }
427+ }
411428 }
412429
413430 td := MovingDivider {
@@ -462,6 +479,7 @@ component FilterSelector inherits VerticalLayout {
462479
463480 callback clicked (entry : FilterEntry );
464481 callback preset-clicked (preset : PresetFilter );
482+ callback remove-preset-clicked (index : int );
465483 callback back <=> back-icon.clicked;
466484
467485 spacing : Theme.spacing;
@@ -569,15 +587,29 @@ component FilterSelector inherits VerticalLayout {
569587 hbox2 := HorizontalLayout {
570588 spacing : Theme.spacing * 4 ;
571589 padding : Theme.padding * 2 ;
572- alignment : start;
590+ alignment : space-between;
591+
592+ HorizontalLayout {
593+ spacing : Theme.spacing * 4 ;
594+ alignment : start;
595+
596+ Label {
597+ text : index + 1 ;
598+ }
573599
574- Label {
575- text : index + 1 ;
600+ Label {
601+ text : preset.name;
602+ overflow : elide;
603+ }
576604 }
577605
578- Label {
579- text : preset.name;
580- overflow : elide;
606+ IconBtn {
607+ icon : Icons.delete-light;
608+ show-icon-hover-background : false ;
609+
610+ clicked => {
611+ root .remove-preset-clicked (index);
612+ }
581613 }
582614 }
583615 }
@@ -622,6 +654,10 @@ export component Filter inherits Rectangle {
622654 is-show-selector = false ;
623655 }
624656
657+ remove-preset-clicked (index) => {
658+ VEFilter.remove-preset-filter (index, FilterType.Video);
659+ }
660+
625661 back => {
626662 is-show-selector = false ;
627663 }
@@ -640,6 +676,10 @@ export component Filter inherits Rectangle {
640676 is-show-selector = false ;
641677 }
642678
679+ remove-preset-clicked (index) => {
680+ VEFilter.remove-preset-filter (index, FilterType.Audio);
681+ }
682+
643683 back => {
644684 is-show-selector = false ;
645685 }
@@ -658,6 +698,10 @@ export component Filter inherits Rectangle {
658698 is-show-selector = false ;
659699 }
660700
701+ remove-preset-clicked (index) => {
702+ VEFilter.remove-preset-filter (index, FilterType.Image);
703+ }
704+
661705 back => {
662706 is-show-selector = false ;
663707 }
0 commit comments