home · contact · privacy
Merge branch 'master' into 7drl2016 7drl2016 TCE_proper_minor_fixes
authorChristian Heller <c.heller@plomlompom.de>
Wed, 26 Aug 2020 23:34:43 +0000 (01:34 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 26 Aug 2020 23:34:43 +0000 (01:34 +0200)
1  2 
client/window_management.py

index 4d6a403281bbd9bb1a412a222d1060c94de64440,a896b0207e39bb970db07572145dbf07ae69f6b0..9d787375fae78b383e9dd219f9227495f7c93389
@@@ -18,11 -18,10 +18,11 @@@ screen_size = [0,0
  
  
  class Window:
 -    def __init__(self, title, draw_function, size):
 +    def __init__(self, title, draw_function, size, draw_scroll_hints):
          self.title = title
          self.draw = types.MethodType(draw_function, self)
          self.size = size
 +        self.draw_scroll_hints = draw_scroll_hints
  
  
  def set_windows():
      windows = []
      for config in windows_config:
          size = size_window(config["config"])
 -        window = Window(config["title"], config["func"], size)
 +        window = Window(config["title"], config["func"], size,
 +                        config["scroll_hints"])
          windows.append(window)
          place_window(window)
      redraw_windows = True
  def draw_screen():
  
      def healthy_addch(y, x, char, attr=0):
-         """Workaround for <http://stackoverflow.com/questions/7063128/>."""
+         """Wrap Python curses' addch() weirdnesses into sane interface.
+         Works around <http://stackoverflow.com/questions/7063128/> with
+         <https://stackoverflow.com/a/26797300> and enforces char to be a byte
+         instead of a single-char string.
+         """
          if y == screen_size[0] - 1 and x == screen_size[1] - 1:
              char_before = stdscr.inch(y, x - 1)
-             stdscr.addch(y, x - 1, char, attr)
+             stdscr.addch(y, x - 1, char.encode(), attr)
              stdscr.insstr(y, x - 1, " ")
-             stdscr.addch(y, x - 1, char_before)
+             stdscr.addch(y, x - 1,
+                          char_before & 0xFF, char_before & curses.A_ATTRIBUTES)
          else:
-             stdscr.addch(y, x, char, attr)
+             stdscr.addch(y, x, char.encode(), attr)
  
      def draw_window_border_lines():
          for win in windows:
          for win in windows:
              offset, winmap_size, winmap = win.draw()
              draw_winmap()
 -            draw_scroll_hints()
 +            if win.draw_scroll_hints:
 +                draw_scroll_hints()
  
      stdscr.erase()
      draw_window_border_lines()