From 5d28a22832a3e63e276a119b2c979438dfc2d814 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 27 Oct 2026 10:31:39 +0900 Subject: [PATCH] =?UTF-8?q?fix(557-1):=20B07=20=C2=B7=20CAD=20=EC=9E=91?= =?UTF-8?q?=EC=9D=80=20=ED=9D=A0=20=EC=85=8B=20=E2=80=94=20=ED=86=A0?= =?UTF-8?q?=EC=A0=81=EB=8F=84=20=EC=84=A4=EC=A0=95=20=EC=B0=BD=20=EC=A0=9C?= =?UTF-8?q?=EB=AA=A9=20=EB=A7=90=EC=A4=84=EC=9E=84=20=C2=B7=20=EC=A3=BC?= =?UTF-8?q?=EC=84=9D=20=EB=A6=AC=EB=B3=B8=20=EB=AC=B8=EC=9E=90=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=20=EC=B9=B8=20=EA=B2=B9=EC=B9=A8=20=C2=B7=20?= =?UTF-8?q?=EB=84=98=EC=B9=A8=20=EB=A9=94=EB=89=B4=20=EC=99=BC=EC=AA=BD=20?= =?UTF-8?q?=ED=8C=90=20=EB=92=A4=20=EA=B0=80=EB=A6=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ⚙ 설정 모달 폭 360 → 400 — 「토적도(유토곡선) 설정」 제목 148px 이 124px 칸에 잘리던 것 다 보임(B07 설정 모달만 · 공용 모달 머리 꼴 그대로) - 주석 › 문자 스타일 칸 다섯 = 다섯 줄(102px)이 리본 높이 66 넘어 묶음 이름과 겹침 → 세 줄(글꼴 / 크기 · 색상 / 굵게 · 기울임) · 묶음 폭 · 다른 묶음 자리 그대로 - 리본(position: fixed)이 쌓임 맥락이라 넘침 메뉴 z 20 이 왼쪽 판(z 3) 밑 → 메뉴 연 동안 리본 z 10 - 지킴 시험 test_557_1_b07_cad_fixes Co-Authored-By: Claude Opus 5.5 --- .../B07_DesignDetail_UI_Style.css | 5 +- B07_DesignDetail/openwebcad/src/App.css | 13 +++ .../src/components/RibbonWidgets.tsx | 79 ++++++++++--------- resources/tester/test_557_1_b07_cad_fixes.py | 32 ++++++++ 4 files changed, 90 insertions(+), 39 deletions(-) create mode 100644 resources/tester/test_557_1_b07_cad_fixes.py diff --git a/B07_DesignDetail/B07_DesignDetail_UI_Style.css b/B07_DesignDetail/B07_DesignDetail_UI_Style.css index db3eca1fa..0a8c0ef65 100644 --- a/B07_DesignDetail/B07_DesignDetail_UI_Style.css +++ b/B07_DesignDetail/B07_DesignDetail_UI_Style.css @@ -357,9 +357,10 @@ html.is-bm-route .b07-cad-stack > .cad-tabs { padding-block: 2px; } -/* ⚙ 설정 모달(280-5 · 523-1) — 공용 모달 폭 절반 · 그룹 상자 · 맨 아래 단추 줄 하나 */ +/* ⚙ 설정 모달(280-5 · 523-1) — 공용 모달 폭 절반 · 그룹 상자 · 맨 아래 단추 줄 하나 + 폭 400 = 가장 긴 제목 「토적도(유토곡선) 설정」 + [원본에서 다시 그리기] · [닫기] 한 줄(557-1) */ .ui-modal.b07-settings { - width: min(360px, 92vw); + width: min(400px, 92vw); } /* 좁은 폭 — 제목 · 머리 단추 한 줄(줄바꿈 없음) */ diff --git a/B07_DesignDetail/openwebcad/src/App.css b/B07_DesignDetail/openwebcad/src/App.css index 994e1d59c..bff47f1b1 100644 --- a/B07_DesignDetail/openwebcad/src/App.css +++ b/B07_DesignDetail/openwebcad/src/App.css @@ -185,6 +185,10 @@ body > canvas[data-id="canvas"] { min-width: 170px; max-height: 72vh; } +/* 리본(position: fixed)이 쌓임 맥락이라 메뉴 z 가 그 안에 갇힘 — 메뉴 연 동안 리본을 왼쪽 판(3) 위로(557-1) */ +.cad-ribbon:has(.cad-ribbon-overflow) { + z-index: 10; +} .cad-ribbon-overflow > .ui-ctx-menu__item { display: flex; gap: 8px; @@ -203,6 +207,15 @@ body > canvas[data-id="canvas"] { align-items: stretch; justify-content: flex-start; } +/* 한 줄에 칸 둘(557-1 · 문자 스타일) — 뒤 칸 라벨은 글 폭만 */ +.cad-prop-row { + display: flex; + gap: 8px; + align-items: center; +} +.cad-prop-row > .cad-prop + .cad-prop > span { + width: auto; +} /* 위젯 패널은 한 줄에 라벨+입력을 놓고 세로로 쌓는다 (리본 높이 안에 들어가야 한다) */ .cad-prop { display: flex; diff --git a/B07_DesignDetail/openwebcad/src/components/RibbonWidgets.tsx b/B07_DesignDetail/openwebcad/src/components/RibbonWidgets.tsx index 11555c878..d72152fe7 100644 --- a/B07_DesignDetail/openwebcad/src/components/RibbonWidgets.tsx +++ b/B07_DesignDetail/openwebcad/src/components/RibbonWidgets.tsx @@ -157,43 +157,48 @@ export const TextStyleWidget: FC = () => { ))} - - - - + {/* 칸 다섯 = 세 줄(리본 높이 66 안 · 557-1) — 글꼴 / 크기 · 색상 / 굵게 · 기울임 */} +
+ + +
+
+ + +
); }; diff --git a/resources/tester/test_557_1_b07_cad_fixes.py b/resources/tester/test_557_1_b07_cad_fixes.py new file mode 100644 index 000000000..2cd028475 --- /dev/null +++ b/resources/tester/test_557_1_b07_cad_fixes.py @@ -0,0 +1,32 @@ +"""557-1 B07 · CAD 작은 흠 — 화면 없이 소스로 지킴. + +⚙ 설정 모달 폭 400(토적도 제목 · 머리 단추 한 줄) · 리본 문자 스타일 칸 다섯 = 세 줄(리본 높이 안) · +넘침 메뉴 연 동안 리본이 왼쪽 판(z 3) 위. +""" + +import re +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +CAD = ROOT / "B07_DesignDetail" / "openwebcad" / "src" + + +def test_settings_modal_width(): + css = (ROOT / "B07_DesignDetail" / "B07_DesignDetail_UI_Style.css").read_text("utf-8") + assert re.search(r"\.ui-modal\.b07-settings \{\s*width: min\(400px, 92vw\);", css) + + +def test_text_style_three_rows(): + src = (CAD / "components" / "RibbonWidgets.tsx").read_text("utf-8") + widget = src[src.index("export const TextStyleWidget") :] + assert widget.count('className="cad-prop-row"') == 2 + assert ( + widget.count("cad-prop") - widget.count("cad-prop-row") == 6 + ) # 글꼴(--wide 포함 2) + 칸 넷 + + +def test_overflow_menu_above_inspector(): + css = (CAD / "App.css").read_text("utf-8") + z = re.search(r"\.cad-ribbon:has\(\.cad-ribbon-overflow\) \{\s*z-index: (\d+);", css) + inspector = re.search(r"\.cad-inspector \{[^}]*z-index: (\d+);", css) + assert z and inspector and int(z.group(1)) > int(inspector.group(1))