Index: uspace/app/nav/panel.c
===================================================================
--- uspace/app/nav/panel.c	(revision e03770753206f820b5b36aaab3f083482c835a61)
+++ uspace/app/nav/panel.c	(revision 9ee55cdc2ae2e29ee5db013e5dedbe26adba492d)
@@ -353,4 +353,10 @@
 			/* Move to the entry found */
 			panel_cursor_move(panel, entry, entry_idx);
+		} else {
+			/* It's in the border. Top or bottom half? */
+			if (pos.y >= (irect.p0.y + irect.p1.y) / 2)
+				panel_page_down(panel);
+			else
+				panel_page_up(panel);
 		}
 	}
Index: uspace/app/nav/test/panel.c
===================================================================
--- uspace/app/nav/test/panel.c	(revision e03770753206f820b5b36aaab3f083482c835a61)
+++ uspace/app/nav/test/panel.c	(revision 9ee55cdc2ae2e29ee5db013e5dedbe26adba492d)
@@ -279,4 +279,14 @@
 	PCUT_ASSERT_INT_EQUALS(3, panel->cursor->size);
 
+	/* Clicking on the top edge should do a page-up */
+	event.hpos = 1;
+	event.vpos = 0;
+	claimed = panel_pos_event(panel, &event);
+	PCUT_ASSERT_EQUALS(ui_claimed, claimed);
+
+	PCUT_ASSERT_NOT_NULL(panel->cursor);
+	PCUT_ASSERT_STR_EQUALS("a", panel->cursor->name);
+	PCUT_ASSERT_INT_EQUALS(1, panel->cursor->size);
+
 	panel_destroy(panel);
 	ui_window_destroy(window);
