diff --git a/src/list_window.c b/src/list_window.c
index 3faf437f791a9b305d303c0139a28ec945a4ac5e..e11e75acf986c6d339c349e4d537ebd3dd0a1589 100644 (file)
--- a/src/list_window.c
+++ b/src/list_window.c
}
void
-list_window_set_selected(struct list_window *lw, unsigned n)
+list_window_set_cursor(struct list_window *lw, unsigned i)
+{
+ lw->range_selection = false;
+ lw->selected = i;
+ lw->selected_start = i;
+ lw->selected_end = i;
+}
+
+void
+list_window_move_cursor(struct list_window *lw, unsigned n)
{
lw->selected = n;
if(lw->range_selection)
list_window_next(struct list_window *lw, unsigned length)
{
if (lw->selected + 1 < length)
- list_window_set_selected(lw, lw->selected + 1);
+ list_window_move_cursor(lw, lw->selected + 1);
else if (options.list_wrap)
- list_window_set_selected(lw, 0);
+ list_window_move_cursor(lw, 0);
}
static void
list_window_previous(struct list_window *lw, unsigned length)
{
if (lw->selected > 0)
- list_window_set_selected(lw, lw->selected - 1);
+ list_window_move_cursor(lw, lw->selected - 1);
else if (options.list_wrap)
- list_window_set_selected(lw, length-1);
+ list_window_move_cursor(lw, length-1);
}
static void
list_window_top(struct list_window *lw)
{
if (lw->start == 0)
- list_window_set_selected(lw, lw->start);
+ list_window_move_cursor(lw, lw->start);
else
if ((unsigned) options.scroll_offset * 2 >= lw->rows)
- list_window_set_selected(lw, lw->start + lw->rows / 2);
+ list_window_move_cursor(lw, lw->start + lw->rows / 2);
else
- list_window_set_selected(lw, lw->start + options.scroll_offset);
+ list_window_move_cursor(lw, lw->start + options.scroll_offset);
}
static void
list_window_middle(struct list_window *lw, unsigned length)
{
if (length >= lw->rows)
- list_window_set_selected(lw, lw->start + lw->rows / 2);
+ list_window_move_cursor(lw, lw->start + lw->rows / 2);
else
- list_window_set_selected(lw, length / 2);
+ list_window_move_cursor(lw, length / 2);
}
static void
{
if (length >= lw->rows)
if ((unsigned) options.scroll_offset * 2 >= lw->rows)
- list_window_set_selected(lw, lw->start + lw->rows / 2);
+ list_window_move_cursor(lw, lw->start + lw->rows / 2);
else
if (lw->start + lw->rows == length)
- list_window_set_selected(lw, length - 1);
+ list_window_move_cursor(lw, length - 1);
else
- list_window_set_selected(lw, lw->start + lw->rows - 1 - options.scroll_offset);
+ list_window_move_cursor(lw, lw->start + lw->rows - 1 - options.scroll_offset);
else
- list_window_set_selected(lw, length - 1);
+ list_window_move_cursor(lw, length - 1);
}
static void
list_window_first(struct list_window *lw)
{
- list_window_set_selected(lw, 0);
+ list_window_move_cursor(lw, 0);
}
static void
list_window_last(struct list_window *lw, unsigned length)
{
if (length > 0)
- list_window_set_selected(lw, length - 1);
+ list_window_move_cursor(lw, length - 1);
else
- list_window_set_selected(lw, 0);
+ list_window_move_cursor(lw, 0);
}
static void
if (lw->rows < 2)
return;
if (lw->selected + lw->rows < length)
- list_window_set_selected(lw, lw->selected + lw->rows - 1);
+ list_window_move_cursor(lw, lw->selected + lw->rows - 1);
else
list_window_last(lw, length);
}
if (lw->rows < 2)
return;
if (lw->selected > lw->rows - 1)
- list_window_set_selected(lw, lw->selected - lw->rows + 1);
+ list_window_move_cursor(lw, lw->selected - lw->rows + 1);
else
list_window_first(lw);
}
if(lw->range_selection)
{
screen_status_printf(_("Range selection disabled"));
- lw->range_selection = false;
- list_window_set_selected(lw, lw->selected);
+ list_window_set_cursor(lw, lw->selected);
}
else
{