rbcurse-core 0.0.13 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,147 +7,148 @@
7
7
  # @toprow : set to 0 for starters, top row to be displayed
8
8
  # @pcol (used for horiz scrolling, starts at 0)
9
9
  #
10
- module ListScrollable
11
- attr_reader :search_found_ix, :find_offset, :find_offset1
12
- attr_accessor :show_caret # 2010-01-23 23:06 our own fake insertion point
13
- def previous_row num=(($multiplier.nil? or $multiplier == 0) ? 1 : $multiplier)
14
- #return :UNHANDLED if @current_index == 0 # EVIL
15
- return :NO_PREVIOUS_ROW if @current_index == 0
16
- @oldrow = @current_index
17
- # NOTE that putting a multiplier inside, prevents an event from being triggered for each row's
18
- # on leave and on enter
19
- num.times {
20
- @current_index -= 1 if @current_index > 0
21
- }
22
- bounds_check
23
- $multiplier = 0
24
- end
25
- alias :up :previous_row
26
- def next_row num=(($multiplier.nil? or $multiplier == 0) ? 1 : $multiplier)
27
- rc = row_count
28
- # returning unhandled was clever .. when user hits down arrow on last row the focus goes to
29
- # next field. however, in long lists when user scrolls the sudden jumping to next is very annoying.
30
- # In combos, if focus was on last row, the combo closed which is not accceptable.
31
- #return :UNHANDLED if @current_index == rc-1 # EVIL !!!
32
- return :NO_NEXT_ROW if @current_index == rc-1 # changed 2011-10-5 so process can do something
33
- @oldrow = @current_index
34
- @current_index += 1*num if @current_index < rc
35
- bounds_check
36
- $multiplier = 0
37
- end
38
- alias :down :next_row
39
- def goto_bottom
40
- @oldrow = @current_index
41
- rc = row_count
42
- @current_index = rc -1
43
- bounds_check
44
- end
45
- alias :goto_end :goto_bottom
46
- def goto_top
47
- @oldrow = @current_index
48
- @current_index = 0
49
- bounds_check
50
- end
51
- alias :goto_start :goto_top
52
- def scroll_backward
53
- @oldrow = @current_index
54
- h = scrollatrow()
55
- m = $multiplier == 0? 1 : $multiplier
56
- @current_index -= h * m
57
- bounds_check
58
- $multiplier = 0
59
- end
60
- def scroll_forward
61
- @oldrow = @current_index
62
- h = scrollatrow()
63
- rc = row_count
64
- m = $multiplier == 0? 1 : $multiplier
65
- # more rows than box
66
- if h * m < rc
67
- # next 2 lines were preventing widget_scrolled from being set to true,
68
- # so i've modified it slightly as per scroll_down 2011-11-1
69
- #@toprow += h+1 #if @current_index+h < rc
70
- #@current_index = @toprow
71
- @current_index += h+1
72
- else
73
- # fewer rows than box
10
+ module RubyCurses
11
+ module ListScrollable
12
+ attr_reader :search_found_ix, :find_offset, :find_offset1
13
+ attr_accessor :show_caret # 2010-01-23 23:06 our own fake insertion point
14
+ def previous_row num=(($multiplier.nil? or $multiplier == 0) ? 1 : $multiplier)
15
+ #return :UNHANDLED if @current_index == 0 # EVIL
16
+ return :NO_PREVIOUS_ROW if @current_index == 0
17
+ @oldrow = @current_index
18
+ # NOTE that putting a multiplier inside, prevents an event from being triggered for each row's
19
+ # on leave and on enter
20
+ num.times {
21
+ @current_index -= 1 if @current_index > 0
22
+ }
23
+ bounds_check
24
+ $multiplier = 0
25
+ end
26
+ alias :up :previous_row
27
+ def next_row num=(($multiplier.nil? or $multiplier == 0) ? 1 : $multiplier)
28
+ rc = row_count
29
+ # returning unhandled was clever .. when user hits down arrow on last row the focus goes to
30
+ # next field. however, in long lists when user scrolls the sudden jumping to next is very annoying.
31
+ # In combos, if focus was on last row, the combo closed which is not accceptable.
32
+ #return :UNHANDLED if @current_index == rc-1 # EVIL !!!
33
+ return :NO_NEXT_ROW if @current_index == rc-1 # changed 2011-10-5 so process can do something
34
+ @oldrow = @current_index
35
+ @current_index += 1*num if @current_index < rc
36
+ bounds_check
37
+ $multiplier = 0
38
+ end
39
+ alias :down :next_row
40
+ def goto_bottom
41
+ @oldrow = @current_index
42
+ rc = row_count
74
43
  @current_index = rc -1
44
+ bounds_check
45
+ end
46
+ alias :goto_end :goto_bottom
47
+ def goto_top
48
+ @oldrow = @current_index
49
+ @current_index = 0
50
+ bounds_check
51
+ end
52
+ alias :goto_start :goto_top
53
+ def scroll_backward
54
+ @oldrow = @current_index
55
+ h = scrollatrow()
56
+ m = $multiplier == 0? 1 : $multiplier
57
+ @current_index -= h * m
58
+ bounds_check
59
+ $multiplier = 0
60
+ end
61
+ def scroll_forward
62
+ @oldrow = @current_index
63
+ h = scrollatrow()
64
+ rc = row_count
65
+ m = $multiplier == 0? 1 : $multiplier
66
+ # more rows than box
67
+ if h * m < rc
68
+ # next 2 lines were preventing widget_scrolled from being set to true,
69
+ # so i've modified it slightly as per scroll_down 2011-11-1
70
+ #@toprow += h+1 #if @current_index+h < rc
71
+ #@current_index = @toprow
72
+ @current_index += h+1
73
+ else
74
+ # fewer rows than box
75
+ @current_index = rc -1
76
+ end
77
+ #@current_index += h+1 #if @current_index+h < rc
78
+ bounds_check
75
79
  end
76
- #@current_index += h+1 #if @current_index+h < rc
77
- bounds_check
78
- end
79
80
 
80
- ##
81
- # please set oldrow before calling this. Store current_index as oldrow before changing. NOTE
82
- def bounds_check
83
- h = scrollatrow()
84
- rc = row_count
85
- @old_toprow = @toprow
81
+ ##
82
+ # please set oldrow before calling this. Store current_index as oldrow before changing. NOTE
83
+ def bounds_check
84
+ h = scrollatrow()
85
+ rc = row_count
86
+ @old_toprow = @toprow
86
87
 
87
- @_header_adjustment ||= 0
88
- @current_index = 0 if @current_index < 0 # not lt 0
89
- @current_index = rc-1 if @current_index >= rc && rc>0 # not gt rowcount
90
- @toprow = rc-h-1 if rc > h && @toprow > rc - h - 1 # toprow shows full page if possible
91
- # curr has gone below table, move toprow forward
92
- if @current_index - @toprow > h
93
- @toprow = @current_index - h
94
- elsif @current_index < @toprow
95
- # curr has gone above table, move toprow up
96
- # sometimes current row gets hidden below header line
97
- @toprow = @current_index - (@_header_adjustment ||0)
98
- # prev line can make top row -1, however, if we are going back, lets
99
- # put it at start of page, so first or second row is not hidden
100
- @toprow = 0 if @toprow < h
101
- end
102
-
103
- @row_changed = false
104
- if @oldrow != @current_index
105
- on_leave_row @oldrow if respond_to? :on_leave_row # to be defined by widget that has included this
106
- on_enter_row @current_index if respond_to? :on_enter_row # to be defined by widget that has included this
107
- set_form_row
108
- @row_changed = true
109
- end
110
- #set_form_row # 2011-10-13
88
+ @_header_adjustment ||= 0
89
+ @current_index = 0 if @current_index < 0 # not lt 0
90
+ @current_index = rc-1 if @current_index >= rc && rc>0 # not gt rowcount
91
+ @toprow = rc-h-1 if rc > h && @toprow > rc - h - 1 # toprow shows full page if possible
92
+ # curr has gone below table, move toprow forward
93
+ if @current_index - @toprow > h
94
+ @toprow = @current_index - h
95
+ elsif @current_index < @toprow
96
+ # curr has gone above table, move toprow up
97
+ # sometimes current row gets hidden below header line
98
+ @toprow = @current_index - (@_header_adjustment ||0)
99
+ # prev line can make top row -1, however, if we are going back, lets
100
+ # put it at start of page, so first or second row is not hidden
101
+ @toprow = 0 if @toprow < h
102
+ end
111
103
 
112
- if @old_toprow != @toprow # only if scrolling has happened should we repaint
113
- @repaint_required = true #if @old_toprow != @toprow # only if scrolling has happened should we repaint
114
- @widget_scrolled = true
115
- end
116
- end
117
- # the cursor should be appropriately positioned
118
- def set_form_row
119
- r,c = rowcol
120
- @rows_panned ||= 0
121
-
122
- win_row = 0 # 2010-02-07 21:44 now ext offset added by widget
104
+ @row_changed = false
105
+ if @oldrow != @current_index
106
+ on_leave_row @oldrow if respond_to? :on_leave_row # to be defined by widget that has included this
107
+ on_enter_row @current_index if respond_to? :on_enter_row # to be defined by widget that has included this
108
+ set_form_row
109
+ @row_changed = true
110
+ end
111
+ #set_form_row # 2011-10-13
123
112
 
124
- # when the toprow is set externally then cursor can be mispositioned since
125
- # bounds_check has not been called
126
- if @current_index < @toprow
127
- # cursor is outside table
128
- @current_index = @toprow # ??? only if toprow 2010-10-19 12:56
113
+ if @old_toprow != @toprow # only if scrolling has happened should we repaint
114
+ @repaint_required = true #if @old_toprow != @toprow # only if scrolling has happened should we repaint
115
+ @widget_scrolled = true
116
+ end
129
117
  end
118
+ # the cursor should be appropriately positioned
119
+ def set_form_row
120
+ r,c = rowcol
121
+ @rows_panned ||= 0
130
122
 
131
- row = win_row + r + (@current_index-@toprow) + @rows_panned
132
- #$log.debug " #{@name} set_form_row #{row} = ci #{@current_index} + r #{r} + winrow: #{win_row} - tr:#{@toprow} #{@toprow} + rowsp #{@rows_panned} "
133
- # row should not be < r or greater than r+height TODO FIXME
123
+ win_row = 0 # 2010-02-07 21:44 now ext offset added by widget
124
+
125
+ # when the toprow is set externally then cursor can be mispositioned since
126
+ # bounds_check has not been called
127
+ if @current_index < @toprow
128
+ # cursor is outside table
129
+ @current_index = @toprow # ??? only if toprow 2010-10-19 12:56
130
+ end
131
+
132
+ row = win_row + r + (@current_index-@toprow) + @rows_panned
133
+ #$log.debug " #{@name} set_form_row #{row} = ci #{@current_index} + r #{r} + winrow: #{win_row} - tr:#{@toprow} #{@toprow} + rowsp #{@rows_panned} "
134
+ # row should not be < r or greater than r+height TODO FIXME
134
135
 
135
-
136
-
137
- setrowcol row, nil
138
- #show_caret_func
139
- end
140
- ## In many situations like placing a textarea or textview inside a splitpane
141
- ##+ or scrollpane there have been issues getting the cursor at the right point,
142
- ##+ since there are multiple buffers. Finally in tabbedpanes, i am pretty
143
- ##+ lost getting the correct position, and i feel we should set the cursor
144
- ##+ internally once and for all. So here's an attempt
145
136
 
146
- # paint the cursor ourselves on the widget, rather than rely on getting to the top window with
147
- # the correct coordinates. I do need to erase cursor too. Can be dicey, but is worth the attempt.
148
- # This works perfectly, except for when placed in a Tabbedpane since that prints the form with a row offset
149
- #+ of 2 and the widget does not know of the offset. cursor gets it correct since the form has an add_row.
150
- def show_caret_func
137
+
138
+ setrowcol row, nil
139
+ #show_caret_func
140
+ end
141
+ ## In many situations like placing a textarea or textview inside a splitpane
142
+ ##+ or scrollpane there have been issues getting the cursor at the right point,
143
+ ##+ since there are multiple buffers. Finally in tabbedpanes, i am pretty
144
+ ##+ lost getting the correct position, and i feel we should set the cursor
145
+ ##+ internally once and for all. So here's an attempt
146
+
147
+ # paint the cursor ourselves on the widget, rather than rely on getting to the top window with
148
+ # the correct coordinates. I do need to erase cursor too. Can be dicey, but is worth the attempt.
149
+ # This works perfectly, except for when placed in a Tabbedpane since that prints the form with a row offset
150
+ #+ of 2 and the widget does not know of the offset. cursor gets it correct since the form has an add_row.
151
+ def show_caret_func
151
152
  return unless @show_caret
152
153
  # trying highlighting cursor 2010-01-23 19:07 TABBEDPANE TRYING
153
154
  # TODO take into account rows_panned etc ? I don't think so.
@@ -164,107 +165,107 @@ module ListScrollable
164
165
 
165
166
  $log.debug " #{@name} printing CARET at #{yy},#{xx}: fwt:- #{@win_top} r:#{@row} tr:-#{@toprow}+ci:#{@current_index},+r #{r} "
166
167
  if !@oldcursorrow.nil?
167
- @graphic.mvchgat(y=@oldcursorrow, x=@oldcursorcol, 1, Ncurses::A_NORMAL, $datacolor, NIL)
168
+ @graphic.mvchgat(y=@oldcursorrow, x=@oldcursorcol, 1, Ncurses::A_NORMAL, $datacolor, NIL)
168
169
  end
169
170
  @oldcursorrow = yy
170
171
  @oldcursorcol = xx
171
172
  @graphic.mvchgat(y=yy, x=xx, 1, Ncurses::A_NORMAL, $reversecolor, nil)
172
173
  @buffer_modified = true
173
- end
174
- def scroll_right
175
- $log.debug " inside scroll_right "
176
- hscrollcols = $multiplier > 0 ? $multiplier : @width/2
177
- #hscrollcols = $multiplier > 0 ? $multiplier : 1 # for testing out
178
- $log.debug " scroll_right mult:#{$multiplier} , hscrollcols #{hscrollcols}, pcol #{@pcol} w: #{@width} ll:#{@longest_line} "
179
- #blen = @buffer.rstrip.length
180
- blen = @longest_line
181
- if @pcol + @width < blen
182
- @pcol += hscrollcols if @pcol + @width < blen
183
- else
184
- # due to some change somewhere, sometimes width = longest which is not true
185
- hscrollcols = $multiplier > 0 ? $multiplier : 1
186
- @pcol += hscrollcols
187
- end
188
- @repaint_required = true
189
- end
190
- def scroll_left
191
- hscrollcols = $multiplier > 0 ? $multiplier : @width/2
192
- @pcol -= hscrollcols if @pcol > 0
193
- @pcol = 0 if @pcol < 0
194
- @repaint_required = true
195
- end
196
- ## returns cursor to last row (if moving columns in same row, won't work)
197
- # Useful after a large move such as 12j, 20 C-n etc, Mapped to '' in textview
198
- def goto_last_position
199
- return unless @oldrow
200
- @current_index = @oldrow
201
- bounds_check
202
- end
203
- # not that saving content_rows is buggy since we add rows.
204
- ##
205
- # caution, this now uses winrow not prow
206
- ## for user to know which row is being focussed on
207
- def focussed_index
208
- @current_index # 2009-01-07 14:35
209
- end
210
- # only to be used in single selection cases as focussed item FIXME.
211
- # best not to use, as can be implementation dep, use current_index
212
- def selected_item
213
- get_content()[focussed_index()]
214
- end
215
- #alias :current_index :focussed_index
216
- alias :selected_index :focussed_index
217
-
218
- # finds the next match for the char pressed
219
- # returning the index
220
- # If we are only checking first char, then why chomp ?
221
- # Please note that this is used now by tree, and list can have non-strings, so use to_s
222
- def next_match char
223
- data = get_content
224
- row = focussed_index + 1
225
- row.upto(data.length-1) do |ix|
226
- #val = data[ix].chomp rescue return # 2010-01-05 15:28 crashed on trueclass
227
- val = data[ix].to_s rescue return # 2010-01-05 15:28 crashed on trueclass
228
- #if val[0,1] == char #and val != currval
229
- if val[0,1].casecmp(char) == 0 #AND VAL != CURRval
230
- return ix
174
+ end
175
+ def scroll_right
176
+ $log.debug " inside scroll_right "
177
+ hscrollcols = $multiplier > 0 ? $multiplier : @width/2
178
+ #hscrollcols = $multiplier > 0 ? $multiplier : 1 # for testing out
179
+ $log.debug " scroll_right mult:#{$multiplier} , hscrollcols #{hscrollcols}, pcol #{@pcol} w: #{@width} ll:#{@longest_line} "
180
+ #blen = @buffer.rstrip.length
181
+ blen = @longest_line
182
+ if @pcol + @width < blen
183
+ @pcol += hscrollcols if @pcol + @width < blen
184
+ else
185
+ # due to some change somewhere, sometimes width = longest which is not true
186
+ hscrollcols = $multiplier > 0 ? $multiplier : 1
187
+ @pcol += hscrollcols
231
188
  end
189
+ @repaint_required = true
190
+ end
191
+ def scroll_left
192
+ hscrollcols = $multiplier > 0 ? $multiplier : @width/2
193
+ @pcol -= hscrollcols if @pcol > 0
194
+ @pcol = 0 if @pcol < 0
195
+ @repaint_required = true
196
+ end
197
+ ## returns cursor to last row (if moving columns in same row, won't work)
198
+ # Useful after a large move such as 12j, 20 C-n etc, Mapped to '' in textview
199
+ def goto_last_position
200
+ return unless @oldrow
201
+ @current_index = @oldrow
202
+ bounds_check
232
203
  end
233
- row = focussed_index - 1
234
- 0.upto(row) do |ix|
235
- #val = data[ix].chomp
236
- val = data[ix].to_s
237
- #if val[0,1] == char #and val != currval
238
- if val[0,1].casecmp(char) == 0 #and val != currval
239
- return ix
204
+ # not that saving content_rows is buggy since we add rows.
205
+ ##
206
+ # caution, this now uses winrow not prow
207
+ ## for user to know which row is being focussed on
208
+ def focussed_index
209
+ @current_index # 2009-01-07 14:35
210
+ end
211
+ # only to be used in single selection cases as focussed item FIXME.
212
+ # best not to use, as can be implementation dep, use current_index
213
+ def selected_item
214
+ get_content()[focussed_index()]
215
+ end
216
+ #alias :current_index :focussed_index
217
+ alias :selected_index :focussed_index
218
+
219
+ # finds the next match for the char pressed
220
+ # returning the index
221
+ # If we are only checking first char, then why chomp ?
222
+ # Please note that this is used now by tree, and list can have non-strings, so use to_s
223
+ def next_match char
224
+ data = get_content
225
+ row = focussed_index + 1
226
+ row.upto(data.length-1) do |ix|
227
+ #val = data[ix].chomp rescue return # 2010-01-05 15:28 crashed on trueclass
228
+ val = data[ix].to_s rescue return # 2010-01-05 15:28 crashed on trueclass
229
+ #if val[0,1] == char #and val != currval
230
+ if val[0,1].casecmp(char) == 0 #AND VAL != CURRval
231
+ return ix
232
+ end
240
233
  end
234
+ row = focussed_index - 1
235
+ 0.upto(row) do |ix|
236
+ #val = data[ix].chomp
237
+ val = data[ix].to_s
238
+ #if val[0,1] == char #and val != currval
239
+ if val[0,1].casecmp(char) == 0 #and val != currval
240
+ return ix
241
+ end
242
+ end
243
+ return -1
244
+ end
245
+ ## 2008-12-18 18:03
246
+ # sets the selection to the next row starting with char
247
+ def set_selection_for_char char
248
+ @oldrow = @current_index
249
+ @last_regex = "^#{char}"
250
+ ix = next_match char
251
+ @current_index = ix if ix && ix != -1
252
+ @search_found_ix = @current_index
253
+ bounds_check
254
+ return ix
241
255
  end
242
- return -1
243
- end
244
- ## 2008-12-18 18:03
245
- # sets the selection to the next row starting with char
246
- def set_selection_for_char char
247
- @oldrow = @current_index
248
- @last_regex = "^#{char}"
249
- ix = next_match char
250
- @current_index = ix if ix && ix != -1
251
- @search_found_ix = @current_index
252
- bounds_check
253
- return ix
254
- end
255
256
 
256
- ##
257
- # ensures that the given row is focussed
258
- # new version of older one that was not perfect.
259
- # 2009-01-17 13:25
260
- def set_focus_on arow
261
- @oldrow = @current_index
262
- # the next line fixed cursor positioning, but when wraparound then it messed up
263
- # matching line would get hidden
264
- @current_index = arow
265
- bounds_check if @oldrow != @current_index
266
- end
267
- ##
257
+ ##
258
+ # ensures that the given row is focussed
259
+ # new version of older one that was not perfect.
260
+ # 2009-01-17 13:25
261
+ def set_focus_on arow
262
+ @oldrow = @current_index
263
+ # the next line fixed cursor positioning, but when wraparound then it messed up
264
+ # matching line would get hidden
265
+ @current_index = arow
266
+ bounds_check if @oldrow != @current_index
267
+ end
268
+ ##
268
269
  def install_keys
269
270
  =begin
270
271
  @KEY_ASK_FIND_FORWARD ||= ?\M-f.getbyte(0)
@@ -385,30 +386,30 @@ module ListScrollable
385
386
  alert("No previous search. Search first.")
386
387
  return
387
388
  end
388
- ix = _find_next
389
- regex = @last_regex
390
- if ix.nil?
391
- alert("No more matching data for: #{regex}")
392
- else
393
- set_focus_on(ix)
394
- set_form_col @find_offset1
389
+ ix = _find_next
390
+ regex = @last_regex
391
+ if ix.nil?
392
+ alert("No more matching data for: #{regex}")
393
+ else
394
+ set_focus_on(ix)
395
+ set_form_col @find_offset1
395
396
  @cell_editor.component.curpos = (@find_offset||0) if @cell_editing_allowed
396
- end
397
+ end
397
398
  end
398
399
  def find_prev
399
400
  unless @last_regex
400
401
  alert("No previous search. Search first.")
401
402
  return
402
403
  end
403
- ix = _find_prev
404
- regex = @last_regex
405
- if ix.nil?
406
- alert("No previous matching data for: #{regex}")
407
- else
408
- set_focus_on(ix)
409
- set_form_col @find_offset
410
- @cell_editor.component.curpos = (@find_offset||0) if @cell_editing_allowed
411
- end
404
+ ix = _find_prev
405
+ regex = @last_regex
406
+ if ix.nil?
407
+ alert("No previous matching data for: #{regex}")
408
+ else
409
+ set_focus_on(ix)
410
+ set_form_col @find_offset
411
+ @cell_editor.component.curpos = (@find_offset||0) if @cell_editing_allowed
412
+ end
412
413
  end
413
414
  ##
414
415
  # find backwards
@@ -419,22 +420,22 @@ module ListScrollable
419
420
  warn "No previous search" and return if regex.nil?
420
421
  #$log.debug " _find_prev #{@search_found_ix} : #{@current_index}"
421
422
  if start != 0
422
- start -= 1 unless start == 0
423
- @last_regex = regex
424
- @search_start_ix = start
425
- regex = Regexp.new(regex, Regexp::IGNORECASE) if @search_case
426
- start.downto(0) do |ix|
427
- row = @list[ix].to_s
428
- m=row.match(regex)
429
- if !m.nil?
430
- @find_offset = m.offset(0)[0]
431
- @find_offset1 = m.offset(0)[1]
432
- ix += (@_header_adjustment || 0)
433
- @search_found_ix = ix
434
- return ix
423
+ start -= 1 unless start == 0
424
+ @last_regex = regex
425
+ @search_start_ix = start
426
+ regex = Regexp.new(regex, Regexp::IGNORECASE) if @search_case
427
+ start.downto(0) do |ix|
428
+ row = @list[ix].to_s
429
+ m=row.match(regex)
430
+ if !m.nil?
431
+ @find_offset = m.offset(0)[0]
432
+ @find_offset1 = m.offset(0)[1]
433
+ ix += (@_header_adjustment || 0)
434
+ @search_found_ix = ix
435
+ return ix
436
+ end
435
437
  end
436
438
  end
437
- end
438
439
  fend = start-1
439
440
  start = @list.size-1
440
441
  if @search_wrap
@@ -642,6 +643,7 @@ module ListScrollable
642
643
  ix = @current_index
643
644
  return if is_row_selected ix
644
645
  r = _convert_index_to_printable_row() unless r
646
+ return unless r # row is not longer visible 2013-04-10 - 16:37
645
647
  attrib = @focussed_attrib || 'bold'
646
648
 
647
649
  when :UNFOCUSSED
@@ -660,6 +662,7 @@ module ListScrollable
660
662
  att = get_attrib(attrib) #if @focussed_attrib
661
663
  @graphic.mvchgat(y=r, x=c, @width-@internal_width, att , acolor , nil)
662
664
  end
663
-
664
665
 
666
+
667
+ end
665
668
  end