diff --git a/src/fenrirscreenreader/core/attributeManager.py b/src/fenrirscreenreader/core/attributeManager.py index 34c0496b..3dbe28ba 100644 --- a/src/fenrirscreenreader/core/attributeManager.py +++ b/src/fenrirscreenreader/core/attributeManager.py @@ -14,7 +14,7 @@ class attributeManager(): self.currAttributeDelta = '' self.currAttributeCursor = None self.prefAttributeCursor = None - self.setDefaultAttributes() + self.initDefaultAttributes() self.prevLastCursorAttribute = None self.currLastCursorAttribute = None @@ -30,7 +30,7 @@ class attributeManager(): self.currLastCursorAttribute = None def isLastCursorAttributeChange(self): if self.prevLastCursorAttribute == None: - return True + return False return self.prevLastCursorAttribute != self.currLastCursorAttribute def getCurrAttributeCursor(self): return self.currAttributeCursor @@ -76,7 +76,13 @@ class attributeManager(): except: pass return None - def setDefaultAttributes(self): + def appendDefaultAttributes(self, attribute): + if not attribute: + return + if len(attribute) != 10: + return + self.defaultAttributes.append(attribute) + def initDefaultAttributes(self): self.defaultAttributes = [None] self.defaultAttributes.append([ 'default', # fg @@ -89,19 +95,7 @@ class attributeManager(): False, # blink 'default', # fontsize 'default' # fontfamily - ]) #end attribute - self.defaultAttributes.append([ - 'white', # fg - 'black', # bg - False, # bold - False, # italics - False, # underscore - False, # strikethrough - False, # reverse - False, # blink - 'default', # fontsize - 'default' # fontfamily - ]) #end attribute + ]) #end attribute def isDefaultAttribute(self,attribute): return attribute in self.defaultAttributes def hasAttributes(self, cursor, update=True): @@ -110,16 +104,19 @@ class attributeManager(): cursorPos = cursor.copy() try: attribute = self.getAttributeByXY( cursorPos['x'], cursorPos['y']) - - if self.isDefaultAttribute(attribute): - return False + if update: self.setLastCursorAttribute(attribute) if not self.isLastCursorAttributeChange(): return False + + if self.isDefaultAttribute(attribute): + return False + except Exception as e: return False return True + def formatAttributes(self, attribute, attributeFormatString = ''): # "black", # "red", diff --git a/src/fenrirscreenreader/core/screenManager.py b/src/fenrirscreenreader/core/screenManager.py index 12d22330..e3347ceb 100644 --- a/src/fenrirscreenreader/core/screenManager.py +++ b/src/fenrirscreenreader/core/screenManager.py @@ -175,7 +175,6 @@ class screenManager(): self.env['runtime']['attributeManager'].setAttributeCursor(attributeCursor) self.env['runtime']['attributeManager'].setAttributeDelta(attributeDelta) except Exception as e: - print(e) self.env['runtime']['debug'].writeDebugOut('screenManager:update:highlight: ' + str(e),debug.debugLevel.ERROR) def isSuspendingScreen(self, screen = None): diff --git a/src/fenrirscreenreader/screenDriver/vcsaDriver.py b/src/fenrirscreenreader/screenDriver/vcsaDriver.py index ce945753..1cedc20f 100644 --- a/src/fenrirscreenreader/screenDriver/vcsaDriver.py +++ b/src/fenrirscreenreader/screenDriver/vcsaDriver.py @@ -34,6 +34,18 @@ class driver(screenDriver): self.hichar = None def initialize(self, environment): self.env = environment + self.env['runtime']['attributeManager'].appendDefaultAttributes([ + self.fgColorValues[7], # fg + self.bgColorValues[0], # bg + False, # bold + False, # italics + False, # underscore + False, # strikethrough + False, # reverse + False, # blink + 'default', # fontsize + 'default' # fontfamily + ]) #end attribute ) self.env['runtime']['processManager'].addCustomEventThread(self.updateWatchdog, multiprocess=True) def getCurrScreen(self): self.env['screen']['oldTTY'] = self.env['screen']['newTTY'] @@ -205,8 +217,8 @@ class driver(screenDriver): #ink = 7 #paper = 0 #ch = ' ' - charAttrib = ( - self.fgColorValues[15], # fg + charAttrib = [ + self.fgColorValues[7], # fg self.bgColorValues[0], # bg False, # bold False, # italics @@ -215,7 +227,7 @@ class driver(screenDriver): False, # reverse False, # blink 'default', # fontsize - 'default') # fontfamily + 'default'] # fontfamily lineAttrib.append(charAttrib) lineText += ' ' continue @@ -229,6 +241,8 @@ class driver(screenDriver): blink = 0 if attr & 1: blink = 1 + # blink seems to be set always, ignore for now + blink = 0 bold = 0 if attr & 16: bold = 1 @@ -240,7 +254,7 @@ class driver(screenDriver): lineText += self.charmap[ch] except KeyError: lineText += '?' - charAttrib = ( + charAttrib = [ self.fgColorValues[ink], self.bgColorValues[paper], bold == 1, # bold @@ -250,7 +264,7 @@ class driver(screenDriver): False, # reverse blink == 1, # blink 'default', # fontsize - 'default') # fontfamily + 'default'] # fontfamily lineAttrib.append(charAttrib) allText += lineText if y + 1 < rows: