diff --git a/desktop/treeview.c b/desktop/treeview.c
index 107f490e0..04663dc5b 100644
--- a/desktop/treeview.c
+++ b/desktop/treeview.c
@@ -595,6 +595,10 @@ static inline void treeview__cw_scroll_to_node(
 		const struct treeview *tree,
 		const struct treeview_node *node)
 {
+	if (node == NULL) {
+		return;
+	}
+
 	struct rect r = {
 		.x0 = 0,
 		.y0 = treeview_node_y(tree, node),
@@ -3932,7 +3936,7 @@ treeview_keyboard_navigation(treeview *tree, uint32_t key, struct rect *rect)
 			ns.curr->parent->flags |= TV_NFLAGS_SELECTED;
 			scroll_to_node = ns.curr->parent;
 
-		} else if (ns.curr != NULL && tree->root->children != NULL) {
+		} else if (tree->root->children != NULL) {
 			/* Select first node in tree */
 			tree->root->children->flags |= TV_NFLAGS_SELECTED;
 			scroll_to_node = tree->root->children;
@@ -3960,9 +3964,10 @@ treeview_keyboard_navigation(treeview *tree, uint32_t key, struct rect *rect)
 				ns.curr->flags |= TV_NFLAGS_SELECTED;
 			}
 
-		} else if (ns.curr != NULL) {
-			/* Retain current node selection */
-			ns.curr->flags |= TV_NFLAGS_SELECTED;
+		} else if (tree->root->children != NULL) {
+			/* Select first node in tree */
+			tree->root->children->flags |= TV_NFLAGS_SELECTED;
+			scroll_to_node = tree->root->children;
 		}
 		break;
 
