DiskProbe: allow full and half fixed fonts.

This commit is contained in:
Adrien Destugues 2018-08-08 20:01:21 +02:00
parent ac2ed5cc13
commit 1a3a613584

View File

@ -1307,7 +1307,8 @@ DataView::KeyDown(const char *bytes, int32 numBytes)
c += 'A' - 'a'; c += 'A' - 'a';
const char *hexNumbers = "0123456789abcdef"; const char *hexNumbers = "0123456789abcdef";
addr_t number; addr_t number;
if (data == NULL || (number = (addr_t)strchr(hexNumbers, c)) == 0) if (data == NULL
|| (number = (addr_t)strchr(hexNumbers, c)) == 0)
break; break;
SetSelection(fStart, fStart); SetSelection(fStart, fStart);
@ -1316,13 +1317,17 @@ DataView::KeyDown(const char *bytes, int32 numBytes)
number -= (addr_t)hexNumbers; number -= (addr_t)hexNumbers;
fBitPosition = (fBitPosition + 4) % 8; fBitPosition = (fBitPosition + 4) % 8;
c = (data[0] & (fBitPosition ? 0x0f : 0xf0)) | (number << fBitPosition); c = (data[0] & (fBitPosition ? 0x0f : 0xf0))
// mask out overwritten region and bit-wise or the number to be inserted | (number << fBitPosition);
// mask out overwritten region and bit-wise or the number
// to be inserted
if (fEditor.Replace(fOffset + fStart, &c, 1) == B_OK && fBitPosition == 0) if (fEditor.Replace(fOffset + fStart, &c, 1) == B_OK
&& fBitPosition == 0)
SetSelection(fStart + 1, fStart + 1); SetSelection(fStart + 1, fStart + 1);
} else { } else {
if (fEditor.Replace(fOffset + fStart, (const uint8 *)bytes, numBytes) == B_OK) if (fEditor.Replace(fOffset + fStart, (const uint8 *)bytes,
numBytes) == B_OK)
SetSelection(fStart + 1, fStart + 1); SetSelection(fStart + 1, fStart + 1);
} }
break; break;
@ -1333,7 +1338,10 @@ DataView::KeyDown(const char *bytes, int32 numBytes)
void void
DataView::SetFont(const BFont *font, uint32 properties) DataView::SetFont(const BFont *font, uint32 properties)
{ {
if (!font->IsFixed()) // Even in a full and hal fixed font, the characters we use (all in the
// Latin-1 range as everything else is filtered out) will all have the same
// width.
if (!font->IsFixed() && !font->IsFullAndHalfFixed())
return; return;
BView::SetFont(font, properties); BView::SetFont(font, properties);
@ -1341,7 +1349,8 @@ DataView::SetFont(const BFont *font, uint32 properties)
font_height fontHeight; font_height fontHeight;
font->GetHeight(&fontHeight); font->GetHeight(&fontHeight);
fFontHeight = int32(fontHeight.ascent + fontHeight.descent + fontHeight.leading); fFontHeight = int32(fontHeight.ascent + fontHeight.descent
+ fontHeight.leading);
fAscent = fontHeight.ascent; fAscent = fontHeight.ascent;
fCharWidth = font->StringWidth("w"); fCharWidth = font->StringWidth("w");
} }