Fix assistant artifact toggle overlap
This commit is contained in:
parent
f61548007c
commit
b59bc37f2f
@ -34,6 +34,7 @@ const double _assistantHorizontalPaneGap = 2;
|
||||
const double _assistantVerticalResizeHandleHeight = 10;
|
||||
const double _assistantArtifactPaneMinWidth = 280;
|
||||
const double _assistantArtifactPaneDefaultWidth = 360;
|
||||
const double _assistantCollapsedArtifactToggleClearance = 56;
|
||||
|
||||
typedef AssistantClipboardImageReader = Future<XFile?> Function();
|
||||
|
||||
@ -446,6 +447,9 @@ class _AssistantPageState extends State<AssistantPage> {
|
||||
currentTask: currentTask,
|
||||
items: timelineItems,
|
||||
messageViewMode: controller.currentAssistantMessageViewMode,
|
||||
topTrailingInset: _artifactPaneCollapsed
|
||||
? _assistantCollapsedArtifactToggleClearance
|
||||
: 0,
|
||||
scrollController: _conversationController,
|
||||
onOpenDetail: widget.onOpenDetail,
|
||||
onFocusComposer: _focusComposer,
|
||||
@ -605,8 +609,8 @@ class _AssistantPageState extends State<AssistantPage> {
|
||||
Positioned.fill(child: panel),
|
||||
if (_artifactPaneCollapsed)
|
||||
Positioned(
|
||||
right: AppSpacing.sm,
|
||||
top: AppSpacing.lg,
|
||||
right: 0,
|
||||
top: 0,
|
||||
child: AssistantArtifactSidebarRevealButton(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
@ -1819,6 +1823,7 @@ class _ConversationArea extends StatelessWidget {
|
||||
required this.currentTask,
|
||||
required this.items,
|
||||
required this.messageViewMode,
|
||||
required this.topTrailingInset,
|
||||
required this.scrollController,
|
||||
required this.onOpenDetail,
|
||||
required this.onFocusComposer,
|
||||
@ -1832,6 +1837,7 @@ class _ConversationArea extends StatelessWidget {
|
||||
final _AssistantTaskEntry currentTask;
|
||||
final List<_TimelineItem> items;
|
||||
final AssistantMessageViewMode messageViewMode;
|
||||
final double topTrailingInset;
|
||||
final ScrollController scrollController;
|
||||
final ValueChanged<DetailPanelData> onOpenDetail;
|
||||
final VoidCallback onFocusComposer;
|
||||
@ -1852,7 +1858,7 @@ class _ConversationArea extends StatelessWidget {
|
||||
child: Column(
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.fromLTRB(10, 8, 10, 8),
|
||||
padding: EdgeInsets.fromLTRB(10, 8, 10 + topTrailingInset, 8),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
|
||||
@ -425,7 +425,10 @@ class AssistantArtifactSidebarRevealButton extends StatelessWidget {
|
||||
],
|
||||
),
|
||||
borderRadius: BorderRadius.circular(AppRadius.sidebar),
|
||||
border: Border.all(color: palette.chromeStroke),
|
||||
border: Border.all(
|
||||
color: palette.chromeStroke.withValues(alpha: 0.88),
|
||||
width: 0.9,
|
||||
),
|
||||
boxShadow: [palette.chromeShadowAmbient],
|
||||
),
|
||||
child: Icon(
|
||||
|
||||
@ -266,6 +266,36 @@ void main() {
|
||||
expect(find.byKey(const Key('assistant-artifact-pane')), findsNothing);
|
||||
});
|
||||
|
||||
testWidgets(
|
||||
'AssistantPage keeps the collapsed artifact toggle clear of top toolbar controls',
|
||||
(WidgetTester tester) async {
|
||||
final controller = await createTestController(tester);
|
||||
|
||||
await pumpPage(
|
||||
tester,
|
||||
child: AssistantPage(controller: controller, onOpenDetail: (_) {}),
|
||||
platform: TargetPlatform.macOS,
|
||||
);
|
||||
|
||||
final toggle = find.byKey(const Key('assistant-artifact-pane-toggle'));
|
||||
final viewMode = find.byKey(
|
||||
const Key('assistant-message-view-mode-button'),
|
||||
);
|
||||
final connectionChip = find.byKey(const Key('assistant-connection-chip'));
|
||||
|
||||
expect(toggle, findsOneWidget);
|
||||
expect(viewMode, findsOneWidget);
|
||||
expect(connectionChip, findsOneWidget);
|
||||
|
||||
final toggleRect = tester.getRect(toggle);
|
||||
final viewModeRect = tester.getRect(viewMode);
|
||||
final connectionRect = tester.getRect(connectionChip);
|
||||
|
||||
expect(toggleRect.overlaps(viewModeRect), isFalse);
|
||||
expect(toggleRect.overlaps(connectionRect), isFalse);
|
||||
},
|
||||
);
|
||||
|
||||
testWidgets(
|
||||
'AssistantPage shows Single Agent provider selector on the right',
|
||||
(WidgetTester tester) async {},
|
||||
@ -567,7 +597,9 @@ void main() {
|
||||
await _waitForCondition(
|
||||
() =>
|
||||
controller
|
||||
.assistantImportedSkillsForSession(controller.currentSessionKey)
|
||||
.assistantImportedSkillsForSession(
|
||||
controller.currentSessionKey,
|
||||
)
|
||||
.length ==
|
||||
3,
|
||||
);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user