@@ -100,37 +100,8 @@ where
100
100
101
101
self . sync_state ( & mut meta) ;
102
102
103
- let mut last_layout_events = vec ! [ ] ;
104
- if let Some ( events) = & meta. last_layout_events {
105
- last_layout_events = events. clone ( ) ;
106
- } ;
107
-
108
103
let not_placed = & self . g . new_nodes_no_location ( ) . iter ( ) . copied ( ) . collect ( ) ;
109
-
110
- GraphView :: < N , E , Ty , Ix , Nd , Ed , S , L > :: sync_layout (
111
- ui,
112
- self . g ,
113
- last_layout_events. as_slice ( ) ,
114
- not_placed,
115
- ) ;
116
-
117
- meta. last_layout_events = if let Some ( events) = meta. last_layout_events {
118
- Some (
119
- events
120
- . iter ( )
121
- . cloned ( )
122
- . filter_map ( |el| {
123
- if el == LayoutEvent :: NextCalledOnce {
124
- return None ;
125
- }
126
-
127
- Some ( el)
128
- } )
129
- . collect ( ) ,
130
- )
131
- } else {
132
- Some ( vec ! [ LayoutEvent :: NextCalledOnce , LayoutEvent :: NextCalled ] )
133
- } ;
104
+ GraphView :: < N , E , Ty , Ix , Nd , Ed , S , L > :: sync_layout ( ui, & mut meta, self . g , not_placed) ;
134
105
135
106
let ( resp, p) = ui. allocate_painter ( ui. available_size ( ) , Sense :: click_and_drag ( ) ) ;
136
107
self . handle_fit_to_screen ( & resp, & mut meta) ;
@@ -232,18 +203,41 @@ where
232
203
233
204
fn sync_layout (
234
205
ui : & mut Ui ,
206
+ meta : & mut Metadata ,
235
207
g : & mut Graph < N , E , Ty , Ix , Dn , De > ,
236
- last_layout_events : & [ LayoutEvent ] ,
237
208
not_placed : & HashSet < NodeIndex < Ix > > ,
238
209
) {
239
210
ui. data_mut ( |data| {
240
211
let state = data
241
212
. get_persisted :: < S > ( Id :: new ( KEY_LAYOUT ) )
242
213
. unwrap_or_default ( ) ;
243
214
244
- let mut layout = L :: from_state ( state, last_layout_events) ;
215
+ let mut last_layout_events = vec ! [ ] ;
216
+ if let Some ( events) = & meta. last_layout_events {
217
+ last_layout_events. clone_from ( events) ;
218
+ } ;
219
+
220
+ let mut layout = L :: from_state ( state, last_layout_events. as_slice ( ) ) ;
245
221
layout. next ( g, not_placed) ;
246
222
223
+ meta. last_layout_events = if let Some ( events) = & meta. last_layout_events {
224
+ Some (
225
+ events
226
+ . iter ( )
227
+ . cloned ( )
228
+ . filter_map ( |el| {
229
+ if el == LayoutEvent :: NextCalledOnce {
230
+ return None ;
231
+ }
232
+
233
+ Some ( el)
234
+ } )
235
+ . collect ( ) ,
236
+ )
237
+ } else {
238
+ Some ( vec ! [ LayoutEvent :: NextCalledOnce , LayoutEvent :: NextCalled ] )
239
+ } ;
240
+
247
241
data. insert_persisted ( Id :: new ( KEY_LAYOUT ) , layout. state ( ) ) ;
248
242
} ) ;
249
243
}
0 commit comments