Clear selection state when exiting select mode (#161267)
Fixes https://github.com/flutter/devtools/issues/8654
This commit is contained in:
parent
4b23b81828
commit
322f7af5fb
@ -1090,7 +1090,7 @@ mixin WidgetInspectorService {
|
|||||||
getter: () async => WidgetsBinding.instance.debugShowWidgetInspectorOverride,
|
getter: () async => WidgetsBinding.instance.debugShowWidgetInspectorOverride,
|
||||||
setter: (bool value) {
|
setter: (bool value) {
|
||||||
if (WidgetsBinding.instance.debugShowWidgetInspectorOverride != value) {
|
if (WidgetsBinding.instance.debugShowWidgetInspectorOverride != value) {
|
||||||
WidgetsBinding.instance.debugShowWidgetInspectorOverride = value;
|
_changeWidgetSelectionMode(value, notifyStateChange: false);
|
||||||
}
|
}
|
||||||
return Future<void>.value();
|
return Future<void>.value();
|
||||||
},
|
},
|
||||||
@ -1633,9 +1633,15 @@ mixin WidgetInspectorService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Changes whether widget selection mode is [enabled].
|
/// Changes whether widget selection mode is [enabled].
|
||||||
void _changeWidgetSelectionMode(bool enabled) {
|
void _changeWidgetSelectionMode(bool enabled, {bool notifyStateChange = true}) {
|
||||||
WidgetsBinding.instance.debugShowWidgetInspectorOverride = enabled;
|
WidgetsBinding.instance.debugShowWidgetInspectorOverride = enabled;
|
||||||
_postExtensionStateChangedEvent(WidgetInspectorServiceExtensions.show.name, enabled);
|
if (notifyStateChange) {
|
||||||
|
_postExtensionStateChangedEvent(WidgetInspectorServiceExtensions.show.name, enabled);
|
||||||
|
}
|
||||||
|
if (!enabled) {
|
||||||
|
// If turning off selection mode, clear the current selection.
|
||||||
|
selection.currentElement = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a DevTools uri linking to a specific element on the inspector page.
|
/// Returns a DevTools uri linking to a specific element on the inspector page.
|
||||||
@ -3056,7 +3062,7 @@ class InspectorSelection with ChangeNotifier {
|
|||||||
}
|
}
|
||||||
if (currentElement != element) {
|
if (currentElement != element) {
|
||||||
_currentElement = element;
|
_currentElement = element;
|
||||||
_current = element!.findRenderObject();
|
_current = element?.findRenderObject();
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -502,15 +502,8 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService {
|
|||||||
await tester.tap(find.byKey(exitWidgetSelectionButtonKey));
|
await tester.tap(find.byKey(exitWidgetSelectionButtonKey));
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
|
|
||||||
// Tap on the top button and verify it is not selected in the Inspector.
|
// Ensure the inspector selection is now cleared.
|
||||||
await tester.tap(find.text('TOP'));
|
expect(WidgetInspectorService.instance.selection.current, isNull);
|
||||||
expect(log, equals(<String>['top']));
|
|
||||||
|
|
||||||
// Ensure the inspector selection is still BOTTOM (not TOP).
|
|
||||||
expect(
|
|
||||||
paragraphText(WidgetInspectorService.instance.selection.current! as RenderParagraph),
|
|
||||||
equals('BOTTOM'),
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
testWidgets('WidgetInspector non-invertible transform regression test', (
|
testWidgets('WidgetInspector non-invertible transform regression test', (
|
||||||
|
Loading…
x
Reference in New Issue
Block a user