aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar IceN9ne2016-11-30 03:33:48 -0500
committerGravatar IceN9ne2016-11-30 03:33:48 -0500
commit2a5e49b6cfe4c8fc1db4db5fea6b155d53e4fbbc (patch)
tree3e341c0f167cb6f0bd4205d5ce24e1d3a38b6ca0
parentKviOggTheoraEncoder: Fix incorrect forward declaration of QRgb (diff)
downloadKVIrc-2a5e49b6cfe4c8fc1db4db5fea6b155d53e4fbbc.tar.gz
KVIrc-2a5e49b6cfe4c8fc1db4db5fea6b155d53e4fbbc.tar.bz2
KVIrc-2a5e49b6cfe4c8fc1db4db5fea6b155d53e4fbbc.zip
KviInputEditor: Auto-scroll text when characters are deleted to minimize trailing whitespace
Fixes #1868
-rw-r--r--src/kvirc/ui/KviInputEditor.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/kvirc/ui/KviInputEditor.cpp b/src/kvirc/ui/KviInputEditor.cpp
index 80ac826f1..c4c06ea41 100644
--- a/src/kvirc/ui/KviInputEditor.cpp
+++ b/src/kvirc/ui/KviInputEditor.cpp
@@ -749,8 +749,6 @@ void KviInputEditor::rebuildTextBlocks()
void KviInputEditor::ensureCursorVisible()
{
- QFontMetricsF * fm = getLastFontMetrics(font());
-
if(m_iCursorPosition < 0)
m_iCursorPosition = 0;
else if(m_iCursorPosition > m_szTextBuffer.length())
@@ -758,12 +756,20 @@ void KviInputEditor::ensureCursorVisible()
qreal fCursorXAbsolute = xPositionFromCharIndex(m_iCursorPosition) - KVI_INPUT_MARGIN;
qreal fCursorXInText = fCursorXAbsolute + m_p->fXOffset;
+ qreal fEndXAbsolute = xPositionFromCharIndex(m_szTextBuffer.length()) - KVI_INPUT_MARGIN;
bool bNeedRepaint = false;
qreal fAvailableWidth = width() - KVI_INPUT_MARGIN - KVI_INPUT_MARGIN;
- if(fCursorXAbsolute < 0.0)
+ if(fAvailableWidth > fEndXAbsolute)
+ {
+ m_p->fXOffset += fEndXAbsolute - fAvailableWidth;
+ if(m_p->fXOffset < 0.0)
+ m_p->fXOffset = 0.0;
+ bNeedRepaint = true;
+ }
+ else if(fCursorXAbsolute < 0.0)
{
m_p->fXOffset = fCursorXInText;
bNeedRepaint = true;