diff --git a/aegisub/src/base_grid.cpp b/aegisub/src/base_grid.cpp
index 4675ad5853aaeccc8130ff6202617938e76e5901..377552b02d7625ca03e0f79058642d1cacbe8039 100644
--- a/aegisub/src/base_grid.cpp
+++ b/aegisub/src/base_grid.cpp
@@ -1036,8 +1036,10 @@ void BaseGrid::SetActiveLine(AssDialogue *new_line) {
 		AnnounceActiveLineChanged(active_line);
 		MakeRowVisible(GetDialogueIndex(active_line));
 		Refresh(false);
-		extendRow = GetDialogueIndex(new_line);
 	}
+	// extendRow may not equal the active row if it was set via a shift-click,
+	// so update it even if the active line didn't change
+	extendRow = GetDialogueIndex(new_line);
 }
 
 void BaseGrid::SetSelectionAndActive(Selection const& new_selection, AssDialogue *new_line) {