Commit Diff


commit - fb59748f6b2d9108022ebf444586386f085fd134
commit + 5a8b5076742038c09dece0c1e59ecddf8cd7a41a
blob - 1497322b4643af8cb574d4b4e0364308dad35b2f
blob + b61cdb3e9c3038dd263ff6b27e3d4dfbe918578f
--- tog/tog.c
+++ tog/tog.c
@@ -3607,6 +3607,7 @@ input_diff_view(struct tog_view **new_view, struct tog
 	const struct got_error *err = NULL;
 	struct tog_diff_view_state *s = &view->state.diff;
 	struct tog_log_view_state *ls;
+	struct commit_queue_entry *old_selected_entry;
 	int i;
 
 	switch (ch) {
@@ -3679,11 +3680,15 @@ input_diff_view(struct tog_view **new_view, struct tog
 		if (s->log_view == NULL)
 			break;
 		ls = &s->log_view->state.log;
+		old_selected_entry = ls->selected_entry;
 
 		err = input_log_view(NULL, s->log_view, KEY_UP);
 		if (err)
 			break;
 
+		if (old_selected_entry == ls->selected_entry)
+			break;
+
 		err = set_selected_commit(s, ls->selected_entry);
 		if (err)
 			break;
@@ -3699,9 +3704,13 @@ input_diff_view(struct tog_view **new_view, struct tog
 		if (s->log_view == NULL)
 			break;
 		ls = &s->log_view->state.log;
+		old_selected_entry = ls->selected_entry;
 
 		err = input_log_view(NULL, s->log_view, KEY_DOWN);
 		if (err)
+			break;
+
+		if (old_selected_entry == ls->selected_entry)
 			break;
 
 		err = set_selected_commit(s, ls->selected_entry);