diff --git a/src/Ursa.Themes.Semi/Controls/Dialog.axaml b/src/Ursa.Themes.Semi/Controls/Dialog.axaml
index 2b113fb..4c1c951 100644
--- a/src/Ursa.Themes.Semi/Controls/Dialog.axaml
+++ b/src/Ursa.Themes.Semi/Controls/Dialog.axaml
@@ -53,10 +53,26 @@
diff --git a/src/Ursa.Themes.Semi/Themes/Shared/Dialog.axaml b/src/Ursa.Themes.Semi/Themes/Shared/Dialog.axaml
new file mode 100644
index 0000000..d067400
--- /dev/null
+++ b/src/Ursa.Themes.Semi/Themes/Shared/Dialog.axaml
@@ -0,0 +1,8 @@
+
+
+ M2,2H16V16H2V2M22,8V22H8V18H10V20H20V10H18V8H22Z
+ M2,2H11V6H9V4H4V9H6V11H2V2M22,13V22H13V18H15V20H20V15H18V13H22M8,8H16V16H8V8Z
+ M2,2H16V16H2V2M22,8V22H8V18H18V8H22M4,4V14H14V4H4Z
+ M2,2H11V11H2V2M9,4H4V9H9V4M22,13V22H13V13H22M15,20H20V15H15V20M16,8V11H13V8H16M11,16H8V13H11V16Z
+
diff --git a/src/Ursa.Themes.Semi/Themes/Shared/_index.axaml b/src/Ursa.Themes.Semi/Themes/Shared/_index.axaml
index d26e06a..1e27845 100644
--- a/src/Ursa.Themes.Semi/Themes/Shared/_index.axaml
+++ b/src/Ursa.Themes.Semi/Themes/Shared/_index.axaml
@@ -4,6 +4,7 @@
+
diff --git a/src/Ursa/Controls/Dialog/OverlayDialogHost.cs b/src/Ursa/Controls/Dialog/OverlayDialogHost.cs
index 5887964..edb928e 100644
--- a/src/Ursa/Controls/Dialog/OverlayDialogHost.cs
+++ b/src/Ursa/Controls/Dialog/OverlayDialogHost.cs
@@ -41,13 +41,13 @@ public class OverlayDialogHost : Canvas
IsVisible = true,
};
- protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
+ protected sealed override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
{
base.OnAttachedToVisualTree(e);
OverlayDialogManager.RegisterOverlayDialogHost(this, HostId);
}
- protected override void OnSizeChanged(SizeChangedEventArgs e)
+ protected sealed override void OnSizeChanged(SizeChangedEventArgs e)
{
base.OnSizeChanged(e);
for (int i = 0; i < _masks.Count; i++)
@@ -90,7 +90,7 @@ public class OverlayDialogHost : Canvas
}
}
- public void AddDialog(DialogControl control)
+ internal void AddDialog(DialogControl control)
{
this.Children.Add(control);
_dialogs.Add(control);
@@ -127,18 +127,25 @@ public class OverlayDialogHost : Canvas
}
}
- public void AddModalDialog(DialogControl control)
+ internal void AddModalDialog(DialogControl control)
{
var mask = CreateOverlayMask();
- this.Children.Add(mask);
- this.Children.Add(control);
+ _masks.Add(mask);
_modalDialogs.Add(control);
- for (int i = 0; i < _masks.Count; i++)
+ int start = _dialogs.LastOrDefault()?.ZIndex ?? 1;
+ for (int i = 0; i < _masks.Count; i += 1)
{
- _masks[i].IsVisible = false;
+ _masks[i].ZIndex = start + 2 * i;
+ _modalDialogs[i].ZIndex = start + 2 * i + 1;
+ }
+
+ for (int i = 0; i < _masks.Count-1; i++)
+ {
+ _masks[i].Opacity = 0.5;
}
- _masks.Add(mask);
+ this.Children.Add(mask);
+ this.Children.Add(control);
control.OnClose += OnDialogClose;
control.OnLayerChange += OnDialogLayerChange;
}
@@ -173,5 +180,12 @@ public class OverlayDialogHost : Canvas
{
_dialogs[i].ZIndex = i;
}
+
+ for (int i = 0; i < _masks.Count * 2; i += 2)
+ {
+ _masks[i].ZIndex = _dialogs.Count + i;
+ _modalDialogs[i].ZIndex = _dialogs.Count + i + 1;
+ }
+
}
}
\ No newline at end of file