82 lines
2.7 KiB
C++
82 lines
2.7 KiB
C++
// Copyright Steve Streeting 2020 onwards
|
|
// Released under the MIT license
|
|
#include "SFocusableSlider.h"
|
|
|
|
void SFocusableSlider::Construct(const FArguments& InArgs)
|
|
{
|
|
// Call superclass, have to re-construct the args because they're not compatible
|
|
SSlider::Construct(SSlider::FArguments()
|
|
.Locked(InArgs._Locked)
|
|
.Orientation(InArgs._Orientation)
|
|
.Style(InArgs._Style)
|
|
.Value(InArgs._Value)
|
|
.MaxValue(InArgs._MaxValue)
|
|
.MinValue(InArgs._MinValue)
|
|
.IsFocusable(InArgs._IsFocusable)
|
|
.IsEnabled(InArgs._IsEnabled)
|
|
.IndentHandle(InArgs._IndentHandle)
|
|
.MouseUsesStep(InArgs._MouseUsesStep)
|
|
.RequiresControllerLock(InArgs._RequiresControllerLock)
|
|
.Clipping(InArgs._Clipping)
|
|
.Cursor(InArgs._Cursor)
|
|
.Tag(InArgs._Tag)
|
|
.Visibility(InArgs._Visibility)
|
|
.AccessibleParams(InArgs._AccessibleParams)
|
|
.AccessibleText(InArgs._AccessibleText)
|
|
.ForceVolatile(InArgs._ForceVolatile)
|
|
.RenderOpacity(InArgs._RenderOpacity)
|
|
.RenderTransform(InArgs._RenderTransform)
|
|
.RenderTransformPivot(InArgs._RenderTransformPivot)
|
|
.ToolTip(InArgs._ToolTip)
|
|
.ToolTipText(InArgs._ToolTipText)
|
|
.OnValueChanged(InArgs._OnValueChanged)
|
|
);
|
|
|
|
OnHoveredDelegate = InArgs._OnHovered;
|
|
OnUnhoveredDelegate = InArgs._OnUnhovered;
|
|
OnFocusReceivedDelegate = InArgs._OnFocusReceived;
|
|
OnFocusLostDelegate = InArgs._OnFocusLost;
|
|
}
|
|
|
|
|
|
void SFocusableSlider::OnMouseEnter(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent)
|
|
{
|
|
SSlider::OnMouseEnter(MyGeometry, MouseEvent);
|
|
|
|
// SSlider doesn't have hovered / unhovered events so we need to add them
|
|
OnHoveredDelegate.ExecuteIfBound();
|
|
}
|
|
|
|
void SFocusableSlider::OnMouseLeave(const FPointerEvent& MouseEvent)
|
|
{
|
|
SSlider::OnMouseLeave(MouseEvent);
|
|
|
|
OnUnhoveredDelegate.ExecuteIfBound();
|
|
}
|
|
|
|
FReply SFocusableSlider::OnFocusReceived(const FGeometry& MyGeometry, const FFocusEvent& InFocusEvent)
|
|
{
|
|
auto Ret = SSlider::OnFocusReceived(MyGeometry, InFocusEvent);
|
|
|
|
OnFocusReceivedDelegate.ExecuteIfBound();
|
|
|
|
return Ret;
|
|
}
|
|
|
|
void SFocusableSlider::OnFocusLost(const FFocusEvent& InFocusEvent)
|
|
{
|
|
SSlider::OnFocusLost(InFocusEvent);
|
|
|
|
OnFocusLostDelegate.ExecuteIfBound();
|
|
}
|
|
|
|
void SFocusableSlider::SetOnFocusReceived(FSimpleDelegate InOnFocusReceived)
|
|
{
|
|
OnFocusReceivedDelegate = InOnFocusReceived;
|
|
}
|
|
|
|
void SFocusableSlider::SetOnFocusLost(FSimpleDelegate InOnFocusLost)
|
|
{
|
|
OnFocusLostDelegate = InOnFocusLost;
|
|
}
|