@@ -113,6 +113,7 @@ impl LineList<'_> {
113
113
& LineOpacity ,
114
114
& LineSpeed ,
115
115
) > ,
116
+ Query < & Parent > ,
116
117
ResMut < SelectedLine > ,
117
118
EventWriter < DoCommandEvent > ,
118
119
Res < Persistent < EditorSettings > > ,
@@ -122,6 +123,7 @@ impl LineList<'_> {
122
123
note_query,
123
124
event_query,
124
125
query,
126
+ parent_query,
125
127
mut selected_line,
126
128
mut do_command_event,
127
129
editor_settings,
@@ -131,6 +133,10 @@ impl LineList<'_> {
131
133
{
132
134
let selected = selected_line. 0 == entity;
133
135
136
+ let under_selected_node = parent_query
137
+ . iter_ancestors ( entity)
138
+ . any ( |ancestor| ancestor == selected_line. 0 ) ;
139
+
134
140
ui. horizontal ( |ui| {
135
141
ui. add_space ( level as f32 * 10.0 ) ;
136
142
@@ -153,21 +159,21 @@ impl LineList<'_> {
153
159
) ) ) ;
154
160
ui. close_menu ( ) ;
155
161
}
156
- #[ allow( clippy:: collapsible_if) ]
157
- if parent. is_some ( ) {
158
- if ui
159
- . button ( t ! ( "tab.line_list.hierarchy.move_to_root" ) )
160
- . clicked ( )
161
- {
162
- do_command_event. send ( DoCommandEvent (
163
- EditorCommand :: MoveLineAsChild ( MoveLineAsChild :: new (
164
- entity, None ,
165
- ) ) ,
166
- ) ) ;
167
- ui. close_menu ( ) ;
168
- }
162
+ } ) ;
163
+ #[ allow( clippy:: collapsible_if) ]
164
+ if parent. is_some ( ) {
165
+ if ui
166
+ . button ( t ! ( "tab.line_list.hierarchy.move_to_root" ) )
167
+ . clicked ( )
168
+ {
169
+ do_command_event. send ( DoCommandEvent ( EditorCommand :: MoveLineAsChild (
170
+ MoveLineAsChild :: new ( entity, None ) ,
171
+ ) ) ) ;
172
+ ui. close_menu ( ) ;
169
173
}
170
- ui. separator ( ) ;
174
+ }
175
+ ui. separator ( ) ;
176
+ ui. add_enabled_ui ( !under_selected_node && !selected, |ui| {
171
177
if ui. button ( t ! ( "tab.line_list.remove" ) ) . clicked ( ) {
172
178
do_command_event. send ( DoCommandEvent ( EditorCommand :: RemoveLine (
173
179
RemoveLine :: new ( entity) ,
0 commit comments