Browse Source

REPORT-93215 保存路径名称包含于上一次选的保存路径,保存弹窗的路径不会更新

release/11.0
Destiny.Lin 2 years ago
parent
commit
c296181cb7
  1. 20
      designer-base/src/main/java/com/fr/file/FILEChooserPane.java

20
designer-base/src/main/java/com/fr/file/FILEChooserPane.java

@ -1486,7 +1486,7 @@ public class FILEChooserPane extends BasicPane {
} }
public void populate(FILE dir) { public void populate(FILE dir) {
if (popDir != null && dir != null && popDir.toString().indexOf(dir.toString()) == 0) { if (checkOnlyHighLight(dir)) {
highLightButton(dir); highLightButton(dir);
return; return;
} }
@ -1537,6 +1537,24 @@ public class FILEChooserPane extends BasicPane {
highLightButton(dir); highLightButton(dir);
} }
/**
* 检查是不是只需要设置高亮即可
*
* @param dir FILE
* @return 如果还要进行别的设置就返回false,如果只需要更新下高亮(通过点击上面的路径才会只需要更新高亮),返回true
*/
private boolean checkOnlyHighLight(FILE dir) {
if (popDir == null || dir == null) {
return false;
}
String popDirStr = popDir.toString();
String dirStr = dir.toString();
//前缀匹配是不够的,还要看下前缀匹配的下一位是不是'/'
//否则"test"和"test副本"明明不属于同个路径逻辑,也只更新高亮,应该是"test"和"test/副本"这样才可以通过
//如果通过了indexOf的检查,因为不会存在相同的路径,popDirStr只会比dirStr大,看一下前缀匹配的下一位是不是'/',如果不是就得更新路径文本,不能只设置高亮
return popDirStr.indexOf(dirStr) == 0 && popDirStr.length() > dirStr.length() && popDirStr.charAt(dirStr.length()) == '/';
}
// doLayout // doLayout
@Override @Override
public void doLayout() { public void doLayout() {

Loading…
Cancel
Save