@@ -99,7 +99,6 @@ type PresetEditWindow struct {
9999 peakThreshold float32
100100 playbackState * audio.PlaybackState
101101
102- eventSub chan events.Event
103102 filteredEventSub * eventbus.FilteredSubscription
104103}
105104
@@ -112,7 +111,6 @@ func NewPresetEditWindow(p *preset.Preset, audioMgr *audio.AudioManager) *Preset
112111 preset : p ,
113112 waveformStates : make (map [string ]* WaveformState ),
114113 peakThreshold : 0.5 , // Default to 50% threshold
115- eventSub : make (chan events.Event , 100 ),
116114 }
117115
118116 windowTitle := "Preset Editor"
@@ -242,19 +240,17 @@ func NewPresetEditWindow(p *preset.Preset, audioMgr *audio.AudioManager) *Preset
242240 events .AudioPlaybackStoppedKey ,
243241 events .AudioPlaybackFinishedKey ,
244242 events .PadGridSelectKey ,
243+ events .ComboboxSelectionChangeEventKey ,
244+ events .ComponentClickEventKey ,
245+ events .AudioMetadataLoadedKey ,
246+ events .AudioSamplesLoadedKey ,
247+ events .AudioLoadFailedKey ,
245248 // TODO: Add MIDI events here when ready:
246249 // events.MidiPlaybackNoteOnKey,
247250 // events.MidiPlaybackNoteOffKey,
248251 // ...
249252 )
250253
251- // Subscribe to non-owned events (UI interactions, file loading)
252- bus .Subscribe (events .ComboboxSelectionChangeEventKey , uuid , w .eventSub )
253- bus .Subscribe (events .ComponentClickEventKey , uuid , w .eventSub )
254- bus .Subscribe (events .AudioMetadataLoadedKey , uuid , w .eventSub )
255- bus .Subscribe (events .AudioSamplesLoadedKey , uuid , w .eventSub )
256- bus .Subscribe (events .AudioLoadFailedKey , uuid , w .eventSub )
257-
258254 return w
259255}
260256
@@ -272,6 +268,12 @@ func (w *PresetEditWindow) drainEvents() {
272268 cmd = component.UpdateCmd {Type : cmdHandleAudioStartStop , Data : event }
273269 case events .PadGridSelectKey :
274270 cmd = component.UpdateCmd {Type : cmdHandlePadGridClick , Data : event }
271+ case events .ComboboxSelectionChangeEventKey :
272+ cmd = component.UpdateCmd {Type : cmdHandleGridSizeChange , Data : event }
273+ case events .ComponentClickEventKey :
274+ cmd = component.UpdateCmd {Type : cmdHandleWaveformClick , Data : event }
275+ case events .AudioMetadataLoadedKey , events .AudioSamplesLoadedKey , events .AudioLoadFailedKey :
276+ cmd = component.UpdateCmd {Type : cmdHandleAudioLoad , Data : event }
275277 // TODO: Add MIDI events
276278 // case events.MidiPlaybackNoteOnKey:
277279 // cmd = UpdateCmd{Type: cmdHandleMidiNoteOn, Data: event}
@@ -1422,21 +1424,11 @@ func (w *PresetEditWindow) preloadPresetWavs(p *preset.Preset) {
14221424}
14231425
14241426func (w * PresetEditWindow ) Destroy () {
1425- // Unsubscribe from filtered subscriptions
1427+ // Unsubscribe from filtered subscriptions (handles all event types)
14261428 if w .filteredEventSub != nil {
14271429 w .filteredEventSub .Unsubscribe ()
14281430 }
14291431
1430- // Unsubscribe from legacy events (non-owned events)
1431- bus := eventbus .Bus
1432- uuid := w .UUID ()
1433- bus .Unsubscribe (events .PadGridSelectKey , uuid )
1434- bus .Unsubscribe (events .ComboboxSelectionChangeEventKey , uuid )
1435- bus .Unsubscribe (events .ComponentClickEventKey , uuid )
1436- bus .Unsubscribe (events .AudioMetadataLoadedKey , uuid )
1437- bus .Unsubscribe (events .AudioSamplesLoadedKey , uuid )
1438- bus .Unsubscribe (events .AudioLoadFailedKey , uuid )
1439-
14401432 // Destroy children
14411433 w .Components .BoundsStartLabel .Destroy ()
14421434 w .Components .BoundsEndLabel .Destroy ()
0 commit comments