mirror of
https://github.com/davatorium/rofi.git
synced 2025-01-27 15:25:24 -05:00
parent
da917993f7
commit
a836346968
1 changed files with 47 additions and 6 deletions
|
@ -63,6 +63,7 @@ struct _listview
|
|||
unsigned int fixed_num_lines;
|
||||
unsigned int dynamic;
|
||||
unsigned int eh;
|
||||
unsigned int reverse;
|
||||
gboolean cycle;
|
||||
gboolean multi_select;
|
||||
|
||||
|
@ -179,8 +180,13 @@ static void listview_draw ( widget *wid, cairo_t *draw )
|
|||
unsigned int element_width = ( width ) / lv->cur_columns;
|
||||
for ( unsigned int i = 0; i < max; i++ ) {
|
||||
unsigned int ex = widget_padding_get_left ( wid ) + ( ( i ) / lv->max_rows ) * ( element_width + spacing_hori );
|
||||
if ( lv->reverse ) {
|
||||
unsigned int ey = wid->h-(widget_padding_get_bottom ( wid ) + ( ( i ) % lv->max_rows ) * ( lv->element_height + spacing_vert ))-lv->element_height;
|
||||
textbox_moveresize ( lv->boxes[i], ex, ey, element_width, lv->element_height );
|
||||
} else {
|
||||
unsigned int ey = widget_padding_get_top ( wid ) + ( ( i ) % lv->max_rows ) * ( lv->element_height + spacing_vert );
|
||||
textbox_moveresize ( lv->boxes[i], ex, ey, element_width, lv->element_height );
|
||||
}
|
||||
|
||||
update_element ( lv, i, i + offset, TRUE );
|
||||
widget_draw ( WIDGET ( lv->boxes[i] ), draw );
|
||||
|
@ -360,6 +366,7 @@ listview *listview_create ( const char *name, listview_update_callback cb, void
|
|||
lv->menu_columns = rofi_theme_get_integer (lv->widget.class_name, lv->widget.name, NULL, "columns", config.menu_columns );
|
||||
lv->fixed_num_lines = rofi_theme_get_boolean (lv->widget.class_name, lv->widget.name, NULL, "fixed-height", config.fixed_num_lines );
|
||||
lv->dynamic = rofi_theme_get_boolean (lv->widget.class_name, lv->widget.name, NULL, "dynamic", TRUE );
|
||||
lv->reverse = rofi_theme_get_boolean (lv->widget.class_name, lv->widget.name, NULL, "reverse", FALSE );
|
||||
|
||||
listview_set_show_scrollbar ( lv, rofi_theme_get_boolean ( lv->widget.class_name, lv->widget.name, NULL, "scrollbar", !config.hide_scrollbar ));
|
||||
listview_set_scrollbar_width ( lv, rofi_theme_get_integer ( lv->widget.class_name, lv->widget.name, NULL, "scrollbar-width", config.scrollbar_width ));
|
||||
|
@ -373,7 +380,7 @@ listview *listview_create ( const char *name, listview_update_callback cb, void
|
|||
* Navigation commands.
|
||||
*/
|
||||
|
||||
void listview_nav_up ( listview *lv )
|
||||
static void listview_nav_up_int ( listview *lv )
|
||||
{
|
||||
if ( lv == NULL ) {
|
||||
return;
|
||||
|
@ -387,7 +394,7 @@ void listview_nav_up ( listview *lv )
|
|||
lv->selected--;
|
||||
widget_queue_redraw ( WIDGET ( lv ) );
|
||||
}
|
||||
void listview_nav_down ( listview *lv )
|
||||
static void listview_nav_down_int ( listview *lv )
|
||||
{
|
||||
if ( lv == NULL ) {
|
||||
return;
|
||||
|
@ -400,6 +407,23 @@ void listview_nav_down ( listview *lv )
|
|||
widget_queue_redraw ( WIDGET ( lv ) );
|
||||
}
|
||||
|
||||
void listview_nav_up ( listview *lv )
|
||||
{
|
||||
if ( lv->reverse ) {
|
||||
listview_nav_down_int ( lv );
|
||||
} else {
|
||||
listview_nav_up_int ( lv );
|
||||
}
|
||||
}
|
||||
void listview_nav_down ( listview *lv )
|
||||
{
|
||||
if ( lv->reverse ) {
|
||||
listview_nav_up_int ( lv );
|
||||
} else {
|
||||
listview_nav_down_int ( lv );
|
||||
}
|
||||
}
|
||||
|
||||
void listview_nav_left ( listview *lv )
|
||||
{
|
||||
if ( lv == NULL ) {
|
||||
|
@ -434,7 +458,7 @@ void listview_nav_right ( listview *lv )
|
|||
}
|
||||
}
|
||||
|
||||
void listview_nav_page_prev ( listview *lv )
|
||||
static void listview_nav_page_prev_int ( listview *lv )
|
||||
{
|
||||
if ( lv == NULL ) {
|
||||
return;
|
||||
|
@ -447,7 +471,7 @@ void listview_nav_page_prev ( listview *lv )
|
|||
}
|
||||
widget_queue_redraw ( WIDGET ( lv ) );
|
||||
}
|
||||
void listview_nav_page_next ( listview *lv )
|
||||
static void listview_nav_page_next_int ( listview *lv )
|
||||
{
|
||||
if ( lv == NULL ) {
|
||||
return;
|
||||
|
@ -462,6 +486,23 @@ void listview_nav_page_next ( listview *lv )
|
|||
widget_queue_redraw ( WIDGET ( lv ) );
|
||||
}
|
||||
|
||||
void listview_nav_page_prev ( listview *lv )
|
||||
{
|
||||
if ( lv->reverse ){
|
||||
listview_nav_page_next_int ( lv );
|
||||
} else {
|
||||
listview_nav_page_prev_int ( lv );
|
||||
}
|
||||
}
|
||||
void listview_nav_page_next ( listview *lv )
|
||||
{
|
||||
if ( lv->reverse ){
|
||||
listview_nav_page_prev_int ( lv );
|
||||
} else {
|
||||
listview_nav_page_next_int ( lv );
|
||||
}
|
||||
}
|
||||
|
||||
static int listview_get_desired_height ( widget *wid )
|
||||
{
|
||||
listview *lv = (listview *)wid;
|
||||
|
|
Loading…
Add table
Reference in a new issue