diff --git a/Blish HUD/Controls/Panel.cs b/Blish HUD/Controls/Panel.cs
index 7a15ce60..eaca5c41 100644
--- a/Blish HUD/Controls/Panel.cs
+++ b/Blish HUD/Controls/Panel.cs
@@ -5,6 +5,7 @@
using Newtonsoft.Json;
using System;
using System.ComponentModel;
+using Microsoft.Xna.Framework.Input;
namespace Blish_HUD.Controls {
@@ -18,21 +19,21 @@ public class Panel : Container, IAccordion {
/* ControlOffset */ Control.ControlStandard.ControlOffset);
// Used when border is enabled
- public const int TOP_PADDING = 7;
- public const int RIGHT_PADDING = 4;
+ public const int TOP_PADDING = 7;
+ public const int RIGHT_PADDING = 4;
public const int BOTTOM_PADDING = 7;
- public const int LEFT_PADDING = 4;
+ public const int LEFT_PADDING = 4;
- public const int HEADER_HEIGHT = 36;
- private const int ARROW_SIZE = 32;
+ public const int HEADER_HEIGHT = 36;
+ private const int ARROW_SIZE = 32;
private const int MAX_ACCENT_WIDTH = 256;
#region Textures
- private readonly AsyncTexture2D _texturePanelHeader = AsyncTexture2D.FromAssetId(1032325);
+ private readonly AsyncTexture2D _texturePanelHeader = AsyncTexture2D.FromAssetId(1032325);
private readonly AsyncTexture2D _texturePanelHeaderActive = AsyncTexture2D.FromAssetId(1032324);
- private readonly AsyncTexture2D _textureCornerAccent = AsyncTexture2D.FromAssetId(1002144);
+ private readonly AsyncTexture2D _textureCornerAccent = AsyncTexture2D.FromAssetId(1002144);
private readonly AsyncTexture2D _textureLeftSideAccent = AsyncTexture2D.FromAssetId(605025);
private readonly AsyncTexture2D _textureAccordionArrow = AsyncTexture2D.FromAssetId(155953);
@@ -50,7 +51,7 @@ public bool CanScroll {
UpdateScrollbar();
}
}
-
+
protected string _title;
public string Title {
get => _title;
@@ -121,7 +122,7 @@ public override SizingMode HeightSizingMode {
[JsonIgnore] public float AccentOpacity { get; set; } = 1f;
private Glide.Tween _collapseAnim;
- private Scrollbar _panelScrollbar;
+ private Scrollbar _panelScrollbar;
///
public bool ToggleAccordionState() {
@@ -144,17 +145,22 @@ public void NavigateToBuiltPanel(BuildUIDelegate buildCall, object obj) {
///
protected override void OnClick(MouseEventArgs e) {
- if (!string.IsNullOrEmpty(_title) && _layoutHeaderBounds.Contains(this.RelativeMousePosition)) {
- if (_canCollapse) {
- this.ToggleAccordionState();
- }
-
- e.StopPropagation();
+ if (_canCollapse && _layoutHeaderBounds.Contains(this.RelativeMousePosition)) {
+ this.ToggleAccordionState();
}
base.OnClick(e);
}
+ ///
+ public override Control TriggerMouseInput(MouseEventArgs args, MouseState ms) {
+ if (!string.IsNullOrEmpty(_title) && _layoutHeaderBounds.Contains(this.RelativeMousePosition)) {
+ args.StopPropagation();
+ }
+
+ return base.TriggerMouseInput(args, ms);
+ }
+
protected override void OnChildAdded(ChildChangedEventArgs e) {
base.OnChildAdded(e);
@@ -166,7 +172,7 @@ protected override void OnChildRemoved(ChildChangedEventArgs e) {
base.OnChildRemoved(e);
e.ChangedChild.Resized -= UpdateContentRegionBounds;
- e.ChangedChild.Moved -= UpdateContentRegionBounds;
+ e.ChangedChild.Moved -= UpdateContentRegionBounds;
}
///
@@ -198,7 +204,7 @@ public void Collapse() {
}
SetProperty(ref _canCollapse, true);
- SetProperty(ref _collapsed, true);
+ SetProperty(ref _collapsed, true);
_collapseAnim = Animation.Tweener
.Tween(this,
@@ -215,7 +221,7 @@ private void UpdateContentRegionBounds(object sender, EventArgs e) {
private Rectangle _layoutHeaderIconBounds;
private Rectangle _layoutHeaderTextBounds;
- private Vector2 _layoutAccordionArrowOrigin;
+ private Vector2 _layoutAccordionArrowOrigin;
private Rectangle _layoutAccordionArrowBounds;
private Rectangle _layoutTopLeftAccentBounds;
@@ -229,16 +235,16 @@ private void UpdateContentRegionBounds(object sender, EventArgs e) {
public override void RecalculateLayout() {
bool showsHeader = !string.IsNullOrEmpty(_title);
- int topOffset = showsHeader ? HEADER_HEIGHT : 0;
- int rightOffset = 0;
+ int topOffset = showsHeader ? HEADER_HEIGHT : 0;
+ int rightOffset = 0;
int bottomOffset = 0;
- int leftOffset = 0;
+ int leftOffset = 0;
if (this.ShowBorder) {
- topOffset = Math.Max(TOP_PADDING, topOffset);
- rightOffset = RIGHT_PADDING;
+ topOffset = Math.Max(TOP_PADDING, topOffset);
+ rightOffset = RIGHT_PADDING;
bottomOffset = BOTTOM_PADDING;
- leftOffset = LEFT_PADDING;
+ leftOffset = LEFT_PADDING;
// Corner accents
int cornerAccentWidth = Math.Min(_size.X, MAX_ACCENT_WIDTH);
@@ -250,7 +256,7 @@ public override void RecalculateLayout() {
// Left side accent
_layoutLeftAccentBounds = new Rectangle(leftOffset - 7, topOffset, _textureLeftSideAccent.Width, Math.Min(_size.Y - topOffset - bottomOffset, _textureLeftSideAccent.Height));
- _layoutLeftAccentSrc = new Rectangle(0, 0, _textureLeftSideAccent.Width, _layoutLeftAccentBounds.Height);
+ _layoutLeftAccentSrc = new Rectangle(0, 0, _textureLeftSideAccent.Width, _layoutLeftAccentBounds.Height);
}
this.ContentRegion = new Rectangle(leftOffset,
@@ -258,7 +264,7 @@ public override void RecalculateLayout() {
_size.X - leftOffset - rightOffset,
_size.Y - topOffset - bottomOffset);
- _layoutHeaderBounds = new Rectangle(this.ContentRegion.Left, 0, this.ContentRegion.Width, HEADER_HEIGHT);
+ _layoutHeaderBounds = new Rectangle(this.ContentRegion.Left, 0, this.ContentRegion.Width, HEADER_HEIGHT);
if (_icon?.HasTexture == true) {
@@ -283,18 +289,18 @@ private void UpdateScrollbar() {
/* TODO: Fix .CanScroll: currently you have to set it after you set other region changing settings for it
to work correctly */
if (this.CanScroll) {
- if (_panelScrollbar == null)
+ if (_panelScrollbar == null)
_panelScrollbar = new Scrollbar(this);
this.PropertyChanged -= UpdatePanelScrollbarOnOwnPropertyChanged;
this.PropertyChanged += UpdatePanelScrollbarOnOwnPropertyChanged;
- _panelScrollbar.Parent = this.Parent;
- _panelScrollbar.Height = this.ContentRegion.Height - 20;
- _panelScrollbar.Right = this.Right - _panelScrollbar.Width / 2;
- _panelScrollbar.Top = this.Top + this.ContentRegion.Top + 10;
+ _panelScrollbar.Parent = this.Parent;
+ _panelScrollbar.Height = this.ContentRegion.Height - 20;
+ _panelScrollbar.Right = this.Right - _panelScrollbar.Width / 2;
+ _panelScrollbar.Top = this.Top + this.ContentRegion.Top + 10;
_panelScrollbar.Visible = this.Visible;
- _panelScrollbar.ZIndex = this.ZIndex + 2;
+ _panelScrollbar.ZIndex = this.ZIndex + 2;
} else {
this.PropertyChanged -= UpdatePanelScrollbarOnOwnPropertyChanged;
_panelScrollbar?.Dispose();
@@ -417,10 +423,10 @@ public override void PaintBeforeChildren(SpriteBatch spriteBatch, Rectangle boun
protected override void DisposeControl() {
_panelScrollbar?.Dispose();
-
+
foreach (var control in this._children) {
control.Resized -= UpdateContentRegionBounds;
- control.Moved -= UpdateContentRegionBounds;
+ control.Moved -= UpdateContentRegionBounds;
}
base.DisposeControl();