def repaint
      woffset = 2
      coffset = 1

      # 2016-01-14 - replacing 1 with space since junk is showing up in some cases (in mvvline/mvhline)
      space_char = " ".codepoints.first

      if @parent
        woffset = 0 if @parent.suppress_borders
        @border_attrib ||= @parent.border_attrib
        case @side
        when :right
          @row = @parent.row+1
          @col = @parent.col + @parent.width - 0
          @length = @parent.height - woffset
        when :left
          @row = @parent.row+1
          @col = @parent.col+0 #+ @parent.width - 1
          @length = @parent.height - woffset
        when :top
          @row = @parent.row+0
          @col = @parent.col + @parent.col_offset #+ @parent.width - 1
          @length = @parent.width - woffset
        when :bottom
          @row = @parent.row+@parent.height-0 #1
          @col = @parent.col+@parent.col_offset #+ @parent.width - 1
          @length = @parent.width - woffset
        end
      else
        # row, col and length should be passed
      end
      my_win = @form ? @form.window : @target_window
      @graphic = my_win unless @graphic
      raise "graphic is nil in divider, perhaps form was nil when creating" unless @graphic
      return unless @repaint_required

      # first print a right side vertical line
      #bc = $bottomcolor  # dark blue
      bc = get_color($datacolor, :cyan, :black)
      bordercolor = @border_color || bc
      borderatt = @border_attrib || Ncurses::A_REVERSE
      if @focussed 
        bordercolor = $promptcolor || bordercolor
      end

      borderatt = convert_attrib_to_sym(borderatt) if borderatt.is_a? Symbol

      @graphic.attron(Ncurses.COLOR_PAIR(bordercolor) | borderatt)
      $log.debug " XXX DIVIDER #{@row} #{@col} #{@length} "
      case @side
      when :right, :left
        @graphic.mvvline(@row, @col, space_char, @length)
      when :top, :bottom
        @graphic.mvhline(@row, @col, space_char, @length)
      end
      @graphic.attroff(Ncurses.COLOR_PAIR(bordercolor) | borderatt)
      _paint_marker
      #alert "divider repaint at #{row} #{col} "

      @repaint_required = false
    end
def repaint
      woffset = 2
      coffset = 1

      # 2016-01-14 - replacing 1 with space since junk is showing up in some cases (in mvvline/mvhline)
      space_char = " ".codepoints.first

      if @parent
        woffset = 0 if @parent.suppress_borders
        @border_attrib ||= @parent.border_attrib
        case @side
        when :right
          @row = @parent.row+1
          @col = @parent.col + @parent.width - 0
          @length = @parent.height - woffset
        when :left
          @row = @parent.row+1
          @col = @parent.col+0 #+ @parent.width - 1
          @length = @parent.height - woffset
        when :top
          @row = @parent.row+0
          @col = @parent.col + @parent.col_offset #+ @parent.width - 1
          @length = @parent.width - woffset
        when :bottom
          @row = @parent.row+@parent.height-0 #1
          @col = @parent.col+@parent.col_offset #+ @parent.width - 1
          @length = @parent.width - woffset
        end
      else
        # row, col and length should be passed
      end
      my_win = @form ? @form.window : @target_window
      @graphic = my_win unless @graphic
      raise "graphic is nil in divider, perhaps form was nil when creating" unless @graphic
      return unless @repaint_required

      # first print a right side vertical line
      #bc = $bottomcolor  # dark blue
      bc = get_color($datacolor, :cyan, :black)
      bordercolor = @border_color || bc
      borderatt = @border_attrib || Ncurses::A_REVERSE
      if @focussed 
        bordercolor = $promptcolor || bordercolor
      end

      borderatt = convert_attrib_to_sym(borderatt) if borderatt.is_a? Symbol

      @graphic.attron(Ncurses.COLOR_PAIR(bordercolor) | borderatt)
      $log.debug " XXX DIVIDER #{@row} #{@col} #{@length} "
      case @side
      when :right, :left
        @graphic.mvvline(@row, @col, space_char, @length)
      when :top, :bottom
        @graphic.mvhline(@row, @col, space_char, @length)
      end
      @graphic.attroff(Ncurses.COLOR_PAIR(bordercolor) | borderatt)
      _paint_marker
      #alert "divider repaint at #{row} #{col} "

      @repaint_required = false
    end
repaint the scrollbar
 Taking the data from parent as late as possible in case parent resized, or
 moved around by a container.
 NOTE: sometimes if this is inside another object, the divider repaints but then
 is wiped out when that objects print_border is called. So such an obkect (e.g.
 vimsplit) should call repaint after its has done its own repaint. that does mean
 the repaint happens twice during movement