AGS: don't zero slider's HandleImage internally if sprite is missing
This may lead to unexpected effects when resources are not fully preloaded yet, but a Slider's "UpdateMetrics" was called. From upstream 5654fb52a64904a6b0cdcec674224f7a0d91a8eb
This commit is contained in:
parent
bebe52ba86
commit
1d1ec14bda
1 changed files with 9 additions and 9 deletions
|
@ -82,10 +82,8 @@ void GUISlider::UpdateMetrics() {
|
||||||
if (MinValue >= MaxValue)
|
if (MinValue >= MaxValue)
|
||||||
MaxValue = MinValue + 1;
|
MaxValue = MinValue + 1;
|
||||||
Value = Math::Clamp(Value, MinValue, MaxValue);
|
Value = Math::Clamp(Value, MinValue, MaxValue);
|
||||||
// Test if sprite is available
|
// Test if sprite is available; // TODO: return a placeholder from spriteset instead!
|
||||||
// TODO: react to sprites initialization/deletion instead!
|
const int handle_im = _GP(spriteset)[HandleImage] ? HandleImage : 0;
|
||||||
if (_GP(spriteset)[HandleImage] == nullptr)
|
|
||||||
HandleImage = 0;
|
|
||||||
|
|
||||||
// Depending on slider's orientation, thickness is either Height or Width
|
// Depending on slider's orientation, thickness is either Height or Width
|
||||||
const int thickness = IsHorizontal() ? Height : Width;
|
const int thickness = IsHorizontal() ? Height : Width;
|
||||||
|
@ -96,10 +94,10 @@ void GUISlider::UpdateMetrics() {
|
||||||
|
|
||||||
// Calculate handle size
|
// Calculate handle size
|
||||||
Size handle_sz;
|
Size handle_sz;
|
||||||
if (HandleImage > 0) // handle is a sprite
|
if (handle_im > 0) // handle is a sprite
|
||||||
{
|
{
|
||||||
handle_sz = Size(get_adjusted_spritewidth(HandleImage),
|
handle_sz = Size(get_adjusted_spritewidth(handle_im),
|
||||||
get_adjusted_spriteheight(HandleImage));
|
get_adjusted_spriteheight(handle_im));
|
||||||
} else // handle is a drawn rectangle
|
} else // handle is a drawn rectangle
|
||||||
{
|
{
|
||||||
if (IsHorizontal())
|
if (IsHorizontal())
|
||||||
|
@ -180,9 +178,11 @@ void GUISlider::Draw(Bitmap *ds, int x, int y) {
|
||||||
ds->DrawLine(Line(bar.Left, bar.Bottom, bar.Right, bar.Bottom), draw_color);
|
ds->DrawLine(Line(bar.Left, bar.Bottom, bar.Right, bar.Bottom), draw_color);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HandleImage > 0) // handle is a sprite
|
// Test if sprite is available; // TODO: return a placeholder from spriteset instead!
|
||||||
|
const int handle_im = _GP(spriteset)[HandleImage] ? HandleImage : 0;
|
||||||
|
if (handle_im > 0) // handle is a sprite
|
||||||
{
|
{
|
||||||
draw_gui_sprite(ds, HandleImage, handle.Left, handle.Top, true);
|
draw_gui_sprite(ds, handle_im, handle.Left, handle.Top, true);
|
||||||
} else // handle is a drawn rectangle
|
} else // handle is a drawn rectangle
|
||||||
{
|
{
|
||||||
// normal grey tracker handle
|
// normal grey tracker handle
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue