레이어 행 이름 잘림 해소 + 라이트 선택색을 연한 파랑으로
이름이 잘려 행을 구분할 수 없었다 눈·자물쇠가 48px 를 상시 차지해 이름 칸이 한글 11자로 줄었다. 운영 서식에는 '입원일 복용약-전립선약' 처럼 앞이 같고 끝에서 갈리는 이름이 흔해 전부 '입원일 복용약-…' 로 잘렸다 — 목록만 보고는 어느 행인지 알 수 없었다. 두 토글을 평소엔 숨기고 마우스를 올린 행에서만 띄운다. 잠김·숨김이 켜진 행에서는 계속 띄운다(거기서까지 숨기면 마우스를 올리기 전에는 상태를 알 방법이 없다). [200] 은 항상 띄우지만 여기서만 갈라선다 — 폭이 곧 가독성이라서. 라이트 모드 선택 밴드가 너무 무거웠다 양 테마 모두 짙은 파랑(#0F6FBF)에 흰 글자를 쓰다 보니, 흰 배경에 짙은 슬라브가 얹혀 선택 몇 줄이 패널 전체를 짓눌렀다. 라이트만 방향을 뒤집는다 — 연한 채움(#A8D3F7, 흰 패널 대비 1.58:1) + 진한 글자(10.1:1). 서브트리도 한 단계 옅게(#DCEBFB) 해서 '폴더가 주인, 멤버는 딸림'이 색 세기로 읽힌다. 밴드 위 글자색을 B.OnAccent(흰색 고정)에서 신설 토큰 B.OnLayerSel 로 바꿔 테마별로 갈라지게 했다(다크 흰색 / 라이트 #222222). 보조 텍스트도 라이트만 #35536C 로(연한 채움 위 5.12:1 — 기존 #E6F1FB 는 라이트에서 사라진다). 회귀: 테스트 124/124, 편집 스모크 실패 0(레이어 검사 45건), DB 왕복 1,271건 diff 0/예외 0, 종이 렌더 P062 바이트 동일. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
c22d84fb61
commit
b47c7af8df
@@ -1,4 +1,4 @@
|
||||
using System.Windows;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using SheetMe.Core.Models;
|
||||
using SheetMe.Core.Serialization;
|
||||
@@ -131,6 +131,7 @@ public abstract class ControlViewModel : ViewModelBase, ILayerRow
|
||||
OnPropertyChanged(nameof(IsLockedFlag));
|
||||
OnPropertyChanged(nameof(LockIcon));
|
||||
OnPropertyChanged(nameof(LockIconSpec));
|
||||
OnPropertyChanged(nameof(HasLayerFlag));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,6 +150,7 @@ public abstract class ControlViewModel : ViewModelBase, ILayerRow
|
||||
OnPropertyChanged(nameof(IsHiddenFlag));
|
||||
OnPropertyChanged(nameof(HiddenIcon));
|
||||
OnPropertyChanged(nameof(HiddenIconSpec));
|
||||
OnPropertyChanged(nameof(HasLayerFlag));
|
||||
OnPropertyChanged(nameof(DesignOpacity));
|
||||
}
|
||||
}
|
||||
@@ -156,6 +158,13 @@ public abstract class ControlViewModel : ViewModelBase, ILayerRow
|
||||
/// <summary>디자인 표시 불투명도 — 숨김이면 0.25</summary>
|
||||
public double DesignOpacity => Model.Hidden ? 0.25 : 1.0;
|
||||
|
||||
/// <summary>
|
||||
/// 잠금·숨김 중 하나라도 켜져 있는가 — 레이어 행에서 눈·자물쇠를 계속 띄워 둘지 판단.
|
||||
/// 평소에는 두 토글을 숨겨 이름 칸을 넓히지만, 상태가 켜진 행에서까지 숨기면
|
||||
/// 마우스를 올리기 전에는 무엇이 잠겼는지 알 수 없다.
|
||||
/// </summary>
|
||||
public bool HasLayerFlag => Model.Locked || Model.Hidden;
|
||||
|
||||
/// <summary>
|
||||
/// 레이어 목록 표시명 — Text 가 있으면 그것, 없으면 Id.
|
||||
///
|
||||
@@ -200,7 +209,7 @@ public abstract class ControlViewModel : ViewModelBase, ILayerRow
|
||||
/// 강조 밴드 위 아이콘 색 — 밴드는 짙은 파랑 채움이라 보조색(B.Muted)을 그대로 두면
|
||||
/// 눈·자물쇠가 1.6:1 로 묻힌다. 선택한 행에서 잠금 상태가 안 보이면 배지의 의미가 없다.
|
||||
/// </summary>
|
||||
private string RowIconKey => layerHighlight == LayerHighlight.Blue ? "B.OnAccent" : "B.Muted";
|
||||
private string RowIconKey => layerHighlight == LayerHighlight.Blue ? "B.OnLayerSel" : "B.Muted";
|
||||
|
||||
/// <summary>잠금 토글 아이콘 사양</summary>
|
||||
public string LockIconSpec => $"{LockIcon}|13|{RowIconKey}";
|
||||
@@ -263,7 +272,7 @@ public abstract class ControlViewModel : ViewModelBase, ILayerRow
|
||||
public string LayerIconSpec =>
|
||||
$"{SheetMe.Designer.Controls.PaletteIconCatalog.IconOf(Type)}|14|" + layerHighlight switch
|
||||
{
|
||||
LayerHighlight.Blue => "B.OnAccent",
|
||||
LayerHighlight.Blue => "B.OnLayerSel",
|
||||
LayerHighlight.Navy => "B.AccentText",
|
||||
_ => "B.Accent",
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using SheetMe.Designer.ViewModels.Controls;
|
||||
using SheetMe.Designer.ViewModels.Controls;
|
||||
|
||||
namespace SheetMe.Designer.ViewModels;
|
||||
|
||||
@@ -98,8 +98,14 @@ public sealed class LayerGroupViewModel : ViewModelBase, ILayerRow
|
||||
/// <summary>숨김 아이콘명 — 하나라도 숨겨져 있으면 숨긴 모양</summary>
|
||||
public string HiddenIcon => Members.Any(m => m.IsHiddenFlag) ? "eye-off" : "eye";
|
||||
|
||||
/// <summary>
|
||||
/// 멤버 중 하나라도 잠기거나 숨겨져 있는가 — 폴더 행의 눈·자물쇠를 계속 띄워 둘지 판단.
|
||||
/// <see cref="IsLockedFlag"/>(전원 기준)이 아니라 하나라도 기준인 이유는 아이콘도 같은 기준이기 때문이다.
|
||||
/// </summary>
|
||||
public bool HasLayerFlag => Members.Any(m => m.IsLockedFlag || m.IsHiddenFlag);
|
||||
|
||||
/// <summary>강조 밴드 위 아이콘 색 — 짙은 파랑 채움 위에서 보조색은 묻힌다</summary>
|
||||
private string RowIconKey => highlight == LayerHighlight.Blue ? "B.OnAccent" : "B.Muted";
|
||||
private string RowIconKey => highlight == LayerHighlight.Blue ? "B.OnLayerSel" : "B.Muted";
|
||||
|
||||
/// <summary>그룹 잠금 아이콘 사양</summary>
|
||||
public string LockIconSpec => $"{LockIcon}|13|{RowIconKey}";
|
||||
@@ -162,7 +168,7 @@ public sealed class LayerGroupViewModel : ViewModelBase, ILayerRow
|
||||
/// <summary>폴더 아이콘 사양 — 강조 밴드 위에서는 흰색으로 뒤집는다</summary>
|
||||
public string FolderIconSpec => "folder|14|" + highlight switch
|
||||
{
|
||||
LayerHighlight.Blue => "B.OnAccent",
|
||||
LayerHighlight.Blue => "B.OnLayerSel",
|
||||
LayerHighlight.Navy => "B.AccentText",
|
||||
_ => "B.Accent",
|
||||
};
|
||||
@@ -178,6 +184,7 @@ public sealed class LayerGroupViewModel : ViewModelBase, ILayerRow
|
||||
OnPropertyChanged(nameof(LockIcon));
|
||||
OnPropertyChanged(nameof(HiddenIconSpec));
|
||||
OnPropertyChanged(nameof(LockIconSpec));
|
||||
OnPropertyChanged(nameof(HasLayerFlag));
|
||||
}
|
||||
|
||||
/// <summary>이름이 없을 때의 기본 표시</summary>
|
||||
|
||||
Reference in New Issue
Block a user