mirror of
https://github.com/davatorium/rofi.git
synced 2025-02-17 15:45:56 -05:00
parent
fce721a105
commit
858d6c030c
1 changed files with 40 additions and 13 deletions
|
@ -583,13 +583,20 @@ unsigned int listview_get_selected(listview *lv) {
|
|||
}
|
||||
|
||||
void listview_set_selected(listview *lv, unsigned int selected) {
|
||||
if (lv && lv->req_elements > 0) {
|
||||
if (lv == NULL) {
|
||||
return;
|
||||
}
|
||||
if (lv->req_elements > 0) {
|
||||
lv->selected = MIN(selected, lv->req_elements - 1);
|
||||
lv->barview.direction = LEFT_TO_RIGHT;
|
||||
widget_queue_redraw(WIDGET(lv));
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
if (lv->sc_callback) {
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
}
|
||||
} else if (lv->req_elements == 0) {
|
||||
lv->sc_callback(lv, UINT32_MAX, lv->sc_udata);
|
||||
if (lv->sc_callback) {
|
||||
lv->sc_callback(lv, UINT32_MAX, lv->sc_udata);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -790,7 +797,9 @@ static void listview_nav_up_int(listview *lv) {
|
|||
lv->selected--;
|
||||
lv->barview.direction = RIGHT_TO_LEFT;
|
||||
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
if (lv->sc_callback) {
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
}
|
||||
widget_queue_redraw(WIDGET(lv));
|
||||
}
|
||||
static void listview_nav_down_int(listview *lv) {
|
||||
|
@ -805,7 +814,9 @@ static void listview_nav_down_int(listview *lv) {
|
|||
? MIN(lv->req_elements - 1, lv->selected + 1)
|
||||
: 0;
|
||||
lv->barview.direction = LEFT_TO_RIGHT;
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
if (lv->sc_callback) {
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
}
|
||||
widget_queue_redraw(WIDGET(lv));
|
||||
}
|
||||
void listview_nav_next(listview *lv) {
|
||||
|
@ -824,14 +835,18 @@ void listview_nav_prev(listview *lv) {
|
|||
static void listview_nav_column_left_int(listview *lv) {
|
||||
if (lv->selected >= lv->cur_columns) {
|
||||
lv->selected -= lv->cur_columns;
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
if (lv->sc_callback) {
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
}
|
||||
widget_queue_redraw(WIDGET(lv));
|
||||
}
|
||||
}
|
||||
static void listview_nav_column_right_int(listview *lv) {
|
||||
if ((lv->selected + lv->cur_columns) < lv->req_elements) {
|
||||
lv->selected += lv->cur_columns;
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
if (lv->sc_callback) {
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
}
|
||||
widget_queue_redraw(WIDGET(lv));
|
||||
}
|
||||
}
|
||||
|
@ -890,7 +905,9 @@ void listview_nav_left(listview *lv) {
|
|||
}
|
||||
if (lv->selected >= lv->max_rows) {
|
||||
lv->selected -= lv->max_rows;
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
if (lv->sc_callback) {
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
}
|
||||
widget_queue_redraw(WIDGET(lv));
|
||||
}
|
||||
}
|
||||
|
@ -911,7 +928,9 @@ void listview_nav_right(listview *lv) {
|
|||
}
|
||||
if ((lv->selected + lv->max_rows) < lv->req_elements) {
|
||||
lv->selected += lv->max_rows;
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
if (lv->sc_callback) {
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
}
|
||||
widget_queue_redraw(WIDGET(lv));
|
||||
} else if (lv->selected < (lv->req_elements - 1)) {
|
||||
// We do not want to move to last item, UNLESS the last column is only
|
||||
|
@ -923,7 +942,9 @@ void listview_nav_right(listview *lv) {
|
|||
// If there is an extra column, move.
|
||||
if (col != ncol) {
|
||||
lv->selected = lv->req_elements - 1;
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
if (lv->sc_callback) {
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
}
|
||||
widget_queue_redraw(WIDGET(lv));
|
||||
}
|
||||
}
|
||||
|
@ -949,7 +970,9 @@ static void listview_nav_page_prev_int(listview *lv) {
|
|||
} else {
|
||||
lv->selected -= (lv->max_elements);
|
||||
}
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
if (lv->sc_callback) {
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
}
|
||||
widget_queue_redraw(WIDGET(lv));
|
||||
}
|
||||
static void listview_nav_page_next_int(listview *lv) {
|
||||
|
@ -964,7 +987,9 @@ static void listview_nav_page_next_int(listview *lv) {
|
|||
lv->selected = MIN(new, lv->req_elements - 1);
|
||||
lv->barview.direction = LEFT_TO_RIGHT;
|
||||
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
if (lv->sc_callback) {
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
}
|
||||
widget_queue_redraw(WIDGET(lv));
|
||||
return;
|
||||
}
|
||||
|
@ -972,7 +997,9 @@ static void listview_nav_page_next_int(listview *lv) {
|
|||
if (lv->selected >= lv->req_elements) {
|
||||
lv->selected = lv->req_elements - 1;
|
||||
}
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
if (lv->sc_callback) {
|
||||
lv->sc_callback(lv, lv->selected, lv->sc_udata);
|
||||
}
|
||||
widget_queue_redraw(WIDGET(lv));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue