mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-15 03:30:53 +01:00
Allowed multiple Pseudo Classes per element. (#846)
* Quick fix to flashlight radius * SomethingAbout CSS Class * Shitty update * fuck * Creativ! * Last But not least * Quick Change * Fixed version * Tiny fix * Next Fix * Another fix
This commit is contained in:
committed by
Pieter-Jan Briers
parent
7f9f593989
commit
fc67c5069c
@@ -11,7 +11,9 @@ namespace Robust.Client.UserInterface
|
||||
|
||||
private readonly Dictionary<string, object> _styleProperties = new Dictionary<string, object>();
|
||||
private readonly HashSet<string> _styleClasses = new HashSet<string>();
|
||||
private readonly HashSet<string> _stylePseudoClass = new HashSet<string>();
|
||||
public ICollection<string> StyleClasses { get; }
|
||||
public IReadOnlyCollection<string> StylePseudoClass => _stylePseudoClass;
|
||||
|
||||
private string _styleIdentifier;
|
||||
|
||||
@@ -28,24 +30,41 @@ namespace Robust.Client.UserInterface
|
||||
}
|
||||
}
|
||||
|
||||
private string _stylePseudoClass;
|
||||
|
||||
[ViewVariables]
|
||||
public string StylePseudoClass
|
||||
public bool HasStylePseudoClass(string className)
|
||||
{
|
||||
get => _stylePseudoClass;
|
||||
protected set
|
||||
{
|
||||
if (_stylePseudoClass == value)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_stylePseudoClass = value;
|
||||
Restyle();
|
||||
}
|
||||
return _stylePseudoClass.Contains(className);
|
||||
}
|
||||
|
||||
protected void AddStylePseudoClass(string className)
|
||||
{
|
||||
if (_stylePseudoClass.Contains(className))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_stylePseudoClass.Add(className);
|
||||
Restyle();
|
||||
}
|
||||
|
||||
protected void RemoveStylePseudoClass(string className)
|
||||
{
|
||||
_stylePseudoClass.Remove(className);
|
||||
Restyle();
|
||||
}
|
||||
|
||||
protected void SetOnlyStylePseudoClass(string className)
|
||||
{
|
||||
_stylePseudoClass.Clear();
|
||||
|
||||
if (className == null)
|
||||
{
|
||||
Restyle();
|
||||
return;
|
||||
}
|
||||
|
||||
_stylePseudoClass.Add(className);
|
||||
Restyle();
|
||||
}
|
||||
public bool HasStyleClass(string className)
|
||||
{
|
||||
return _styleClasses.Contains(className);
|
||||
|
||||
@@ -202,16 +202,16 @@ namespace Robust.Client.UserInterface.Controls
|
||||
switch (DrawMode)
|
||||
{
|
||||
case DrawModeEnum.Normal:
|
||||
StylePseudoClass = StylePseudoClassNormal;
|
||||
SetOnlyStylePseudoClass(StylePseudoClassNormal);
|
||||
break;
|
||||
case DrawModeEnum.Pressed:
|
||||
StylePseudoClass = StylePseudoClassPressed;
|
||||
SetOnlyStylePseudoClass(StylePseudoClassPressed);
|
||||
break;
|
||||
case DrawModeEnum.Hover:
|
||||
StylePseudoClass = StylePseudoClassHover;
|
||||
SetOnlyStylePseudoClass(StylePseudoClassHover);
|
||||
break;
|
||||
case DrawModeEnum.Disabled:
|
||||
StylePseudoClass = StylePseudoClassDisabled;
|
||||
SetOnlyStylePseudoClass(StylePseudoClassDisabled);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
|
||||
@@ -399,7 +399,7 @@ namespace Robust.Client.UserInterface.Controls
|
||||
|
||||
private void _updatePseudoClass()
|
||||
{
|
||||
StylePseudoClass = IsPlaceHolderVisible ? StylePseudoClassPlaceholder : null;
|
||||
SetOnlyStylePseudoClass(IsPlaceHolderVisible ? StylePseudoClassPlaceholder : null);
|
||||
}
|
||||
|
||||
public enum AlignMode
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -206,14 +206,14 @@ namespace Robust.Client.UserInterface.Controls
|
||||
|
||||
OnMouseEntered?.Invoke();
|
||||
|
||||
StylePseudoClass = StylePseudoClassHover;
|
||||
SetOnlyStylePseudoClass(StylePseudoClassHover);
|
||||
}
|
||||
|
||||
protected internal override void MouseExited()
|
||||
{
|
||||
base.MouseExited();
|
||||
|
||||
StylePseudoClass = null;
|
||||
SetOnlyStylePseudoClass(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -154,15 +154,15 @@ namespace Robust.Client.UserInterface.Controls
|
||||
{
|
||||
if (_grabData != null)
|
||||
{
|
||||
StylePseudoClass = StylePseudoClassGrabbed;
|
||||
SetOnlyStylePseudoClass(StylePseudoClassGrabbed);
|
||||
}
|
||||
else if (_isHovered)
|
||||
{
|
||||
StylePseudoClass = StylePseudoClassHover;
|
||||
SetOnlyStylePseudoClass(StylePseudoClassHover);
|
||||
}
|
||||
else
|
||||
{
|
||||
StylePseudoClass = null;
|
||||
SetOnlyStylePseudoClass(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,16 +37,16 @@ namespace Robust.Client.UserInterface.Controls
|
||||
switch (DrawMode)
|
||||
{
|
||||
case DrawModeEnum.Normal:
|
||||
StylePseudoClass = StylePseudoClassNormal;
|
||||
SetOnlyStylePseudoClass(StylePseudoClassNormal);
|
||||
break;
|
||||
case DrawModeEnum.Pressed:
|
||||
StylePseudoClass = StylePseudoClassPressed;
|
||||
SetOnlyStylePseudoClass(StylePseudoClassPressed);
|
||||
break;
|
||||
case DrawModeEnum.Hover:
|
||||
StylePseudoClass = StylePseudoClassHover;
|
||||
SetOnlyStylePseudoClass(StylePseudoClassHover);
|
||||
break;
|
||||
case DrawModeEnum.Disabled:
|
||||
StylePseudoClass = StylePseudoClassDisabled;
|
||||
SetOnlyStylePseudoClass(StylePseudoClassDisabled);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Utility;
|
||||
@@ -148,7 +148,7 @@ namespace Robust.Client.UserInterface
|
||||
Type elementType,
|
||||
IReadOnlyCollection<string> elementClasses,
|
||||
string elementId,
|
||||
string pseudoClass)
|
||||
IReadOnlyCollection<string> pseudoClass)
|
||||
{
|
||||
if (elementType != null)
|
||||
{
|
||||
@@ -172,7 +172,8 @@ namespace Robust.Client.UserInterface
|
||||
public Type ElementType { get; }
|
||||
public IReadOnlyCollection<string> ElementClasses { get; }
|
||||
public string ElementId { get; }
|
||||
public string PseudoClass { get; }
|
||||
|
||||
public IReadOnlyCollection<string> PseudoClass { get; }
|
||||
|
||||
public override bool Matches(Control control)
|
||||
{
|
||||
@@ -197,9 +198,15 @@ namespace Robust.Client.UserInterface
|
||||
}
|
||||
}
|
||||
|
||||
if (PseudoClass != null && PseudoClass != control.StylePseudoClass)
|
||||
if (PseudoClass != null)
|
||||
{
|
||||
return false;
|
||||
foreach (var elementClass in PseudoClass)
|
||||
{
|
||||
if (!control.HasStylePseudoClass(elementClass))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -208,7 +215,7 @@ namespace Robust.Client.UserInterface
|
||||
public override StyleSpecificity CalculateSpecificity()
|
||||
{
|
||||
var countId = ElementId == null ? 0 : 1;
|
||||
var countClasses = (ElementClasses?.Count ?? 0) + (PseudoClass == null ? 0 : 1);
|
||||
var countClasses = (ElementClasses?.Count ?? 0) + (PseudoClass?.Count ?? 0);
|
||||
var countTypes = 0;
|
||||
if (ElementType != null)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user