From 578b5f78cb6c2f9a5e99eefe10b4d3d644557f8d Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Tue, 6 Aug 2013 03:52:32 +0200 Subject: fix point movement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/editor.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/editor.py b/src/editor.py index 87dab78..f128b8e 100644 --- a/src/editor.py +++ b/src/editor.py @@ -61,7 +61,7 @@ class TextArea(): def draw(self): leftside = '\033[%i;%iH\033[%s34m%s:\033[00m' % (self.area.top + self.y, self.area.left, '01;' if self.area.y == self.y else '', self.name) - text = self.text[self.area.offx if self.area.y == self.y else 0:][:self.area.areawidth] + text = (self.text[self.area.offx if self.area.y == self.y else 0:] + ' ' * self.area.areawidth)[:self.area.areawidth] if (self.area.y == self.y) and (self.area.mark is not None) and (self.area.mark >= 0): (a, b) = self.area.get_selection(True) if a != b: @@ -170,9 +170,20 @@ class TextArea(): if 0 <= x <= len(self.text): self.area.x = x if delta < 0: - print('\033[%iD' % -delta, end='') + if self.area.offx > self.area.x: + self.area.offx = self.area.x - self.area.areawidth + self.area.offx = max(self.area.offx, 0) + self.draw() + print('\033[%i;%iH' % (self.area.top + self.y, self.area.left + self.area.innerleft + self.area.x - self.area.offx), end='') + else: + print('\033[%iD' % -delta, end='') elif delta > 0: - print('\033[%iC' % delta, end='') + if self.area.x - self.area.offx > self.area.areawidth: + self.area.offx = self.area.x + self.draw() + print('\033[%i;%iH' % (self.area.top + self.y, self.area.left + self.area.innerleft), end='') + else: + print('\033[%iC' % delta, end='') return delta != 0 return False -- cgit v1.2.3-70-g09d2