aboutsummaryrefslogtreecommitdiffstats
path: root/src/list_window.c
diff options
context:
space:
mode:
authorKalle Wallin <kaw@linux.se>2004-06-22 13:25:53 +0000
committerKalle Wallin <kaw@linux.se>2004-06-22 13:25:53 +0000
commit539be061ff11cb2e095393e2e478c5a50979b3bd (patch)
tree52ab5b89660991a3ffe5dfe009b27eb115354747 /src/list_window.c
parent8e032a17efe4851c9c9de61775101e890d5594f1 (diff)
downloadmpd-539be061ff11cb2e095393e2e478c5a50979b3bd.tar.gz
mpd-539be061ff11cb2e095393e2e478c5a50979b3bd.tar.xz
mpd-539be061ff11cb2e095393e2e478c5a50979b3bd.zip
added screen_bell() for optional audible/visible bells
git-svn-id: https://svn.musicpd.org/ncmpc/trunk@1612 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src/list_window.c')
-rw-r--r--src/list_window.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/src/list_window.c b/src/list_window.c
index 588725625..84c19a1c1 100644
--- a/src/list_window.c
+++ b/src/list_window.c
@@ -31,13 +31,14 @@
#include "colors.h"
#include "list_window.h"
+extern void screen_bell(void);
+
list_window_t *
list_window_init(WINDOW *w, int width, int height)
{
list_window_t *lw;
- lw = g_malloc(sizeof(list_window_t));
- memset(lw, 0, sizeof(list_window_t));
+ lw = g_malloc0(sizeof(list_window_t));
lw->w = w;
lw->cols = width;
lw->rows = height;
@@ -60,6 +61,7 @@ void
list_window_reset(list_window_t *lw)
{
lw->selected = 0;
+ lw->xoffset = 0;
lw->start = 0;
lw->clear = 1;
}
@@ -91,24 +93,43 @@ list_window_next(list_window_t *lw, int length)
{
if( lw->selected < length-1 )
lw->selected++;
+ else if ( options.list_wrap )
+ lw->selected = 0;
}
void
-list_window_previous(list_window_t *lw)
+list_window_previous(list_window_t *lw, int length)
{
if( lw->selected > 0 )
lw->selected--;
+ else if( options.list_wrap )
+ lw->selected = length-1;
+}
+
+void
+list_window_right(list_window_t *lw, int length)
+{
+ lw->xoffset++;
+}
+
+void
+list_window_left(list_window_t *lw)
+{
+ if( lw->xoffset > 0 )
+ lw->xoffset--;
}
void
list_window_first(list_window_t *lw)
{
+ lw->xoffset = 0;
lw->selected = 0;
}
void
list_window_last(list_window_t *lw, int length)
{
+ lw->xoffset = 0;
lw->selected = length-1;
}
@@ -218,7 +239,7 @@ list_window_find(list_window_t *lw,
if( wrap )
{
i=0; /* first item */
- beep();
+ screen_bell();
}
}
return 1;
@@ -253,7 +274,7 @@ list_window_rfind(list_window_t *lw,
if( wrap )
{
i=rows-1; /* last item */
- beep();
+ screen_bell();
}
}
return 1;
@@ -267,7 +288,7 @@ list_window_cmd(list_window_t *lw, int rows, command_t cmd)
switch(cmd)
{
case CMD_LIST_PREVIOUS:
- list_window_previous(lw);
+ list_window_previous(lw, rows);
lw->repaint=1;
break;
case CMD_LIST_NEXT: