mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs-log] allow to not reset other filters when one filter is set
GitOrigin-RevId: bb6f5bae41275234a7add6e756c50da1a27a3f4c
This commit is contained in:
committed by
intellij-monorepo-bot
parent
dbfaecfaef
commit
5f4f444f69
@@ -52,8 +52,8 @@ class FileFilterModel(val roots: Set<VirtualFile>, uiProperties: MainVcsLogUiPro
|
||||
}
|
||||
}
|
||||
|
||||
var rootFilter by filterProperty(VcsLogFilterCollection.ROOT_FILTER)
|
||||
var structureFilter by filterProperty(VcsLogFilterCollection.STRUCTURE_FILTER)
|
||||
var rootFilter by filterProperty(VcsLogFilterCollection.ROOT_FILTER, exclusive = true)
|
||||
var structureFilter by filterProperty(VcsLogFilterCollection.STRUCTURE_FILTER, exclusive = true)
|
||||
|
||||
companion object {
|
||||
private const val DIR: @NonNls String = "dir:"
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.intellij.vcs.log.VcsLogFilterCollection
|
||||
import com.intellij.vcs.log.impl.MainVcsLogUiProperties
|
||||
import com.intellij.vcs.log.statistics.VcsLogUsageTriggerCollector
|
||||
import com.intellij.vcs.log.visible.filters.VcsLogFilterObject
|
||||
import com.intellij.vcs.log.visible.filters.with
|
||||
import com.intellij.vcs.log.visible.filters.without
|
||||
import kotlin.properties.ReadWriteProperty
|
||||
import kotlin.reflect.KProperty
|
||||
@@ -126,11 +127,21 @@ abstract class FilterModel<Filter> internal constructor(@JvmField protected val
|
||||
protected abstract fun getFilterValues(filter: VcsLogFilter): List<String>?
|
||||
protected abstract fun createFilter(key: VcsLogFilterCollection.FilterKey<*>, values: List<String>): VcsLogFilter?
|
||||
|
||||
protected fun <F : VcsLogFilter?> filterProperty(key: VcsLogFilterCollection.FilterKey<F>): ReadWriteProperty<MultipleFilterModel, F?> {
|
||||
protected fun <F : VcsLogFilter?> filterProperty(key: VcsLogFilterCollection.FilterKey<F>, exclusive: Boolean = false): ReadWriteProperty<MultipleFilterModel, F?> {
|
||||
return object : ReadWriteProperty<MultipleFilterModel, F?> {
|
||||
override fun getValue(thisRef: MultipleFilterModel, property: KProperty<*>): F? = thisRef.getFilter(key)
|
||||
override fun setValue(thisRef: MultipleFilterModel, property: KProperty<*>, value: F?) {
|
||||
setFilter(if (value == null) getFilter()?.without(key) else VcsLogFilterObject.collection(value))
|
||||
val oldFilter = getFilter()
|
||||
val newFilter = if (value == null) {
|
||||
oldFilter?.without(key)
|
||||
}
|
||||
else if (exclusive || oldFilter == null) {
|
||||
VcsLogFilterObject.collection(value)
|
||||
}
|
||||
else {
|
||||
oldFilter.with(value)
|
||||
}
|
||||
setFilter(newFilter)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user