Skip to content

Commit 913e034

Browse files
authored
UWP - Add new property to the renderer (#8806)
1 parent 608e213 commit 913e034

9 files changed

Lines changed: 48 additions & 20 deletions

File tree

source/uwp/Renderer/idl/AdaptiveCards.Rendering.Uwp.idl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ namespace AdaptiveCards
5454
String OverflowButtonText;
5555
String OverflowButtonAccessibilityText;
5656

57+
Boolean AddSelectActionMargin;
58+
5759
void SetFixedDimensions(UInt32 desiredWidth, UInt32 desiredHeight);
5860
void ResetFixedDimensions();
5961

source/uwp/SharedRenderer/lib/ActionHelpers.cpp

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -509,31 +509,37 @@ namespace AdaptiveCards::Rendering::Xaml_Rendering::ActionHelpers
509509
auto button = CreateButton(action);
510510
button.Content(elementToWrap);
511511

512-
uint32_t cardPadding = 0;
513-
if (fullWidth)
514-
{
515-
cardPadding = hostConfig.Spacing().Padding();
516-
}
512+
auto hostConfigImpl = peek_innards<winrt::implementation::AdaptiveHostConfig>(hostConfig);
513+
auto addSelectActionMargin = hostConfigImpl->AddSelectActionMargin();
517514

518-
// We want the hit target to equally split the vertical space above and below the current item.
519-
// However, all we know is the spacing of the current item, which only applies to the spacing above.
520-
// We don't know what the spacing of the NEXT element will be, so we can't calculate the correct spacing
521-
// below. For now, we'll simply assume the bottom spacing is the same as the top. NOTE: Only apply spacings
522-
// (padding, margin) for adaptive card elements to avoid adding spacings to card-level selectAction.
523-
if (adaptiveCardElement)
515+
if (addSelectActionMargin)
524516
{
525-
auto elementSpacing = adaptiveCardElement.Spacing();
526-
uint32_t spacingSize = GetSpacingSizeFromSpacing(hostConfig, elementSpacing);
517+
uint32_t cardPadding = 0;
518+
if (fullWidth)
519+
{
520+
cardPadding = hostConfig.Spacing().Padding();
521+
}
522+
523+
// We want the hit target to equally split the vertical space above and below the current item.
524+
// However, all we know is the spacing of the current item, which only applies to the spacing above.
525+
// We don't know what the spacing of the NEXT element will be, so we can't calculate the correct spacing
526+
// below. For now, we'll simply assume the bottom spacing is the same as the top. NOTE: Only apply spacings
527+
// (padding, margin) for adaptive card elements to avoid adding spacings to card-level selectAction.
528+
if (adaptiveCardElement)
529+
{
530+
auto elementSpacing = adaptiveCardElement.Spacing();
531+
uint32_t spacingSize = GetSpacingSizeFromSpacing(hostConfig, elementSpacing);
527532

528-
double topBottomPadding = spacingSize / 2.0;
533+
double topBottomPadding = spacingSize / 2.0;
529534

530-
// For button padding, we apply the cardPadding and topBottomPadding (and then we negate these in the margin)
531-
button.Padding({(double)cardPadding, topBottomPadding, (double)cardPadding, topBottomPadding});
535+
// For button padding, we apply the cardPadding and topBottomPadding (and then we negate these in the margin)
536+
button.Padding({(double)cardPadding, topBottomPadding, (double)cardPadding, topBottomPadding});
532537

533-
double negativeCardMargin = cardPadding * -1.0;
534-
double negativeTopBottomMargin = topBottomPadding * -1.0;
538+
double negativeCardMargin = cardPadding * -1.0;
539+
double negativeTopBottomMargin = topBottomPadding * -1.0;
535540

536-
button.Margin({negativeCardMargin, negativeTopBottomMargin, negativeCardMargin, negativeTopBottomMargin});
541+
button.Margin({negativeCardMargin, negativeTopBottomMargin, negativeCardMargin, negativeTopBottomMargin});
542+
}
537543
}
538544

539545
// Style the hit target button

source/uwp/SharedRenderer/lib/AdaptiveCardRendererComponent.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,16 @@ namespace winrt::AdaptiveCards::Rendering::Xaml_Rendering::implementation
7878
GetHostConfig()->OverflowMaxActions = overflowMaxActions;
7979
}
8080

81+
bool AdaptiveCardRenderer::AddSelectActionMargin()
82+
{
83+
return GetHostConfig()->AddSelectActionMargin;
84+
}
85+
86+
void AdaptiveCardRenderer::AddSelectActionMargin(bool addSelectActionMargin)
87+
{
88+
GetHostConfig()->AddSelectActionMargin = addSelectActionMargin;
89+
}
90+
8191
winrt::RenderedAdaptiveCard AdaptiveCardRenderer::RenderAdaptiveCard(winrt::AdaptiveCard const& adaptiveCard)
8292
{
8393
auto renderedCard = winrt::make_self<implementation::RenderedAdaptiveCard>();

source/uwp/SharedRenderer/lib/AdaptiveCardRendererComponent.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ namespace winrt::AdaptiveCards::Rendering::Xaml_Rendering::implementation
7070
return GetHostConfig()->OverflowButtonAccessibilityText = text;
7171
}
7272

73+
void AddSelectActionMargin(bool addSelectActionMargin);
74+
bool AddSelectActionMargin();
75+
7376
winrt::RenderedAdaptiveCard RenderAdaptiveCard(winrt::AdaptiveCard const& adaptiveCard);
7477
winrt::RenderedAdaptiveCard RenderAdaptiveCardFromJsonString(hstring const& adaptiveJson);
7578
winrt::RenderedAdaptiveCard RenderAdaptiveCardFromJson(winrt::JsonObject const& adaptiveJson);

source/uwp/SharedRenderer/lib/AdaptiveHostConfig.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ namespace winrt::AdaptiveCards::Rendering::Xaml_Rendering::implementation
6666
TextBlock{winrt::make<implementation::AdaptiveTextBlockConfig>(sharedHostConfig.GetTextBlock())},
6767
TextStyles{winrt::make<implementation::AdaptiveTextStylesConfig>(sharedHostConfig.GetTextStyles())},
6868
Table{winrt::make<implementation::AdaptiveTableConfig>(sharedHostConfig.GetTable())}, OverflowMaxActions{false},
69-
OverflowButtonText{L"..."}, OverflowButtonAccessibilityText{L"More Actions"}
69+
OverflowButtonText{L"..."}, OverflowButtonAccessibilityText{L"More Actions"}, AddSelectActionMargin{true}
7070
{
7171
}
7272
}

source/uwp/SharedRenderer/lib/AdaptiveHostConfig.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ namespace winrt::AdaptiveCards::Rendering::Xaml_Rendering::implementation
3535
property<bool> OverflowMaxActions;
3636
property<hstring> OverflowButtonText;
3737
property<hstring> OverflowButtonAccessibilityText;
38+
property<bool> AddSelectActionMargin;
3839

3940
// ITypePeek method
4041
void* PeekAt(REFIID riid) override { return PeekHelper(riid, this); }

source/uwp/SharedVisualizer/ViewModel/DocumentViewModel.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,9 @@ public static void InitializeRenderer(AdaptiveHostConfig hostConfig)
255255

256256
_renderer.OverflowMaxActions = true;
257257

258+
// Uncomment the line below to remove margins from selectAction. Default is `true`
259+
//_renderer.AddSelectActionMargin = false;
260+
258261
// Add a feature representing this version of the visualizer. used for test cards.
259262
_renderer.FeatureRegistration.Set("acTest", "1.0");
260263

source/uwp/winui3/Renderer/AdaptiveCardRenderer.vcxproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@
124124
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
125125
<ClCompile>
126126
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
127+
<DebugInformationFormat Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ProgramDatabase</DebugInformationFormat>
127128
</ClCompile>
128129
</ItemDefinitionGroup>
129130
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">

source/uwp/winui3/Renderer/idl/AdaptiveCards.Rendering.WinUI3.idl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ namespace AdaptiveCards
4848
String OverflowButtonText;
4949
String OverflowButtonAccessibilityText;
5050

51+
Boolean AddSelectActionMargin;
52+
5153
void SetFixedDimensions(UInt32 desiredWidth, UInt32 desiredHeight);
5254
void ResetFixedDimensions();
5355

0 commit comments

Comments
 (0)