@@ -7,9 +7,7 @@ use crate::persistence::settings::{BarAlignment, BarSettings, clamp_bar_height};
77use crate :: ui:: pages:: config:: ConfigMessage ;
88use crate :: ui:: pages:: visuals:: { VisualsMessage , create_settings_panel} ;
99use crate :: ui:: theme;
10- use crate :: visuals:: registry:: {
11- VisualContent , VisualId , VisualKind , VisualMetadata , VisualSlotSnapshot ,
12- } ;
10+ use crate :: visuals:: registry:: { VisualContent , VisualKind , VisualMetadata , VisualSlotSnapshot } ;
1311use iced:: widget:: { container, mouse_area, text} ;
1412use iced:: { Element , Length , Size , Task , exit, window} ;
1513use iced_layershell:: actions:: OutputSnapshotCallback ;
@@ -142,7 +140,6 @@ pub(super) struct BarResizeState {
142140}
143141
144142pub ( super ) struct PopoutWindow {
145- pub visual_id : VisualId ,
146143 pub kind : VisualKind ,
147144 pub original_index : usize ,
148145 pub cached : Option < ( VisualMetadata , VisualContent ) > ,
@@ -152,18 +149,15 @@ impl PopoutWindow {
152149 pub fn sync_from_snapshot ( & mut self , snapshot : & [ VisualSlotSnapshot ] ) {
153150 self . cached = snapshot
154151 . iter ( )
155- . find ( |slot| slot. id == self . visual_id && slot. enabled )
152+ . find ( |slot| slot. kind == self . kind && slot. enabled )
156153 . map ( |slot| ( slot. metadata , slot. content . clone ( ) ) ) ;
157154 }
158155
159156 pub fn view ( & self ) -> Element < ' _ , VisualsMessage > {
160157 let Some ( ( _, content) ) = & self . cached else {
161158 return fill ! ( text( "" ) ) . into ( ) ;
162159 } ;
163- let msg = VisualsMessage :: SettingsRequested {
164- visual_id : self . visual_id ,
165- kind : self . kind ,
166- } ;
160+ let msg = VisualsMessage :: SettingsRequested ( self . kind ) ;
167161 mouse_area ( fill ! ( content. render( ) ) )
168162 . on_right_press ( msg)
169163 . into ( )
@@ -175,24 +169,15 @@ impl UiApp {
175169 let Some ( ( _, panel) ) = self . settings_window . as_mut ( ) else {
176170 return ;
177171 } ;
178- let visual_id = panel. visual_id ;
179- let snapshot = self . visual_manager . snapshot ( ) ;
180- let Some ( kind) = snapshot. iter ( ) . find ( |s| s. id == visual_id) . map ( |s| s. kind ) else {
181- return ;
182- } ;
183- * panel = create_settings_panel ( visual_id, kind, & self . visual_manager ) ;
172+ * panel = create_settings_panel ( panel. kind , & self . visual_manager ) ;
184173 }
185174
186- pub ( super ) fn open_settings_window (
187- & mut self ,
188- visual_id : VisualId ,
189- kind : VisualKind ,
190- ) -> Task < Message > {
191- let new_panel = create_settings_panel ( visual_id, kind, & self . visual_manager ) ;
175+ pub ( super ) fn open_settings_window ( & mut self , kind : VisualKind ) -> Task < Message > {
176+ let new_panel = create_settings_panel ( kind, & self . visual_manager ) ;
192177 let previous = self . settings_window . take ( ) ;
193178 if previous
194179 . as_ref ( )
195- . is_some_and ( |( _, panel) | panel. visual_id == visual_id )
180+ . is_some_and ( |( _, panel) | panel. kind == kind )
196181 {
197182 self . settings_window = previous. map ( |( id, _) | ( id, new_panel) ) ;
198183 return Task :: none ( ) ;
@@ -206,29 +191,23 @@ impl UiApp {
206191 }
207192 }
208193
209- pub ( super ) fn open_popout_window (
210- & mut self ,
211- visual_id : VisualId ,
212- kind : VisualKind ,
213- ) -> Task < Message > {
194+ pub ( super ) fn open_popout_window ( & mut self , kind : VisualKind ) -> Task < Message > {
214195 if self
215196 . popout_windows
216197 . values ( )
217- . any ( |popout| popout. visual_id == visual_id )
198+ . any ( |popout| popout. kind == kind )
218199 {
219200 return Task :: none ( ) ;
220201 }
221202 let snapshot = self . visual_manager . snapshot ( ) ;
222- let Some ( ( index, slot) ) = snapshot. iter ( ) . enumerate ( ) . find ( |( _, s) | s. id == visual_id)
223- else {
203+ let Some ( ( index, slot) ) = snapshot. iter ( ) . enumerate ( ) . find ( |( _, s) | s. kind == kind) else {
224204 return Task :: none ( ) ;
225205 } ;
226206 let window_size = popout_window_size ( & slot. metadata ) ;
227207 let use_decorations = self . settings_handle . borrow ( ) . data . decorations ;
228208 let ( new_id, open_task) =
229209 open_base_window ( self . use_layershell , window_size, use_decorations) ;
230210 let mut popout = PopoutWindow {
231- visual_id,
232211 kind,
233212 original_index : index,
234213 cached : None ,
@@ -249,8 +228,8 @@ impl UiApp {
249228 Task :: none ( )
250229 }
251230
252- pub ( super ) fn popped_out_ids ( & self ) -> Vec < VisualId > {
253- self . popout_windows . values ( ) . map ( |w| w. visual_id ) . collect ( )
231+ pub ( super ) fn popped_out_kinds ( & self ) -> Vec < VisualKind > {
232+ self . popout_windows . values ( ) . map ( |w| w. kind ) . collect ( )
254233 }
255234
256235 pub ( super ) fn sync_all_windows ( & mut self ) -> Task < Message > {
@@ -260,7 +239,7 @@ impl UiApp {
260239 . take_if ( |( _, panel) | {
261240 !snapshot
262241 . iter ( )
263- . any ( |slot| slot. id == panel. visual_id && slot. enabled )
242+ . any ( |slot| slot. kind == panel. kind && slot. enabled )
264243 } )
265244 . map ( |( id, _) | window:: close :: < Message > ( id) ) ;
266245 self . popout_windows
@@ -272,7 +251,7 @@ impl UiApp {
272251 . map ( |( id, _) | id)
273252 . collect ( ) ;
274253 self . visuals_page
275- . apply_snapshot_excluding ( & snapshot, & self . popped_out_ids ( ) ) ;
254+ . apply_snapshot_excluding ( & snapshot, & self . popped_out_kinds ( ) ) ;
276255 Task :: batch (
277256 close_settings_task
278257 . into_iter ( )
@@ -285,22 +264,22 @@ impl UiApp {
285264 return "OpenMeters" . into ( ) ;
286265 }
287266
288- let ( visual_id , suffix) = if let Some ( ( _, panel) ) = self
267+ let ( kind , suffix) = if let Some ( ( _, panel) ) = self
289268 . settings_window
290269 . as_ref ( )
291270 . filter ( |( id, _) | * id == window_id)
292271 {
293- ( panel. visual_id , " settings" )
272+ ( panel. kind , " settings" )
294273 } else if let Some ( popout) = self . popout_windows . get ( & window_id) {
295- ( popout. visual_id , "" )
274+ ( popout. kind , "" )
296275 } else {
297276 return "OpenMeters" . into ( ) ;
298277 } ;
299278
300279 self . visual_manager
301280 . snapshot ( )
302281 . iter ( )
303- . find ( |s| s. id == visual_id )
282+ . find ( |s| s. kind == kind )
304283 . map_or_else (
305284 || "OpenMeters" . into ( ) ,
306285 |s| format ! ( "{}{} - OpenMeters" , s. metadata. display_name, suffix) ,
@@ -334,7 +313,7 @@ impl UiApp {
334313 if let Some ( popout) = self . popout_windows . remove ( & source_window) {
335314 self . visual_manager
336315 . borrow_mut ( )
337- . restore_position ( popout. visual_id , popout. original_index ) ;
316+ . move_to ( popout. kind , popout. original_index ) ;
338317 self . sync_visuals_page ( ) ;
339318 self . settings_handle . update ( |settings| {
340319 settings. data . visuals . order = self
@@ -346,18 +325,18 @@ impl UiApp {
346325 } ) ;
347326 return window:: close ( source_window) ;
348327 }
349- let Some ( ( id , kind) ) = self . visuals_page . hovered_visual ( ) else {
328+ let Some ( kind) = self . visuals_page . hovered_visual ( ) else {
350329 return Task :: none ( ) ;
351330 } ;
352- let task = self . open_popout_window ( id , kind) ;
331+ let task = self . open_popout_window ( kind) ;
353332 self . sync_visuals_page ( ) ;
354333 task
355334 }
356335
357336 pub ( super ) fn sync_visuals_page ( & mut self ) {
358337 let snapshot = self . visual_manager . snapshot ( ) ;
359338 self . visuals_page
360- . apply_snapshot_excluding ( & snapshot, & self . popped_out_ids ( ) ) ;
339+ . apply_snapshot_excluding ( & snapshot, & self . popped_out_kinds ( ) ) ;
361340 }
362341
363342 pub ( super ) fn apply_bar_layout (
@@ -511,15 +490,10 @@ impl UiApp {
511490 let Some ( ( old_id, panel) ) = self . settings_window . take ( ) else {
512491 return Task :: none ( ) ;
513492 } ;
514- let visual_id = panel. visual_id ;
515- let snapshot = self . visual_manager . snapshot ( ) ;
516- let Some ( slot) = snapshot. iter ( ) . find ( |s| s. id == visual_id) else {
517- return window:: close ( old_id) ;
518- } ;
519493 let ( new_id, open_task) = open_settings_base_window ( self . use_layershell ) ;
520494 self . settings_window = Some ( (
521495 new_id,
522- create_settings_panel ( visual_id , slot . kind , & self . visual_manager ) ,
496+ create_settings_panel ( panel . kind , & self . visual_manager ) ,
523497 ) ) ;
524498 Task :: batch ( [ open_task, window:: close ( old_id) ] )
525499 }
0 commit comments