mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-12-14 12:09:36 +00:00
Add forward delete to editbox
This commit is contained in:
@@ -240,12 +240,11 @@ namespace PortabilityLayer
|
||||
HandleDownArrow(keyEvent.m_repeatCount, isShiftHeld);
|
||||
return WidgetHandleStates::kDigested;
|
||||
}
|
||||
#if 0
|
||||
else if (keyEvent.m_key.m_specialKey == GpKeySpecials::kDelete)
|
||||
{
|
||||
HandleForwardDelete(keyEvent.m_repeatCount);
|
||||
return WidgetHandleStates::kDigested;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -396,6 +395,40 @@ namespace PortabilityLayer
|
||||
m_caratScrollLocked = false;
|
||||
}
|
||||
|
||||
void EditboxWidget::HandleForwardDelete(const uint32_t numRepeatsRequested)
|
||||
{
|
||||
const size_t numPostSelChars = m_length - m_selEndChar;
|
||||
const size_t numSelChars = m_selEndChar - m_selStartChar;
|
||||
const size_t numPreSelChars = m_selStartChar;
|
||||
|
||||
size_t suffixTrim = numRepeatsRequested;
|
||||
if (numSelChars != 0)
|
||||
suffixTrim--;
|
||||
|
||||
if (suffixTrim > numPostSelChars)
|
||||
suffixTrim = numPostSelChars;
|
||||
|
||||
const size_t prefixKeep = numPreSelChars;
|
||||
const size_t suffixKeep = numPostSelChars - suffixTrim;
|
||||
|
||||
if (suffixKeep > 0)
|
||||
{
|
||||
uint8_t *moveSrc = m_chars + m_length - suffixKeep;
|
||||
uint8_t *moveDest = m_chars + m_selStartChar;
|
||||
|
||||
if (moveSrc != moveDest)
|
||||
memmove(moveDest, moveSrc, suffixKeep);
|
||||
}
|
||||
|
||||
m_length = prefixKeep + suffixKeep;
|
||||
m_selStartChar = m_selEndChar = prefixKeep;
|
||||
|
||||
m_caratTimer = 0;
|
||||
Redraw();
|
||||
|
||||
m_caratScrollLocked = false;
|
||||
}
|
||||
|
||||
void EditboxWidget::HandleUpArrow(const uint32_t numRepeatsRequested, bool shiftHeld)
|
||||
{
|
||||
if (!m_isMultiLine)
|
||||
|
||||
Reference in New Issue
Block a user