[IFT] Fix empty Git Log in Git lessons

For some reason it is not updated properly during Git repository initialization and first showing of Git Log tool window. Annotate lesson stuck because of it.

GitOrigin-RevId: 2bd39f47b813fe2a9dd265f092aa2e012d8b454b
This commit is contained in:
Konstantin Hudyakov
2022-11-01 17:24:30 +02:00
committed by intellij-monorepo-bot
parent 14aaf7d002
commit bac7f3589a
3 changed files with 25 additions and 1 deletions

View File

@@ -20,8 +20,10 @@ import com.intellij.openapi.vcs.VcsApplicationSettings
import com.intellij.openapi.vcs.VcsBundle
import com.intellij.openapi.vcs.actions.commit.CommonCheckinProjectAction
import com.intellij.openapi.vcs.update.CommonUpdateProjectAction
import com.intellij.openapi.wm.ToolWindow
import com.intellij.openapi.wm.ToolWindowId
import com.intellij.openapi.wm.ToolWindowManager
import com.intellij.openapi.wm.ex.ToolWindowManagerListener
import com.intellij.ui.SearchTextField
import com.intellij.util.ui.UIUtil
import com.intellij.vcs.commit.CommitModeManager
@@ -72,6 +74,20 @@ object GitLessonsUtil {
}
}
fun LessonContext.refreshGitLogOnOpen() {
prepareRuntimeTask {
val connection = project.messageBus.connect(lessonDisposable)
connection.subscribe(ToolWindowManagerListener.TOPIC, object : ToolWindowManagerListener {
override fun toolWindowShown(toolWindow: ToolWindow) {
if (toolWindow.id == ToolWindowId.VCS) {
VcsProjectLog.getInstance(project).mainLogUi?.refresher?.setValid(true, false)
connection.disconnect()
}
}
})
}
}
fun TaskContext.highlightSubsequentCommitsInGitLog(startCommitRow: Int,
sequenceLength: Int = 1,
highlightInside: Boolean = true,

View File

@@ -5,6 +5,8 @@ import com.intellij.openapi.project.Project
import git4idea.config.GitExecutableManager
import org.jetbrains.annotations.Nls
import org.jetbrains.annotations.NonNls
import training.dsl.LessonContext
import training.git.GitLessonsUtil.refreshGitLogOnOpen
import training.git.GitProjectUtil
import training.learn.course.KLesson
import training.learn.course.LessonProperties
@@ -14,6 +16,12 @@ abstract class GitLesson(@NonNls id: String, @Nls name: String) : KLesson(id, na
protected abstract val branchName: String
override val properties = LessonProperties(availableSince = "212")
override val fullLessonContent: LessonContext.() -> Unit
get() = {
refreshGitLogOnOpen()
super.fullLessonContent(this)
}
override fun prepare(project: Project) {
if (GitExecutableManager.getInstance().testGitExecutableVersionValid(project)) {
GitProjectUtil.restoreGitLessonsFiles(project, branchName)

View File

@@ -23,7 +23,7 @@ abstract class KLesson(@NonNls id: String, @Nls name: String) : Lesson(id, name)
override lateinit var module: IftModule
internal set
val fullLessonContent: LessonContext.() -> Unit get() = {
open val fullLessonContent: LessonContext.() -> Unit get() = {
showWarningIfLessonsDisabled()
showIndexingTask()
lessonContent()