diff --git a/plugins/git4idea/src/git4idea/update/GitUpdateInfoAsLog.kt b/plugins/git4idea/src/git4idea/update/GitUpdateInfoAsLog.kt index 91fe98a84dd2..7205a30f4d4b 100644 --- a/plugins/git4idea/src/git4idea/update/GitUpdateInfoAsLog.kt +++ b/plugins/git4idea/src/git4idea/update/GitUpdateInfoAsLog.kt @@ -197,15 +197,31 @@ class GitUpdateInfoAsLog(private val project: Project, private class MyPropertiesForRange(val rangeFilter: VcsLogRangeFilter, val mainProperties: GitUpdateProjectInfoLogProperties) : MainVcsLogUiProperties by mainProperties { + private val filters: MutableMap> = TreeMap() + private var explicitlyRemovedPathsFilter = false + override fun getFilterValues(filterName: String): List? { when (filterName) { RANGE_FILTER.name -> return ArrayList(rangeFilter.getTextPresentation()) - STRUCTURE_FILTER.name, ROOT_FILTER.name -> return mainProperties.getFilterValues(filterName) - else -> return null + STRUCTURE_FILTER.name, ROOT_FILTER.name -> { + if (explicitlyRemovedPathsFilter) return null + return filters[filterName] ?: mainProperties.getFilterValues(filterName) + } + else -> return filters[filterName] } } override fun saveFilterValues(filterName: String, values: List?) { + if (values != null) { + filters[filterName] = values + } + else { + filters.remove(filterName) + } + + if (filterName == STRUCTURE_FILTER.name || filterName == ROOT_FILTER.name) { + explicitlyRemovedPathsFilter = values == null + } } }