From 79eb342317e8a7c35717ee080712b413576c0d35 Mon Sep 17 00:00:00 2001 From: chrys Date: Sun, 30 Jul 2017 16:27:24 +0200 Subject: [PATCH] fix hilight tracking --- src/fenrir/core/screenData.py | 4 ++-- src/fenrir/screenDriver/vcsaDriver.py | 10 +++++----- src/fenrir/utils/screen_utils.py | 6 ++++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/fenrir/core/screenData.py b/src/fenrir/core/screenData.py index 8d31c5be..9f4d0a61 100644 --- a/src/fenrir/core/screenData.py +++ b/src/fenrir/core/screenData.py @@ -18,7 +18,7 @@ screenData = { 'oldCursor':{'x':0,'y':0}, 'oldContentBytes': b'', 'oldContentText': '', -'oldContentAttrib': b'', +'oldContentAttrib': None, 'oldApplication': '', 'oldTTY':None, 'newDelta': '', @@ -29,7 +29,7 @@ screenData = { 'newCursor':{'x':0,'y':0}, 'newContentBytes': b'', 'newContentText': '', -'newContentAttrib': b'', +'newContentAttrib': None, 'newTTY':'0', 'newApplication': '', 'lastScreenUpdate': time.time(), diff --git a/src/fenrir/screenDriver/vcsaDriver.py b/src/fenrir/screenDriver/vcsaDriver.py index c98264a3..10cc2fa2 100644 --- a/src/fenrir/screenDriver/vcsaDriver.py +++ b/src/fenrir/screenDriver/vcsaDriver.py @@ -198,11 +198,11 @@ class driver(): def autoDecodeVCSA(self, allData, rows, cols): allText = '' - allAttrib = b'' + allAttrib = [] i = 0 for y in range(rows): lineText = '' - lineAttrib = b'' + lineAttrib = [] for x in range(cols): data = allData[i: i + 2] i += 2 @@ -211,7 +211,7 @@ class driver(): #ink = 7 #paper = 0 #ch = ' ' - lineAttrib += b'7' + lineAttrib.append((7,7,0,0,0,0)) # attribute, ink, paper, blink, bold, underline lineText += ' ' continue (sh,) = unpack("=H", data) @@ -219,7 +219,6 @@ class driver(): ch = sh & 0xFF if self.hichar == 0x100: attr >>= 1 - lineAttrib += bytes(attr) ink = attr & 0x0F paper = (attr>>4) & 0x0F #if (ink != 7) or (paper != 0): @@ -230,6 +229,7 @@ class driver(): lineText += self.charmap[ch] except KeyError: lineText += chr('?') + lineAttrib.append((attr,ink, paper,0,0,0)) # attribute, ink, paper, blink, bold, underline allText += lineText + '\n' allAttrib += lineAttrib return str(allText), allAttrib @@ -280,7 +280,7 @@ class driver(): if self.env['screen']['newTTY'] != self.env['screen']['oldTTY']: self.env['screen']['oldContentBytes'] = b'' - self.env['screen']['oldContentAttrib'] = b'' + self.env['screen']['oldContentAttrib'] = None self.env['screen']['oldContentText'] = '' self.env['screen']['oldCursor']['x'] = 0 self.env['screen']['oldCursor']['y'] = 0 diff --git a/src/fenrir/utils/screen_utils.py b/src/fenrir/utils/screen_utils.py index 601647e4..432f1aac 100644 --- a/src/fenrir/utils/screen_utils.py +++ b/src/fenrir/utils/screen_utils.py @@ -29,11 +29,13 @@ def trackHighlights(oldAttr, newAttr, text, lenght): return result, currCursor if len(oldAttr) != len(newAttr): return result, currCursor + old = splitEvery(oldAttr,lenght) new = splitEvery(newAttr,lenght) textLines = text.split('\n') background = [] - if len(textLines) != len(new): + + if len(textLines) - 1 != len(new): return result, currCursor try: bgStat = Counter(newAttr).most_common(3) @@ -43,7 +45,7 @@ def trackHighlights(oldAttr, newAttr, text, lenght): if bgStat[1][1] > 40: background.append(bgStat[1][0]) except Exception as e: - background.append((1,1,1,1)) + background.append((7,7,0,0,0,0)) for line in range(len(new)): if old[line] != new[line]: for column in range(len(new[line])):