Index: uspace/app/uidemo/uidemo.c
===================================================================
--- uspace/app/uidemo/uidemo.c	(revision 8965860ccae8af5b3d432226917c44dff1028ca8)
+++ uspace/app/uidemo/uidemo.c	(revision 7ca721557bbbab9db7f7e937549e3e6bed609586)
@@ -620,5 +620,5 @@
 		params.rect.p0.x = 0;
 		params.rect.p0.y = 0;
-		params.rect.p1.x = 220;
+		params.rect.p1.x = 250;
 		params.rect.p1.y = 370;
 	}
@@ -764,5 +764,5 @@
 		rect.p0.x = 2;
 		rect.p0.y = 3;
-		rect.p1.x = 42;
+		rect.p1.x = 39;
 		rect.p1.y = 4;
 	} else {
@@ -850,7 +850,7 @@
 
 	if (ui_is_textmode(ui)) {
-		rect.p0.x = 32;
+		rect.p0.x = 29;
 		rect.p0.y = 7;
-		rect.p1.x = 42;
+		rect.p1.x = 39;
 		rect.p1.y = 8;
 	} else {
@@ -873,5 +873,5 @@
 		bparams.rect.p0.x = 0;
 		bparams.rect.p0.y = 0;
-		bparams.rect.p1.x = 40;
+		bparams.rect.p1.x = 37;
 		bparams.rect.p1.y = 2;
 	} else {
@@ -1053,5 +1053,5 @@
 		rect.p0.x = 2;
 		rect.p0.y = 18;
-		rect.p1.x = 12;
+		rect.p1.x = 28;
 		rect.p1.y = 19;
 	} else {
@@ -1070,5 +1070,5 @@
 	}
 
-	rc = ui_scrollbar_create(ui, window, &demo.scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &demo.hscrollbar);
 	if (rc != EOK) {
 		printf("Error creating button.\n");
@@ -1076,5 +1076,5 @@
 	}
 
-	ui_scrollbar_set_cb(demo.scrollbar, &scrollbar_cb, (void *) &demo);
+	ui_scrollbar_set_cb(demo.hscrollbar, &scrollbar_cb, (void *) &demo);
 
 	/* FIXME: Auto layout */
@@ -1082,19 +1082,51 @@
 		rect.p0.x = 2;
 		rect.p0.y = 20;
-		rect.p1.x = 12;
+		rect.p1.x = 40;
 		rect.p1.y = 21;
 	} else {
 		rect.p0.x = 15;
 		rect.p0.y = 340;
-		rect.p1.x = 210;
+		rect.p1.x = 220;
 		rect.p1.y = 362;
 	}
 
-	ui_scrollbar_set_rect(demo.scrollbar, &rect);
-
-	ui_scrollbar_set_thumb_length(demo.scrollbar,
-	    ui_scrollbar_through_length(demo.scrollbar) / 4);
-
-	rc = ui_fixed_add(demo.fixed, ui_scrollbar_ctl(demo.scrollbar));
+	ui_scrollbar_set_rect(demo.hscrollbar, &rect);
+
+	ui_scrollbar_set_thumb_length(demo.hscrollbar,
+	    ui_scrollbar_through_length(demo.hscrollbar) / 4);
+
+	rc = ui_fixed_add(demo.fixed, ui_scrollbar_ctl(demo.hscrollbar));
+	if (rc != EOK) {
+		printf("Error adding control to layout.\n");
+		return rc;
+	}
+
+	rc = ui_scrollbar_create(ui, window, ui_sbd_vert, &demo.vscrollbar);
+	if (rc != EOK) {
+		printf("Error creating button.\n");
+		return rc;
+	}
+
+	ui_scrollbar_set_cb(demo.vscrollbar, &scrollbar_cb, (void *) &demo);
+
+	/* FIXME: Auto layout */
+	if (ui_is_textmode(ui)) {
+		rect.p0.x = 40;
+		rect.p0.y = 3;
+		rect.p1.x = 41;
+		rect.p1.y = 20;
+	} else {
+		rect.p0.x = 220;
+		rect.p0.y = 53;
+		rect.p1.x = 242;
+		rect.p1.y = 340;
+	}
+
+	ui_scrollbar_set_rect(demo.vscrollbar, &rect);
+
+	ui_scrollbar_set_thumb_length(demo.vscrollbar,
+	    ui_scrollbar_through_length(demo.vscrollbar) / 4);
+
+	rc = ui_fixed_add(demo.fixed, ui_scrollbar_ctl(demo.vscrollbar));
 	if (rc != EOK) {
 		printf("Error adding control to layout.\n");
Index: uspace/app/uidemo/uidemo.h
===================================================================
--- uspace/app/uidemo/uidemo.h	(revision 8965860ccae8af5b3d432226917c44dff1028ca8)
+++ uspace/app/uidemo/uidemo.h	(revision 7ca721557bbbab9db7f7e937549e3e6bed609586)
@@ -72,5 +72,6 @@
 	ui_rbutton_t *rbright;
 	ui_slider_t *slider;
-	ui_scrollbar_t *scrollbar;
+	ui_scrollbar_t *hscrollbar;
+	ui_scrollbar_t *vscrollbar;
 } ui_demo_t;
 
Index: uspace/lib/ui/include/types/ui/scrollbar.h
===================================================================
--- uspace/lib/ui/include/types/ui/scrollbar.h	(revision 8965860ccae8af5b3d432226917c44dff1028ca8)
+++ uspace/lib/ui/include/types/ui/scrollbar.h	(revision 7ca721557bbbab9db7f7e937549e3e6bed609586)
@@ -42,4 +42,12 @@
 typedef struct ui_scrollbar ui_scrollbar_t;
 
+/** Scrollbar direction */
+typedef enum {
+	/** Horizontal */
+	ui_sbd_horiz,
+	/** Vertical */
+	ui_sbd_vert
+} ui_scrollbar_dir_t;
+
 /** Scrollbar callbacks */
 typedef struct ui_scrollbar_cb {
Index: uspace/lib/ui/include/ui/scrollbar.h
===================================================================
--- uspace/lib/ui/include/ui/scrollbar.h	(revision 8965860ccae8af5b3d432226917c44dff1028ca8)
+++ uspace/lib/ui/include/ui/scrollbar.h	(revision 7ca721557bbbab9db7f7e937549e3e6bed609586)
@@ -47,5 +47,6 @@
 #include <types/ui/window.h>
 
-extern errno_t ui_scrollbar_create(ui_t *, ui_window_t *, ui_scrollbar_t **);
+extern errno_t ui_scrollbar_create(ui_t *, ui_window_t *, ui_scrollbar_dir_t,
+    ui_scrollbar_t **);
 extern void ui_scrollbar_destroy(ui_scrollbar_t *);
 extern ui_control_t *ui_scrollbar_ctl(ui_scrollbar_t *);
Index: uspace/lib/ui/private/scrollbar.h
===================================================================
--- uspace/lib/ui/private/scrollbar.h	(revision 8965860ccae8af5b3d432226917c44dff1028ca8)
+++ uspace/lib/ui/private/scrollbar.h	(revision 7ca721557bbbab9db7f7e937549e3e6bed609586)
@@ -40,4 +40,5 @@
 #include <gfx/coord.h>
 #include <stdbool.h>
+#include <types/ui/scrollbar.h>
 
 /** Actual structure of scrollbar.
@@ -58,4 +59,6 @@
 	/** Scrollbar rectangle */
 	gfx_rect_t rect;
+	/** Scrollbar direction */
+	ui_scrollbar_dir_t dir;
 	/** Thumb length */
 	gfx_coord_t thumb_len;
@@ -104,5 +107,6 @@
 
 extern errno_t ui_scrollbar_paint_gfx(ui_scrollbar_t *);
-extern errno_t ui_scrollbar_paint_text(ui_scrollbar_t *);
+extern errno_t ui_scrollbar_paint_text_horiz(ui_scrollbar_t *);
+extern errno_t ui_scrollbar_paint_text_vert(ui_scrollbar_t *);
 extern void ui_scrollbar_get_geom(ui_scrollbar_t *, ui_scrollbar_geom_t *);
 
Index: uspace/lib/ui/src/scrollbar.c
===================================================================
--- uspace/lib/ui/src/scrollbar.c	(revision 8965860ccae8af5b3d432226917c44dff1028ca8)
+++ uspace/lib/ui/src/scrollbar.c	(revision 7ca721557bbbab9db7f7e937549e3e6bed609586)
@@ -149,12 +149,15 @@
  * @param ui UI
  * @param window Window containing scrollbar
+ * @param dir Scrollbar direction
  * @param rscrollbar Place to store pointer to new scrollbar
  * @return EOK on success, ENOMEM if out of memory
  */
 errno_t ui_scrollbar_create(ui_t *ui, ui_window_t *window,
-    ui_scrollbar_t **rscrollbar)
+    ui_scrollbar_dir_t dir, ui_scrollbar_t **rscrollbar)
 {
 	ui_scrollbar_t *scrollbar;
 	ui_resource_t *resource;
+	const char *up_text;
+	const char *down_text;
 	errno_t rc;
 
@@ -172,6 +175,13 @@
 	}
 
-	rc = ui_pbutton_create(resource, resource->textmode ? "\u25c4" : "<",
-	    &scrollbar->up_btn);
+	if (dir == ui_sbd_horiz) {
+		up_text = resource->textmode ? "\u25c4" : "<";
+		down_text = resource->textmode ? "\u25ba" : ">";
+	} else {
+		up_text = resource->textmode ? "\u25b2" : "^";
+		down_text = resource->textmode ? "\u25bc" : "v";
+	}
+
+	rc = ui_pbutton_create(resource, up_text, &scrollbar->up_btn);
 	if (rc != EOK)
 		goto error;
@@ -180,6 +190,5 @@
 	    (void *) scrollbar);
 
-	rc = ui_pbutton_create(resource, resource->textmode ? "\u25ba" : ">",
-	    &scrollbar->down_btn);
+	rc = ui_pbutton_create(resource, down_text, &scrollbar->down_btn);
 	if (rc != EOK)
 		goto error;
@@ -194,4 +203,5 @@
 	scrollbar->ui = ui;
 	scrollbar->window = window;
+	scrollbar->dir = dir;
 	*rscrollbar = scrollbar;
 	return EOK;
@@ -340,12 +350,17 @@
 	ui_resource_t *resource;
 	gfx_coord2_t dims;
-	gfx_coord_t w;
+	gfx_coord_t len;
+	gfx_coord_t sblen;
 
 	resource = ui_window_get_res(scrollbar->window);
 
 	gfx_rect_dims(&scrollbar->rect, &dims);
-	w = resource->textmode ? ui_scrollbar_btn_len_text :
+	sblen = scrollbar->dir == ui_sbd_horiz ?
+	    dims.x : dims.y;
+
+	len = resource->textmode ? ui_scrollbar_btn_len_text :
 	    ui_scrollbar_btn_len;
-	return dims.x - 2 * w;
+
+	return sblen - 2 * len;
 }
 
@@ -477,5 +492,4 @@
 
 	/* Paint scrollbar thumb */
-
 	rc = ui_scrollbar_paint_thumb_frame(resource, &geom.thumb_rect,
 	    ui_scrollbar_thumb_frame_thickness, &brect);
@@ -512,10 +526,10 @@
 }
 
-/** Paint scrollbar in text mode.
+/** Paint horizontal scrollbar in text mode.
  *
  * @param scrollbar Scrollbar
  * @return EOK on success or an error code
  */
-errno_t ui_scrollbar_paint_text(ui_scrollbar_t *scrollbar)
+errno_t ui_scrollbar_paint_text_horiz(ui_scrollbar_t *scrollbar)
 {
 	ui_resource_t *resource;
@@ -601,4 +615,63 @@
 }
 
+/** Paint vertical scrollbar in text mode.
+ *
+ * @param scrollbar Scrollbar
+ * @return EOK on success or an error code
+ */
+errno_t ui_scrollbar_paint_text_vert(ui_scrollbar_t *scrollbar)
+{
+	ui_resource_t *resource;
+	ui_scrollbar_geom_t geom;
+	gfx_coord2_t pos;
+	gfx_text_fmt_t fmt;
+	errno_t rc;
+
+	resource = ui_window_get_res(scrollbar->window);
+	ui_scrollbar_get_geom(scrollbar, &geom);
+
+	/* Paint scrollbar through */
+
+	gfx_text_fmt_init(&fmt);
+	fmt.font = resource->font;
+	fmt.color = resource->sbar_through_color;
+	fmt.halign = gfx_halign_left;
+	fmt.valign = gfx_valign_top;
+
+	pos.x = scrollbar->rect.p0.x;
+	for (pos.y = geom.through_rect.p0.y; pos.y < geom.through_rect.p1.y;
+	    pos.y++) {
+		rc = gfx_puttext(&pos, &fmt, "\u2592");
+		if (rc != EOK)
+			goto error;
+	}
+
+	/* Paint scrollbar thumb */
+
+	pos.x = geom.thumb_rect.p0.x;
+	for (pos.y = geom.thumb_rect.p0.y; pos.y < geom.thumb_rect.p1.y;
+	    pos.y++) {
+		rc = gfx_puttext(&pos, &fmt, "\u25a0");
+		if (rc != EOK)
+			goto error;
+	}
+
+	rc = ui_pbutton_paint(scrollbar->up_btn);
+	if (rc != EOK)
+		goto error;
+
+	rc = ui_pbutton_paint(scrollbar->down_btn);
+	if (rc != EOK)
+		goto error;
+
+	rc = gfx_update(resource->gc);
+	if (rc != EOK)
+		goto error;
+
+	return EOK;
+error:
+	return rc;
+}
+
 /** Paint scrollbar.
  *
@@ -610,8 +683,12 @@
 	ui_resource_t *resource = ui_window_get_res(scrollbar->window);
 
-	if (resource->textmode)
-		return ui_scrollbar_paint_text(scrollbar);
-	else
+	if (resource->textmode) {
+		if (scrollbar->dir == ui_sbd_horiz)
+			return ui_scrollbar_paint_text_horiz(scrollbar);
+		else
+			return ui_scrollbar_paint_text_vert(scrollbar);
+	} else {
 		return ui_scrollbar_paint_gfx(scrollbar);
+	}
 }
 
@@ -646,37 +723,77 @@
 	}
 
-	/* Up button */
-	geom->up_btn_rect.p0.x = orect.p0.x;
-	geom->up_btn_rect.p0.y = orect.p0.y;
-	geom->up_btn_rect.p1.x = orect.p0.x + btn_len;
-	geom->up_btn_rect.p1.y = orect.p1.y;
-
-	/* Through */
-	geom->through_rect.p0.x = geom->up_btn_rect.p1.x;
-	geom->through_rect.p0.y = irect.p0.y;
-	geom->through_rect.p1.x = orect.p1.x - btn_len;
-	geom->through_rect.p1.y = irect.p1.y;
-
-	/* Thumb */
-	geom->thumb_rect.p0.x = geom->up_btn_rect.p1.x + scrollbar->pos;
-	geom->thumb_rect.p0.y = orect.p0.y;
-	geom->thumb_rect.p1.x = geom->thumb_rect.p0.x + scrollbar->thumb_len;
-	geom->thumb_rect.p1.y = orect.p1.y;
-
-	/* Up through */
-	geom->up_through_rect.p0 = geom->through_rect.p0;
-	geom->up_through_rect.p1.x = geom->thumb_rect.p0.x;
-	geom->up_through_rect.p1.y = geom->through_rect.p1.y;
-
-	/* Down through */
-	geom->down_through_rect.p0.x = geom->thumb_rect.p1.x;
-	geom->down_through_rect.p0.y = geom->through_rect.p0.y;
-	geom->down_through_rect.p1 = geom->through_rect.p1;
-
-	/* Down button */
-	geom->down_btn_rect.p0.x = geom->through_rect.p1.x;
-	geom->down_btn_rect.p0.y = orect.p0.y;
-	geom->down_btn_rect.p1.x = orect.p1.x;
-	geom->down_btn_rect.p1.y = orect.p1.y;
+	if (scrollbar->dir == ui_sbd_horiz) {
+		/* Up button */
+		geom->up_btn_rect.p0.x = orect.p0.x;
+		geom->up_btn_rect.p0.y = orect.p0.y;
+		geom->up_btn_rect.p1.x = orect.p0.x + btn_len;
+		geom->up_btn_rect.p1.y = orect.p1.y;
+
+		/* Through */
+		geom->through_rect.p0.x = geom->up_btn_rect.p1.x;
+		geom->through_rect.p0.y = irect.p0.y;
+		geom->through_rect.p1.x = orect.p1.x - btn_len;
+		geom->through_rect.p1.y = irect.p1.y;
+
+		/* Thumb */
+		geom->thumb_rect.p0.x = geom->up_btn_rect.p1.x +
+		    scrollbar->pos;
+		geom->thumb_rect.p0.y = orect.p0.y;
+		geom->thumb_rect.p1.x = geom->thumb_rect.p0.x +
+		    scrollbar->thumb_len;
+		geom->thumb_rect.p1.y = orect.p1.y;
+
+		/* Up through */
+		geom->up_through_rect.p0 = geom->through_rect.p0;
+		geom->up_through_rect.p1.x = geom->thumb_rect.p0.x;
+		geom->up_through_rect.p1.y = geom->through_rect.p1.y;
+
+		/* Down through */
+		geom->down_through_rect.p0.x = geom->thumb_rect.p1.x;
+		geom->down_through_rect.p0.y = geom->through_rect.p0.y;
+		geom->down_through_rect.p1 = geom->through_rect.p1;
+
+		/* Down button */
+		geom->down_btn_rect.p0.x = geom->through_rect.p1.x;
+		geom->down_btn_rect.p0.y = orect.p0.y;
+		geom->down_btn_rect.p1.x = orect.p1.x;
+		geom->down_btn_rect.p1.y = orect.p1.y;
+	} else {
+		/* Up button */
+		geom->up_btn_rect.p0.x = orect.p0.x;
+		geom->up_btn_rect.p0.y = orect.p0.y;
+		geom->up_btn_rect.p1.x = orect.p1.x;
+		geom->up_btn_rect.p1.y = orect.p0.y + btn_len;
+
+		/* Through */
+		geom->through_rect.p0.x = irect.p0.x;
+		geom->through_rect.p0.y = geom->up_btn_rect.p1.y;
+		geom->through_rect.p1.x = irect.p1.x;
+		geom->through_rect.p1.y = orect.p1.y - btn_len;
+
+		/* Thumb */
+		geom->thumb_rect.p0.x = orect.p0.x;
+		geom->thumb_rect.p0.y = geom->up_btn_rect.p1.y +
+		    scrollbar->pos;
+		geom->thumb_rect.p1.x = orect.p1.x;
+		geom->thumb_rect.p1.y = geom->thumb_rect.p0.y +
+		    scrollbar->thumb_len;
+
+		/* Up through */
+		geom->up_through_rect.p0 = geom->through_rect.p0;
+		geom->up_through_rect.p1.x = geom->through_rect.p1.x;
+		geom->up_through_rect.p1.y = geom->thumb_rect.p0.y;
+
+		/* Down through */
+		geom->down_through_rect.p0.x = geom->through_rect.p0.x;
+		geom->down_through_rect.p0.y = geom->thumb_rect.p1.y;
+		geom->down_through_rect.p1 = geom->through_rect.p1;
+
+		/* Down button */
+		geom->down_btn_rect.p0.x = orect.p0.x;
+		geom->down_btn_rect.p0.y = geom->through_rect.p1.y;
+		geom->down_btn_rect.p1.x = orect.p1.x;
+		geom->down_btn_rect.p1.y = orect.p1.y;
+	}
 }
 
@@ -790,5 +907,5 @@
 }
 
-/** Pointer moved.
+/** Scrollbar handler for pointer movement.
  *
  * @param scrollbar Scrollbar
@@ -800,5 +917,9 @@
 
 	if (scrollbar->thumb_held) {
-		spos = scrollbar->last_pos + pos->x - scrollbar->press_pos.x;
+		if (scrollbar->dir == ui_sbd_horiz)
+			spos = scrollbar->last_pos + pos->x - scrollbar->press_pos.x;
+		else
+			spos = scrollbar->last_pos + pos->y - scrollbar->press_pos.y;
+
 		ui_scrollbar_set_pos(scrollbar, spos);
 	}
Index: uspace/lib/ui/test/scrollbar.c
===================================================================
--- uspace/lib/ui/test/scrollbar.c	(revision 8965860ccae8af5b3d432226917c44dff1028ca8)
+++ uspace/lib/ui/test/scrollbar.c	(revision 7ca721557bbbab9db7f7e937549e3e6bed609586)
@@ -89,5 +89,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 	PCUT_ASSERT_NOT_NULL(scrollbar);
@@ -124,5 +124,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 	PCUT_ASSERT_NOT_NULL(scrollbar);
@@ -156,5 +156,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 	PCUT_ASSERT_NOT_NULL(scrollbar);
@@ -195,5 +195,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -206,25 +206,25 @@
 }
 
-/** Paint scrollbar in text mode */
-PCUT_TEST(paint_text)
-{
-	ui_t *ui = NULL;
-	ui_window_t *window = NULL;
-	ui_wnd_params_t params;
-	ui_scrollbar_t *scrollbar;
-	gfx_rect_t rect;
-	errno_t rc;
-
-	rc = ui_create_disp(NULL, &ui);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	ui_wnd_params_init(&params);
-	params.caption = "Hello";
-
-	rc = ui_window_create(ui, &params, &window);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-	PCUT_ASSERT_NOT_NULL(window);
-
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+/** Paint horizontal scrollbar in text mode */
+PCUT_TEST(paint_text_horiz)
+{
+	ui_t *ui = NULL;
+	ui_window_t *window = NULL;
+	ui_wnd_params_t params;
+	ui_scrollbar_t *scrollbar;
+	gfx_rect_t rect;
+	errno_t rc;
+
+	rc = ui_create_disp(NULL, &ui);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	ui_wnd_params_init(&params);
+	params.caption = "Hello";
+
+	rc = ui_window_create(ui, &params, &window);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+	PCUT_ASSERT_NOT_NULL(window);
+
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -235,5 +235,42 @@
 	ui_scrollbar_set_rect(scrollbar, &rect);
 
-	rc = ui_scrollbar_paint_text(scrollbar);
+	rc = ui_scrollbar_paint_text_horiz(scrollbar);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	ui_scrollbar_destroy(scrollbar);
+	ui_window_destroy(window);
+	ui_destroy(ui);
+}
+
+/** Paint vertical scrollbar in text mode */
+PCUT_TEST(paint_text_vert)
+{
+	ui_t *ui = NULL;
+	ui_window_t *window = NULL;
+	ui_wnd_params_t params;
+	ui_scrollbar_t *scrollbar;
+	gfx_rect_t rect;
+	errno_t rc;
+
+	rc = ui_create_disp(NULL, &ui);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	ui_wnd_params_init(&params);
+	params.caption = "Hello";
+
+	rc = ui_window_create(ui, &params, &window);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+	PCUT_ASSERT_NOT_NULL(window);
+
+	rc = ui_scrollbar_create(ui, window, ui_sbd_vert, &scrollbar);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	rect.p0.x = 1;
+	rect.p0.y = 1;
+	rect.p1.x = 2;
+	rect.p1.y = 10;
+	ui_scrollbar_set_rect(scrollbar, &rect);
+
+	rc = ui_scrollbar_paint_text_vert(scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -264,5 +301,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -305,5 +342,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -347,5 +384,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -389,5 +426,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -429,5 +466,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -469,5 +506,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -522,5 +559,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -578,5 +615,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -642,5 +679,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -694,5 +731,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -745,5 +782,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -787,5 +824,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -828,5 +865,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -869,5 +906,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -910,5 +947,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -951,5 +988,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -996,5 +1033,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -1058,5 +1095,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -1104,5 +1141,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -1161,5 +1198,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -1215,5 +1252,5 @@
 	PCUT_ASSERT_NOT_NULL(window);
 
-	rc = ui_scrollbar_create(ui, window, &scrollbar);
+	rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &scrollbar);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
