HexTextBox - try to preserve the current value when changing the hex size. This kind of thing is super annoying, revert it immediately if there's a problem. Fixes #525
This commit is contained in:
parent
7e0996b44b
commit
3dd0ab2008
|
@ -30,11 +30,27 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
public void SetHexProperties(long domainSize)
|
public void SetHexProperties(long domainSize)
|
||||||
{
|
{
|
||||||
|
bool wasMaxSizeSet = _maxSize.HasValue;
|
||||||
|
int currMaxLength = MaxLength;
|
||||||
|
|
||||||
_maxSize = domainSize - 1;
|
_maxSize = domainSize - 1;
|
||||||
|
|
||||||
MaxLength = _maxSize.Value.NumHexDigits();
|
MaxLength = _maxSize.Value.NumHexDigits();
|
||||||
_addressFormatStr = "{0:X" + MaxLength + "}";
|
_addressFormatStr = "{0:X" + MaxLength + "}";
|
||||||
|
|
||||||
ResetText();
|
//try to preserve the old value, as best we can
|
||||||
|
if(!wasMaxSizeSet)
|
||||||
|
ResetText();
|
||||||
|
else if(_nullable)
|
||||||
|
Text = "";
|
||||||
|
else if (MaxLength != currMaxLength)
|
||||||
|
{
|
||||||
|
long? value = ToLong();
|
||||||
|
if (value.HasValue)
|
||||||
|
value = value.Value & ((1L << (MaxLength * 4)) - 1);
|
||||||
|
else value = 0;
|
||||||
|
Text = string.Format(_addressFormatStr, value.Value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public long GetMax()
|
public long GetMax()
|
||||||
|
|
Loading…
Reference in New Issue