Skip to content

Commit bab45aa

Browse files
committed
Merge branch 'develop' into main
2 parents ac024bb + 0542450 commit bab45aa

File tree

6 files changed

+127
-119
lines changed

6 files changed

+127
-119
lines changed

.github/dependabot.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# To get started with Dependabot version updates, you'll need to specify which
2+
# package ecosystems to update and where the package manifests are located.
3+
# Please see the documentation for all configuration options:
4+
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5+
6+
version: 2
7+
updates:
8+
- package-ecosystem: "nuget" # See documentation for possible values
9+
directory: "/" # Location of package manifests
10+
schedule:
11+
interval: "monthly"
12+
open-pull-requests-limit: 10

global.json

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/Directory.build.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121

2222
<!-- Add the references for all projects and targets -->
2323
<ItemGroup>
24-
<PackageReference Include="JetBrains.Annotations" Version="2021.*" PrivateAssets="All" IncludeAssets="build;compile" />
25-
<PackageReference Include="WpfAnalyzers" Version="3.5.*" PrivateAssets="All" />
24+
<PackageReference Include="JetBrains.Annotations" Version="2022.*" PrivateAssets="All" IncludeAssets="build;compile" />
25+
<PackageReference Include="WpfAnalyzers" Version="4.1.*" PrivateAssets="All" />
2626
</ItemGroup>
2727

2828
<ItemGroup>

src/GongSolutions.WPF.DragDrop/DropTargetInsertionAdorner.cs

Lines changed: 100 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -23,141 +23,136 @@ public DropTargetInsertionAdorner(UIElement adornedElement, DropInfo dropInfo)
2323
protected override void OnRender(DrawingContext drawingContext)
2424
{
2525
var dropInfo = this.DropInfo;
26-
var itemsControl = dropInfo.VisualTarget as ItemsControl;
2726

28-
if (itemsControl != null)
27+
if (dropInfo.VisualTarget is not ItemsControl itemsControl)
2928
{
30-
// Get the position of the item at the insertion index. If the insertion point is
31-
// to be after the last item, then get the position of the last item and add an
32-
// offset later to draw it at the end of the list.
33-
ItemsControl itemParent;
29+
return;
30+
}
3431

35-
var visualTargetItem = dropInfo.VisualTargetItem;
36-
if (visualTargetItem != null)
37-
{
38-
itemParent = ItemsControl.ItemsControlFromItemContainer(visualTargetItem);
39-
}
40-
else
41-
{
42-
itemParent = itemsControl;
43-
}
32+
// Get the position of the item at the insertion index. If the insertion point is
33+
// to be after the last item, then get the position of the last item and add an
34+
// offset later to draw it at the end of the list.
35+
36+
var visualTargetItem = dropInfo.VisualTargetItem;
37+
var itemParent = visualTargetItem != null ? ItemsControl.ItemsControlFromItemContainer(visualTargetItem) : itemsControl;
4438

45-
// this could be happen with a thread scenario where items are removed very quickly
46-
if (itemParent == null)
39+
// this could be happen with a thread scenario where items are removed very quickly
40+
if (itemParent == null)
41+
{
42+
return;
43+
}
44+
45+
var itemsCount = itemParent.Items.Count;
46+
var index = Math.Min(dropInfo.InsertIndex, itemsCount - 1);
47+
48+
var lastItemInGroup = false;
49+
var targetGroup = dropInfo.TargetGroup;
50+
if (targetGroup != null && targetGroup.IsBottomLevel && dropInfo.InsertPosition.HasFlag(RelativeInsertPosition.AfterTargetItem))
51+
{
52+
var indexOf = targetGroup.Items.IndexOf(dropInfo.TargetItem);
53+
lastItemInGroup = indexOf == targetGroup.ItemCount - 1;
54+
if (lastItemInGroup && dropInfo.InsertIndex != itemsCount)
4755
{
48-
return;
56+
index--;
4957
}
58+
}
5059

51-
var itemsCount = itemParent.Items.Count;
52-
var index = Math.Min(dropInfo.InsertIndex, itemsCount - 1);
60+
var itemContainer = (UIElement)itemParent.ItemContainerGenerator.ContainerFromIndex(index);
5361

54-
var lastItemInGroup = false;
55-
var targetGroup = dropInfo.TargetGroup;
56-
if (targetGroup != null && targetGroup.IsBottomLevel && dropInfo.InsertPosition.HasFlag(RelativeInsertPosition.AfterTargetItem))
62+
var showAlwaysDropTargetAdorner = itemContainer == null && DragDrop.GetShowAlwaysDropTargetAdorner(itemParent);
63+
if (showAlwaysDropTargetAdorner)
64+
{
65+
itemContainer = itemParent;
66+
}
67+
68+
if (itemContainer == null)
69+
{
70+
return;
71+
}
72+
73+
var itemRect = new Rect(itemContainer.TranslatePoint(new Point(), this.AdornedElement), itemContainer.RenderSize);
74+
Point point1,
75+
point2;
76+
double rotation = 0;
77+
78+
// If the ItemsControl has a scrollable content then try to get the viewport width/height
79+
// to paint the insertion adorner only on this size.
80+
var viewportWidth = double.MaxValue;
81+
var viewportHeight = double.MaxValue;
82+
if (dropInfo.TargetScrollViewer != null)
83+
{
84+
if (dropInfo.TargetScrollViewer.ScrollableWidth != 0)
5785
{
58-
var indexOf = targetGroup.Items.IndexOf(dropInfo.TargetItem);
59-
lastItemInGroup = indexOf == targetGroup.ItemCount - 1;
60-
if (lastItemInGroup && dropInfo.InsertIndex != itemsCount)
61-
{
62-
index--;
63-
}
86+
viewportWidth = dropInfo.TargetScrollViewer.ViewportWidth;
6487
}
6588

66-
var itemContainer = (UIElement)itemParent.ItemContainerGenerator.ContainerFromIndex(index);
67-
68-
var showAlwaysDropTargetAdorner = itemContainer == null && DragDrop.GetShowAlwaysDropTargetAdorner(itemParent);
69-
if (showAlwaysDropTargetAdorner)
89+
if (dropInfo.TargetScrollViewer.ScrollableHeight != 0)
7090
{
71-
itemContainer = itemParent;
91+
viewportHeight = dropInfo.TargetScrollViewer.ViewportHeight;
7292
}
93+
}
7394

74-
if (itemContainer != null)
95+
if (dropInfo.VisualTargetOrientation == Orientation.Vertical)
96+
{
97+
if ((dropInfo.InsertIndex == itemsCount) || lastItemInGroup)
7598
{
76-
var itemRect = new Rect(itemContainer.TranslatePoint(new Point(), this.AdornedElement), itemContainer.RenderSize);
77-
Point point1,
78-
point2;
79-
double rotation = 0;
80-
81-
// I really don't know why I did this
82-
//
83-
// var viewportWidth = double.MaxValue;
84-
// var viewportHeight = double.MaxValue;
85-
// if (DropInfo.TargetScrollViewer != null)
86-
// {
87-
// if (DropInfo.TargetScrollViewer.ScrollableWidth != 0)
88-
// {
89-
// viewportWidth = DropInfo.TargetScrollViewer.ViewportWidth;
90-
// }
91-
//
92-
// if (DropInfo.TargetScrollViewer.ScrollableHeight != 0)
93-
// {
94-
// viewportHeight = DropInfo.TargetScrollViewer.ViewportHeight;
95-
// }
96-
// }
97-
98-
if (dropInfo.VisualTargetOrientation == Orientation.Vertical)
99+
if (itemsCount > 0)
99100
{
100-
if ((dropInfo.InsertIndex == itemsCount) || lastItemInGroup)
101-
{
102-
if (itemsCount > 0)
103-
{
104-
itemRect.Y += itemContainer.RenderSize.Height;
105-
}
106-
else
107-
{
108-
if ((itemsControl as ListView)?.View is GridView)
109-
{
110-
var header = itemsControl.GetVisualDescendent<GridViewHeaderRowPresenter>();
111-
if (header != null)
112-
{
113-
itemRect.Y += header.RenderSize.Height;
114-
}
115-
}
116-
else if (itemsControl is DataGrid)
117-
{
118-
var header = itemsControl.GetVisualDescendent<DataGridColumnHeadersPresenter>();
119-
if (header != null)
120-
{
121-
itemRect.Y += header.RenderSize.Height;
122-
}
123-
}
124-
125-
itemRect.Y += this.Pen.Thickness;
126-
}
127-
}
128-
129-
var itemRectRight = itemRect.Right; //Math.Min(itemRect.Right, viewportWidth);
130-
var itemRectLeft = itemRect.X < 0 ? 0 : itemRect.X;
131-
point1 = new Point(itemRectLeft, itemRect.Y);
132-
point2 = new Point(itemRectRight, itemRect.Y);
101+
itemRect.Y += itemContainer.RenderSize.Height;
133102
}
134103
else
135104
{
136-
if (dropInfo.InsertIndex == itemsCount)
105+
if ((itemsControl as ListView)?.View is GridView)
137106
{
138-
if (itemsCount > 0)
107+
var header = itemsControl.GetVisualDescendent<GridViewHeaderRowPresenter>();
108+
if (header != null)
139109
{
140-
itemRect.X += itemContainer.RenderSize.Width;
110+
itemRect.Y += header.RenderSize.Height;
141111
}
142-
else
112+
}
113+
else if (itemsControl is DataGrid)
114+
{
115+
var header = itemsControl.GetVisualDescendent<DataGridColumnHeadersPresenter>();
116+
if (header != null)
143117
{
144-
itemRect.X += this.Pen.Thickness;
118+
itemRect.Y += header.RenderSize.Height;
145119
}
146120
}
147121

148-
var itemRectTop = itemRect.Y < 0 ? 0 : itemRect.Y;
149-
var itemRectBottom = itemRect.Bottom; //Math.Min(itemRect.Bottom, viewportHeight);
150-
151-
point1 = new Point(itemRect.X, itemRectTop);
152-
point2 = new Point(itemRect.X, itemRectBottom);
153-
rotation = 90;
122+
itemRect.Y += this.Pen.Thickness;
154123
}
124+
}
155125

156-
drawingContext.DrawLine(this.Pen, point1, point2);
157-
this.DrawTriangle(drawingContext, point1, rotation);
158-
this.DrawTriangle(drawingContext, point2, 180 + rotation);
126+
var itemRectRight = Math.Min(itemRect.Right, viewportWidth);
127+
var itemRectLeft = itemRect.X < 0 ? 0 : itemRect.X;
128+
point1 = new Point(itemRectLeft, itemRect.Y);
129+
point2 = new Point(itemRectRight, itemRect.Y);
130+
}
131+
else
132+
{
133+
if (dropInfo.InsertIndex == itemsCount)
134+
{
135+
if (itemsCount > 0)
136+
{
137+
itemRect.X += itemContainer.RenderSize.Width;
138+
}
139+
else
140+
{
141+
itemRect.X += this.Pen.Thickness;
142+
}
159143
}
144+
145+
var itemRectTop = itemRect.Y < 0 ? 0 : itemRect.Y;
146+
var itemRectBottom = Math.Min(itemRect.Bottom, viewportHeight);
147+
148+
point1 = new Point(itemRect.X, itemRectTop);
149+
point2 = new Point(itemRect.X, itemRectBottom);
150+
rotation = 90;
160151
}
152+
153+
drawingContext.DrawLine(this.Pen, point1, point2);
154+
this.DrawTriangle(drawingContext, point1, rotation);
155+
this.DrawTriangle(drawingContext, point2, 180 + rotation);
161156
}
162157

163158
private void DrawTriangle(DrawingContext drawingContext, Point origin, double rotation)

src/Showcase/Showcase.WPF.DragDrop.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,18 @@
2121
</ItemGroup>
2222

2323
<ItemGroup>
24-
<PackageReference Include="MahApps.Metro.IconPacks.FeatherIcons" Version="4.*" />
25-
<PackageReference Include="MahApps.Metro.IconPacks.Material" Version="4.*" />
26-
<PackageReference Include="MahApps.Metro.IconPacks.Octicons" Version="4.*" />
27-
<PackageReference Include="Faker.Net" Version="1.*" />
24+
<PackageReference Include="MahApps.Metro.IconPacks.FeatherIcons" Version="4.11.0" />
25+
<PackageReference Include="MahApps.Metro.IconPacks.Material" Version="4.11.0" />
26+
<PackageReference Include="MahApps.Metro.IconPacks.Octicons" Version="4.11.0" />
27+
<PackageReference Include="Faker.Net" Version="2.0.154" />
2828
</ItemGroup>
2929

3030
<ItemGroup Condition="$(DefineConstants.Contains(NETCOREAPP)) == false">
31-
<PackageReference Include="Fody" Version="6.5.*">
31+
<PackageReference Include="Fody" Version="6.6.4">
3232
<PrivateAssets>all</PrivateAssets>
3333
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3434
</PackageReference>
35-
<PackageReference Include="Costura.Fody" Version="5.6.*" PrivateAssets="All" />
35+
<PackageReference Include="Costura.Fody" Version="5.7.0" PrivateAssets="All" />
3636
</ItemGroup>
3737

3838
<ItemGroup>

src/global.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"sdk": {
3+
"version": "6.0.300",
4+
"rollForward": "latestFeature",
5+
"allowPrerelease": false
6+
}
7+
}

0 commit comments

Comments
 (0)