Skip to content

Commit 88b64cd

Browse files
committed
fix design
1 parent cfaa09d commit 88b64cd

File tree

5 files changed

+54
-68
lines changed

5 files changed

+54
-68
lines changed

src/cascadia/TerminalApp/TerminalPage.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3043,9 +3043,6 @@ namespace winrt::TerminalApp::implementation
30433043
std::wstring footer = tooManySuggestions ?
30443044
fmt::format(L"winget search --{} {}", searchOption, missingCmd) :
30453045
L"";
3046-
3047-
// TODO CARLOS: no more info bar; replace!
3048-
//ShowCommandNotFoundInfoBar(suggestions, footer);
30493046
}
30503047
#elif defined(DEBUG) || defined(_DEBUG) || defined(DBG)
30513048
//const bool tooManySuggestions = false;

src/cascadia/TerminalControl/TermControl.cpp

Lines changed: 27 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -222,52 +222,21 @@ namespace winrt::Microsoft::Terminal::Control::implementation
222222
auto quickFixBtn{ QuickFixButton() };
223223
quickFixBtn.PointerEntered({ get_weak(), &TermControl::QuickFixButton_PointerEntered });
224224
quickFixBtn.PointerExited({ get_weak(), &TermControl::QuickFixButton_PointerExited });
225-
//quickFixBtn.PointerEntered([/*this*/ weakThis = get_weak()](auto&&, auto&&) {
226-
//
227-
// // TODO CARLOS: Tried this but *control isn't the right type
228-
// // Error: Microsoft.Terminal.Control.dll!00007FFAA70B2AFF: ReturnHr(1) tid(a514) 80070057 The parameter is incorrect.
229-
// // Debugger opens WindowThread.cpp; does that mean this is the wrong thread?
230-
// if (auto control = weakThis.get())
231-
// {
232-
// if (control->_quickFixButtonCollapsible)
233-
// {
234-
// VisualStateManager::GoToState(*control, StateNormal, true);
235-
// }
236-
// }
237-
// //if (_quickFixButtonCollapsible)
238-
// //{
239-
// // // TODO CARLOS: this crashes due to "invalid param" (probably the same for pointer exited)
240-
// // VisualStateManager::GoToState(*this, StateNormal, true);
241-
// //}
242-
//});
243-
//quickFixBtn.PointerExited([/*this*/ weakThis = get_weak()](auto&&, auto&&) {
244-
// if (auto control = weakThis.get())
245-
// {
246-
// if (control->_quickFixButtonCollapsible)
247-
// {
248-
// VisualStateManager::GoToState(*control, StateCollapsed, true);
249-
// }
250-
// }
251-
// //if (_quickFixButtonCollapsible)
252-
// //{
253-
// // VisualStateManager::GoToState(*this, StateCollapsed, true);
254-
// //}
255-
//});
256225
}
257226

258227
void TermControl::QuickFixButton_PointerEntered(const IInspectable& /*sender*/, const PointerRoutedEventArgs& /*e*/)
259228
{
260229
if (!_IsClosing() && _quickFixButtonCollapsible)
261230
{
262-
VisualStateManager::GoToState(*this, StateNormal, true);
231+
VisualStateManager::GoToState(*this, StateNormal, false);
263232
}
264233
}
265234

266235
void TermControl::QuickFixButton_PointerExited(const IInspectable& /*sender*/, const PointerRoutedEventArgs& /*e*/)
267236
{
268237
if (!_IsClosing() && _quickFixButtonCollapsible)
269238
{
270-
VisualStateManager::GoToState(*this, StateCollapsed, true);
239+
VisualStateManager::GoToState(*this, StateCollapsed, false);
271240
}
272241
}
273242

@@ -2228,6 +2197,11 @@ namespace winrt::Microsoft::Terminal::Control::implementation
22282197
{
22292198
_updateSelectionMarkers(nullptr, winrt::make<UpdateSelectionMarkersEventArgs>(false));
22302199
}
2200+
2201+
if (QuickFixButton().Visibility() == Visibility::Visible)
2202+
{
2203+
ShowQuickFixMenu();
2204+
}
22312205
}
22322206

22332207
// Method Description:
@@ -3480,15 +3454,13 @@ namespace winrt::Microsoft::Terminal::Control::implementation
34803454
scaleMarker(SelectionStartMarker());
34813455
scaleMarker(SelectionEndMarker());
34823456

3483-
OutputDebugString(L"Font Size:");
3484-
OutputDebugString(std::to_wstring(QuickFixIcon().FontSize()).c_str());
3485-
OutputDebugString(L"Args Width:");
3486-
OutputDebugString(std::to_wstring(args.Width()).c_str());
3487-
OutputDebugString(L"Composition Scale X:");
3488-
OutputDebugString(std::to_wstring(dpiScale).c_str());
3489-
3490-
//QuickFixButton().Width(args.Width() / dpiScale);
3491-
QuickFixIcon().FontSize(args.Width() / dpiScale);
3457+
auto quickFixBtn = QuickFixButton();
3458+
quickFixBtn.Height(args.Height() / dpiScale);
3459+
QuickFixIcon().FontSize(std::min(static_cast<double>(args.Width() / dpiScale), GetPadding().Left));
3460+
if (quickFixBtn.Visibility() == Visibility::Visible)
3461+
{
3462+
ShowQuickFixMenu();
3463+
}
34923464
}
34933465

34943466
void TermControl::_coreRaisedNotice(const IInspectable& /*sender*/,
@@ -3763,22 +3735,31 @@ namespace winrt::Microsoft::Terminal::Control::implementation
37633735
_showContextMenuAt(_toControlOrigin(cursorPos));
37643736
}
37653737

3738+
double TermControl::CalculateQuickFixButtonWidth()
3739+
{
3740+
return GetPadding().Left;
3741+
}
3742+
3743+
double TermControl::CalculateQuickFixButtonCollapsedWidth()
3744+
{
3745+
return GetPadding().Left / 3.0;
3746+
}
3747+
37663748
void TermControl::ShowQuickFixMenu()
37673749
{
37683750
auto quickFixBtn{ QuickFixButton() };
37693751

37703752
// If the gutter is narrow, display the collapsed version
3771-
const auto& termPadding = SwapChainPanel().Margin();
3753+
const auto& termPadding = GetPadding();
37723754

3773-
_quickFixButtonCollapsible = termPadding.Left < 16;
3755+
_quickFixButtonCollapsible = termPadding.Left < CharacterDimensions().Width;
37743756
VisualStateManager::GoToState(*this, !_quickFixButtonCollapsible ? StateNormal : StateCollapsed, false);
37753757

37763758
// draw the button in the gutter
37773759
Controls::Canvas::SetLeft(quickFixBtn, -termPadding.Left);
37783760

3779-
// TODO CARLOS: update for dpi?
37803761
const auto& cursorPosInDips = CursorPositionInDips();
3781-
Controls::Canvas::SetTop(quickFixBtn, cursorPosInDips.Y - termPadding.Top);
3762+
Controls::Canvas::SetTop(quickFixBtn, cursorPosInDips.Y);
37823763
quickFixBtn.Visibility(Visibility::Visible);
37833764
}
37843765

src/cascadia/TerminalControl/TermControl.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ namespace winrt::Microsoft::Terminal::Control::implementation
5353
float SnapDimensionToGrid(const bool widthOrHeight, const float dimension);
5454

5555
Windows::Foundation::Point CursorPositionInDips();
56+
double CalculateQuickFixButtonWidth();
57+
double CalculateQuickFixButtonCollapsedWidth();
5658

5759
void WindowVisibilityChanged(const bool showOrHide);
5860

src/cascadia/TerminalControl/TermControl.idl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,8 @@ namespace Microsoft.Terminal.Control
144144
void ColorSelection(SelectionColor fg, SelectionColor bg, Microsoft.Terminal.Core.MatchMode matchMode);
145145

146146
Windows.Foundation.Point CursorPositionInDips { get; };
147+
Double CalculateQuickFixButtonWidth { get; };
148+
Double CalculateQuickFixButtonCollapsedWidth { get; };
147149

148150
void ShowContextMenu();
149151
void ShowQuickFixMenu();

src/cascadia/TerminalControl/TermControl.xaml

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1282,19 +1282,23 @@
12821282

12831283
<Button x:Name="QuickFixButton"
12841284
x:Uid="QuickFixButton"
1285-
Visibility="Collapsed"
1285+
Width="{x:Bind CalculateQuickFixButtonWidth}"
1286+
Padding="0"
1287+
HorizontalContentAlignment="Center"
1288+
VerticalContentAlignment="Center"
12861289
AllowFocusOnInteraction="False"
1287-
Padding="4"
1288-
Background="Transparent">
1290+
CornerRadius="0,5,5,0"
1291+
Style="{StaticResource AccentButtonStyle}"
1292+
Visibility="Collapsed">
12891293
<Button.Content>
12901294
<FontIcon x:Name="QuickFixIcon"
1291-
FontFamily="{ThemeResource SymbolThemeFontFamily}"
1292-
Glyph="&#xEA80;"
1293-
HorizontalAlignment="Center"
1294-
VerticalAlignment="Center"/>
1295+
HorizontalAlignment="Center"
1296+
VerticalAlignment="Center"
1297+
FontFamily="{ThemeResource SymbolThemeFontFamily}"
1298+
Glyph="&#xEA80;" />
12951299
</Button.Content>
12961300
<Button.Flyout>
1297-
<MenuFlyout x:Name="QuickFixMenu"/>
1301+
<MenuFlyout x:Name="QuickFixMenu" />
12981302
</Button.Flyout>
12991303
</Button>
13001304
</Canvas>
@@ -1377,25 +1381,25 @@
13771381
</Grid>
13781382

13791383
<VisualStateManager.VisualStateGroups>
1380-
<VisualStateGroup x:Name="QuickFixButtonStates">
1384+
<VisualStateGroup x:Name="CommonStates">
13811385
<VisualStateGroup.Transitions>
1382-
<VisualTransition From="Collapsed"
1383-
To="Normal"
1384-
GeneratedDuration="0:0:0.5"/>
1385-
<VisualTransition From="Normal"
1386-
To="Collapsed"
1387-
GeneratedDuration="0:0:0.5"/>
1386+
<VisualTransition GeneratedDuration="0:0:0.5"
1387+
From="Collapsed"
1388+
To="Normal" />
1389+
<VisualTransition GeneratedDuration="0:0:0.5"
1390+
From="Normal"
1391+
To="Collapsed" />
13881392
</VisualStateGroup.Transitions>
1389-
<VisualState x:Name="Normal"/>
1393+
<VisualState x:Name="Normal" />
13901394
<VisualState x:Name="Collapsed">
13911395
<VisualState.Setters>
1392-
<Setter Target="QuickFixButton.Width" Value="5"/>
1393-
<Setter Target="QuickFixButton.Background" Value="{ThemeResource SystemAccentColor}"/>
1396+
<Setter Target="QuickFixButton.Width" Value="{x:Bind CalculateQuickFixButtonCollapsedWidth}" />
1397+
<Setter Target="QuickFixButton.Background" Value="{ThemeResource SystemAccentColor}" />
1398+
<Setter Target="QuickFixIcon.Visibility" Value="Collapsed" />
13941399
</VisualState.Setters>
13951400
</VisualState>
13961401
</VisualStateGroup>
13971402
</VisualStateManager.VisualStateGroups>
1398-
13991403
</Grid>
14001404

14011405
</UserControl>

0 commit comments

Comments
 (0)