aboutsummaryrefslogtreecommitdiffstats
path: root/src/list_window.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-09-17 12:20:42 +0200
committerMax Kellermann <max@duempel.org>2008-09-17 12:20:42 +0200
commitfd7abf4f81a69014b0e1e967c7965996a11295b0 (patch)
tree539a4a746587dd3090642657c9304492a0f6017f /src/list_window.c
parentca2b9d1390a56b89336b963113b5763edd70238e (diff)
downloadmpd-fd7abf4f81a69014b0e1e967c7965996a11295b0.tar.gz
mpd-fd7abf4f81a69014b0e1e967c7965996a11295b0.tar.xz
mpd-fd7abf4f81a69014b0e1e967c7965996a11295b0.zip
list_window: added list_window_center()
Merge code which used to be duplicated in the screens "play", "help", "lyrics".
Diffstat (limited to 'src/list_window.c')
-rw-r--r--src/list_window.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/list_window.c b/src/list_window.c
index f26088da4..ad671f0cf 100644
--- a/src/list_window.c
+++ b/src/list_window.c
@@ -82,6 +82,24 @@ list_window_check_selected(struct list_window *lw, unsigned length)
}
void
+list_window_center(struct list_window *lw, unsigned rows, unsigned n)
+{
+ if (n > lw->rows / 2)
+ lw->start = n - lw->rows / 2;
+ else
+ lw->start = 0;
+
+ if (lw->start + lw->rows > rows) {
+ if (lw->rows < rows)
+ lw->start = rows - lw->rows;
+ else
+ lw->start = 0;
+ }
+
+ lw->repaint = lw->clear = 1;
+}
+
+void
list_window_set_selected(struct list_window *lw, unsigned n)
{
lw->selected = n;