diff --git a/docs/architecture/retail-divergence-register.md b/docs/architecture/retail-divergence-register.md index 240a0096..7c774f64 100644 --- a/docs/architecture/retail-divergence-register.md +++ b/docs/architecture/retail-divergence-register.md @@ -62,7 +62,7 @@ accepted-divergence entries (#96, #49, #50). --- -## 2. Adaptation (AD) — 52 active rows (AD-72 filed 2026-08-08 at the Slice 5.3 review corrections — `VendorPricing`'s double-precision narrowing versus retail's x87 extended precision, same class as AD-33; AD-65 RETIRED and AD-69 FILED 2026-08-07 at Campaign S S4 — the away-arm now snaps per retail @0x00509c50, while AD-66's byte-confirmed sibling landing is WITHHELD pending #341's measurement-anomaly apparatus, and AD-69 records the seam-frame dist gap the same pass discovered; AD-56 RESTORED 2026-08-07 — the a8a7d64b revert had collaterally DELETED it, the inverse of the AD-55 zombie it also created; its plumb-fall-freeze condition is live again since TS-4’s real retirement at Slice 2B; AD-55 RE-RETIRED 2026-08-07 — its 2026-07-30 retirement at 252e8068 was collaterally resurrected by the a8a7d64b revert of the unrelated TS-4 commit; the code kept the cos(10°) fix throughout; AD-68 filed 2026-08-07 at the #338 closure — the async-residency placeholder mover shape (0.4/0.4 steps + capsule) has no retail counterpart because retail loads synchronously; AD-67 filed 2026-08-07 at the #32 closeout — the narrowed `SetContactPlane` keeps its per-write `ContactPlaneCellId`, which retail writes only at `init_contact_plane`; AD-49 filed 2026-08-06 at the #334 fix — the BSP part-array flood runs its outdoor cell rectangle at seed time rather than only from retail’s residency-gated walk, keeping both registration floods on one residency rule; AD-64 filed 2026-08-05 at the C5b architecture review's D1 fix — AD-60's W2 wire-cell REACHABILITY decision is expressed once per host because the two hosts run parallel non-shared inbound routes; the committed VALUE is single-sourced at `RuntimeEntityObjectLifetime.CommitWireCellRebucket`, and unification is filed as #324; AD-60 CORRECTED the same day — its surviving-channel enumeration presented "the local force path, the missile arm" as exhaustive when the entire no-window host belonged in it; AD-1 RETIRED 2026-08-05, C5a deletion sweep — the legacy outdoor demote/restore lift this row described was `PhysicsEngine.Resolve`'s own body, deleted with zero production callers; AD-42 DELETED 2026-08-04, C4 route 3 — its last surviving citation, the headless portal-arrival resync's two-call Resolve/ResolvePlacement split, was retired by the canonical `RuntimeAcceptedPositionDriveController` portal arm; AD-2 amended same route with the deferred-place timing adaptation, the T8 tolerated-overwrite note, and the leash-anchor nuance; AD-63 filed 2026-08-04, cancelled-park presentation rollback — the rollback restores every presentation registration the park's Withdraw removed EXCEPT the player's selection, which is user intent rather than a projection; AD-62 filed 2026-08-03, C4 route 2 round 2 — a deferred ForcePosition retired without committing is not re-applied and its ack is not sent; AD-61 filed 2026-08-02, C3c review round 1 — the #270 settle compression now covers the local player; AD-59/AD-60 filed 2026-08-02, continuation-executor slice) +## 2. Adaptation (AD) — 53 active rows (AD-73 filed 2026-08-11 at the Campaign OP OP2 rework — `UiTabPanel`'s dormant-until-`ActivateTabBehavior()` activation model, replacing retail's unconditional per-instance tab-table wiring, so the four already-shipped Type-8 hosts keep their existing controller-owned switching without a double-driver race; AD-72 filed 2026-08-08 at the Slice 5.3 review corrections — `VendorPricing`'s double-precision narrowing versus retail's x87 extended precision, same class as AD-33; AD-65 RETIRED and AD-69 FILED 2026-08-07 at Campaign S S4 — the away-arm now snaps per retail @0x00509c50, while AD-66's byte-confirmed sibling landing is WITHHELD pending #341's measurement-anomaly apparatus, and AD-69 records the seam-frame dist gap the same pass discovered; AD-56 RESTORED 2026-08-07 — the a8a7d64b revert had collaterally DELETED it, the inverse of the AD-55 zombie it also created; its plumb-fall-freeze condition is live again since TS-4’s real retirement at Slice 2B; AD-55 RE-RETIRED 2026-08-07 — its 2026-07-30 retirement at 252e8068 was collaterally resurrected by the a8a7d64b revert of the unrelated TS-4 commit; the code kept the cos(10°) fix throughout; AD-68 filed 2026-08-07 at the #338 closure — the async-residency placeholder mover shape (0.4/0.4 steps + capsule) has no retail counterpart because retail loads synchronously; AD-67 filed 2026-08-07 at the #32 closeout — the narrowed `SetContactPlane` keeps its per-write `ContactPlaneCellId`, which retail writes only at `init_contact_plane`; AD-49 filed 2026-08-06 at the #334 fix — the BSP part-array flood runs its outdoor cell rectangle at seed time rather than only from retail’s residency-gated walk, keeping both registration floods on one residency rule; AD-64 filed 2026-08-05 at the C5b architecture review's D1 fix — AD-60's W2 wire-cell REACHABILITY decision is expressed once per host because the two hosts run parallel non-shared inbound routes; the committed VALUE is single-sourced at `RuntimeEntityObjectLifetime.CommitWireCellRebucket`, and unification is filed as #324; AD-60 CORRECTED the same day — its surviving-channel enumeration presented "the local force path, the missile arm" as exhaustive when the entire no-window host belonged in it; AD-1 RETIRED 2026-08-05, C5a deletion sweep — the legacy outdoor demote/restore lift this row described was `PhysicsEngine.Resolve`'s own body, deleted with zero production callers; AD-42 DELETED 2026-08-04, C4 route 3 — its last surviving citation, the headless portal-arrival resync's two-call Resolve/ResolvePlacement split, was retired by the canonical `RuntimeAcceptedPositionDriveController` portal arm; AD-2 amended same route with the deferred-place timing adaptation, the T8 tolerated-overwrite note, and the leash-anchor nuance; AD-63 filed 2026-08-04, cancelled-park presentation rollback — the rollback restores every presentation registration the park's Withdraw removed EXCEPT the player's selection, which is user intent rather than a projection; AD-62 filed 2026-08-03, C4 route 2 round 2 — a deferred ForcePosition retired without committing is not re-applied and its ack is not sent; AD-61 filed 2026-08-02, C3c review round 1 — the #270 settle compression now covers the local player; AD-59/AD-60 filed 2026-08-02, continuation-executor slice) Recent retirements: AD-3/AD-4 retired 2026-07-31 by exact active/per-candidate visible-cell availability, full-catalog containment-root validation, and the @@ -105,6 +105,7 @@ readiness/requeue adaptation. See | # | Divergence | Where (file:line) | Why it is safe / justified | Risk if assumption breaks | Retail oracle | |---|---|---|---|---|---| +| AD-73 | Filed 2026-08-11 at the Campaign OP OP2 rework (fix round after a double REJECT). `UiTabPanel` (dat Type 8, formerly `UiTabControl`) does NOT perform retail's automatic tab-table wiring / default-page activation at construction. Retail `UIElement_Panel::SetupTabPageHash @0x0046C2E0` + `::Update @0x0046BD00` unconditionally activate the authored default page for ANY instance that carries a tab table. `UiTabPanel` instead stays DORMANT — no click binding, no page-visibility flip, no tab Open/Closed write — until a controller explicitly calls `ActivateTabBehavior()`. | `src/AcDream.App/UI/UiTabPanel.cs` (`ActivateTabBehavior`); factory site `src/AcDream.App/UI/Layout/DatWidgetFactory.cs` (Type-8 arm) | Four already-shipped Type-8 hosts author a tab table today — character sheet root `0x10000227`, spellbook root `0x100002A8`, and vendor `0x100000B8` already implement this exact switching in their own C# controllers (`CharacterStatController`/`SpellbookWindowController`/`VendorUiController`); activating `UiTabPanel`'s own copy unconditionally would double-drive the same page-visibility/tab-state writes those controllers already own. Combat `0x100000A2` has no controller at all and is INTENTIONALLY left inert (its 8 stance pages have no switching UI yet) rather than have `UiTabPanel` silently take ownership. Only newly-authored hosts opt in (Options panel, Campaign OP slice OP3+; Configure Keyboard, OP8). This is what let the unconditional Type-8 factory mapping become safe after the OP2 REJECT (`docs/research/2026-08-11-op2-review-blast.md`, `docs/research/2026-08-11-op2-review-mechanism.md`). | A future panel that authors a Type-8 tab table but never gets a controller call to `ActivateTabBehavior()` renders with every tab button at its authored default (Closed) and every page slot at its default `Visible=true` — i.e. every page overlapping, no single active page — instead of retail's exactly-one-visible-page behavior. This is silent unless the diagnostic `UnresolvedEntries`/`BehaviorActive` surface is checked; a controller author who forgets the activation call will see a visually broken tab host, not a crash. | `UIElement_Panel::SetupTabPageHash @0x0046C2E0`; `UIElement_Panel::Update @0x0046BD00`; `UIElement_Panel::OpenTab @0x0046BE20` | | ~~AD-53~~ | **RETIRED 2026-07-31 (Campaign P Slice 1B).** `Transition.CliffSlide` now consumes only `collision_info.last_known_contact_plane.N`, exactly as retail does. The invented `LastWalkablePlane -> LastKnownContactPlane -> UnitZ` fallback chain is gone; invalid/default or parallel data takes retail's degenerate `OK_TS` return. | `src/AcDream.Core/Physics/TransitionTypes.cs` (`CliffSlide`); `tests/AcDream.Core.Tests/Physics/RetailEdgeResponseOrderingTests.cs` | — | — | `CTransition::cliff_slide` pc:272397 (0050a6d0); `last_known_contact_plane` maintenance pc:272659-272668 (~0050ad07) | | ~~AD-54~~ | **RETIRED 2026-07-31 (Campaign P Slice 1B).** Every stored walkable polygon now routes unconditionally to `PrecipiceSlide`, including a plane steeper than `FloorZ`; the invented steep-walkable reroute to `CliffSlide` is gone. | `src/AcDream.Core/Physics/TransitionTypes.cs` (`EdgeSlideAfterStepDownFailed`); `tests/AcDream.Core.Tests/Physics/RetailEdgeResponseOrderingTests.cs` | — | — | `CTransition::edge_slide` pc:273001-273090 (0050b3d0) | | ~~AD-55~~ | **RETIRED 2026-07-30 at `252e8068` — and RE-RETIRED 2026-08-07 after a revert resurrected the row text.** The production constant has been the byte-confirmed `0.98480775f` (cos 10°) since `252e8068`, which also struck this row. Five hours later `a8a7d64b` — reverting the UNRELATED TS-4 commit `5e2be19b` — restored this file's older hunk and resurrected the un-struck row while leaving the code fixed. The zombie row then cost a full duplicate byte-derivation on 2026-08-07 (independent confirmation, identical result: qword [0x007c6b28] = π/18 exactly, live FCOS, threshold cos(10°) = 0.984807753; see `docs/research/2026-08-07-ad55-sledding-constant-byte-decode.md`). The old `0.99999536f` was ACE's error — the radian literal evaluated in degree mode — and acdream inherited then corrected it. **Process rule filed to memory: reverting any commit that touched this register must re-verify EVERY row the revert's register hunk touches, because whole-hunk reverts of single-line rows silently undo unrelated row edits.** Original text, retained: `calc_friction`'s Sledding slope-flatness test compares `GroundNormal.Z > 0.99999536f` (≈0.175° from flat); the raw retail decomp literally computes `__fcos(0.17453292519943295)` (= cos(10°) ≈ 0.984808) and compares that against `contact_plane.N.z` — physically very different tests (0.175° accepts only essentially-perfectly-flat ground; 10° accepts any modest slope) | `src/AcDream.Core/Physics/PhysicsBody.cs` (`calc_friction`, the Sledding near-flat branch) | Filed 2026-07-30 splitting AP-7's retirement (Campaign P Slice P2). Two hypotheses, neither confirmed this pass: (a) BN misdecompiled a raw float-constant load as an `__fcos()` call (a known BN artifact class), or (b) ACE's own port made an independent error and cos(10°) is correct. `0.99999536f` is kept provisionally — least churn, since it is what acdream's own prior (structurally unreachable) dead code already had — pending a live Ghidra decompile of `0050ee70` checking whether the FCOS opcode is real or a raw `FLD` of one of these two constants | Currently harmless in production: nothing sets `PhysicsState.Sledding` client-side (see #166 research), so this branch is unreachable either way. The moment a data-authored Sledding toggle exists, the wrong constant changes which slopes get the light 0.2f sled-friction override vs. the heavier default | `CPhysicsObj::calc_friction` pc:276694-276822 (0050ee70), the `__fcos(0.17453292519943295)` slope-flatness comparison; ACE `PhysicsObj.calc_friction` PhysicsObj.cs:2120-2141 (`0.99999536f`); `docs/research/2026-07-30-response-layer-edge-family-pseudocode.md` §1, §7 item 3 | @@ -346,12 +347,11 @@ AP-94..AP-112 for the confirmed retail-UI completion gaps. | AP-191 | **Filed 2026-08-10 (Campaign CH round 4, user-gate items 1+2 — retail two-plane glyph outline + authored SpewBox/chat text style, `docs/research/2026-08-10-retail-ui-text-style.md`).** The chat transcript's authored BASE STYLE (`0x10000372` in layout `0x2100003F`) carries a `0x1C`/`0x1D` pair alongside its `0x1A`/`0x1B` — `0x1D` (`TagFontColor[]`) is confirmed authored `ARGB(255,0,178,0)` (green), and `0x1C` is UNVERIFIED but most likely `TagFontDID` by symmetry with `0x1D` (both are pull-based, no `OnSetAttribute` case, unlike `0x1A`/`0x1B`/`0x21`/`0x22` which this round's commit DOES import). Retail's `AppendTextWithFont` selects a font/colour PAIR per appended run via `SetFontDIDNum`/`SetFontColorNum`, so a message's `[General]`-style channel tag can render in a distinct colour/font from the rest of the line — a capability `UiText.Line` does not have (one `Color` per whole line, no sub-line run concept). Landing this needs a per-run tag boundary threaded from `ChatTranscriptRenderer.BuildLines` through `UiText`'s line model into `UiRenderContext.DrawStringDat`, deliberately out of this round's scope (Fix 5 only changed the DEFAULT/uncolored-run seed, not the run model). `src/AcDream.App/UI/Layout/ChatTranscriptRenderer.cs` (`BuildLines`); `src/AcDream.App/UI/UiText.cs` (`Line`) | The default-fill fix (this same commit) is the higher-value, lower-risk half of retail's text-style gap for the transcript; a per-run tag concept is a larger structural change (touches the line model every transcript consumer reads) better landed as its own reviewed slice than folded into a text-style bugfix commit | Retail's `[General]`/channel-name tag prefix on a chat line renders the SAME colour as the rest of the line in acdream instead of green, and any authored tag-specific font goes unused — cosmetic only, the message text itself is unaffected | `UIElement_Text::AppendTextWithFont @0x00469de0`; `UIElement_Text::SetFontColorHelper @0x00466ac0`; `docs/research/2026-08-10-retail-ui-text-style.md` §2.3/§2.6 | | AP-192 | **Filed 2026-08-10 (Campaign CH round-5 polish, review item S2 — non-UiText outline paths).** Authored glyph outline `0x21`/outline color `0x22` now reach every text-bearing retained widget (`UiText`, `UiButton`, `UiDatElement`, `UiField`, `UiMeter`, `UiMenu`, `UiCatalogSlot` — the last two settable-only, having no authored build path), seeded ONCE from the element's effective-default state via `ElementReader.ApplyCanonicalLegacyProjection`'s `TryGetEffectiveProperty` (DirectState-then-effective-default rule). Retail instead re-resolves text properties on every UI STATE CHANGE — a button entering state `0x3` whose StateDesc authors `0x21=true` gains the outline for the duration of that state. The authored data hits this today: the dialog panel's two buttons (`0x2100003C` elements `0x17`/`0x19`), the character panel button `0x10000535`, and the combat panel button `0x100000B2` each author `0x21=true` in state `0x3` ONLY (DefaultStateId=1 → no outline at effective-default; `0x100000B2` also authors DirectState `0x21=true`, which the canonical rule DOES honor). The same seed-once shape already governs `UiText` (its `ApplyDatState` re-resolves `0x1B` FontColor per state but not `0x21`/`0x22`). `src/AcDream.App/UI/Layout/DatWidgetFactory.cs` (BuildButton/BuildCheckbox/BuildMeter/BuildText + the editable-field branch); `src/AcDream.App/UI/UiText.cs` (`ApplyDatState`) | Seed-once from the canonical effective state is strictly closer to retail than the pre-round-5 any-state first-wins scan (which lit those state-`0x3` outlines PERMANENTLY); the widening this row rides in on makes every ALWAYS-outlined authored element (DirectState/default-state authors) render retail-correct, and per-state re-resolution needs a property-application pass on the existing `TrySetRetailState` path — a reviewed slice of its own, not a polish-commit fold-in | A button that retail outlines only in a specific UI state (the four state-`0x3` authors above — state 3 is a hover/highlight-class state) never shows that transient outline in acdream; conversely nothing over-renders, since the effective-default resolution correctly yields outline-off for those elements | `UIElement_Text::SetOutline @0x0046a81c` (`m_bitField & 0x10`); `UIElement_Text::DrawSelf @0x00467aa0` (two-pass outline+fill); LayoutDesc fixtures `dialogs_2100003C.json` (`0x17`/`0x19`), `character_2100002E.json` (`0x10000535`), `combat_21000073.json` (`0x100000B2`) | -## 4. Temporary stopgap (TS) — 41 active rows (TS-73 filed 2026-08-11 at the Campaign OP OP1 review-fix round — `RuntimeCharacterOptionsState.TrySetOption`'s port of `CPlayerModule::OnChanged`'s local side-effect switch (MF-2) covers only the two `PlayerModule`-state-mutating cases (0x02/0x12 fellowship mutual exclusion); the four presentation-binding cases (weather/day/combat-target/fog) remain unmodeled, pre-anchored to Campaign OP OP4's Group B consumer binds (see the row below); TS-71 RETIRED 2026-08-11 at the same round — both remaining `SetCharacterOptions (0x01A1)` flush triggers (the 480 s auto-save timer, the pre-logoff flush) are now wired through `LiveSessionController`'s own tick/stop transaction (`ConfigureAutoSaveTick`/`ConfigurePreLogoffFlush`, wired once by `GameRuntime`'s constructor), matching the plan's stated target; TS-72 filed 2026-08-10 at Campaign OP slice OP2 — `UiCheckboxBitfield64`'s click-toggle bit math is a conservative AND/OR approximation, flagged for OP5 to verify against the real `UIOption_CheckboxBitfield64` click-handler decomp before wiring the authoritative transaction; the widget is not yet reachable by any user (see the row below); TS-70 RETIRED 2026-08-09 at Campaign CH user-gate round 1, item E (#362) — `ClientCommandResponses.cs` now parses and renders all four named inbound GameEvents (`ChannelIndex 0x0149`, `ChannelList 0x0148`, `AvailableHouses 0x0271`, `AllegianceInfoResponse 0x027C`), each wired into `GameEventWiring.cs` and rendering retail-shaped `LogTextType 0x00` lines ported from the named-retail decomp (`Handle_Communication__ChannelIndex`/`ChannelList` @0x0057d0c0/@0x0057d230, `Handle_House__Recv_AvailableHouses` + `DisplayListOfCoords` @0x00585d50/@0x00585c20, `Handle_Allegiance__AllegianceInfoResponseEvent` @0x0056a1d0); the row's `@on`/`@off` mention was never itself missing a handler (both already resolve through the pre-existing `WeenieErrorWithString` registration) so nothing there needed a fix; TS-68/TS-69 filed 2026-08-09, Campaign CH slice CH4 — the deferred allegiance/house subcommand dispatchers, the three unported pure-local commands (day/log/render); TS-66/TS-67 filed and TS-29 retired 2026-08-08, Campaign A slice A5 — the region ambient system landed, so TS-29's ambient half is ported and its music half turned out to have nothing to port; TS-66 is the omitted `seen_outside` interior case and TS-67 the in-plane contribution weight. TS-64/TS-65 filed 2026-08-08, Campaign A slice A2 — TS-64 the two unimplemented retail sound preferences (unfocused-app silence, pan disable) plus the three enable bools; TS-65 the volume-squared quirk, applied on the ambient path where two lanes byte-confirmed it and deliberately NOT on the hook path where the pre-multiplying overload is unpinned. TS-62/TS-63 filed 2026-08-02, continuation-executor slice; TS-4 and TS-8 retired 2026-07-31; Campaign P's goal-enumerated physics stopgaps are now zero. TS-4's graph/flat Path-6 branches match retail's foot SetCollide/Adjusted and head CollisionNormal/Collided split with no BSP-layer sliding-normal write; TS-8's live 0x02C2 carries its complete StatMod through the canonical enchantment record and updates effective stats immediately. Campaign P P7 2026-07-30: TS-25 retired — outbound stance has shipped via RawState.CurrentStyle since #219; TS-24 re-argued to AD-57; TS-40 re-argued to AD-58; TS-35 retired at P5; earlier same campaign: TS-1/TS-5/TS-23/TS-46 retired by ports; TS-23 retired 2026-07-30 at Campaign P Slice P3 — every mover-flags call site (local player world-entry ×2, remote DR sweep ×2, remote teleport, ordinary movers) now ORs in the mover's real PK/PKLite/Impenetrable `ObjectInfoState` bits via the new `ClientObjectTable`-backed `EntityCollisionFlagsExt.ResolveMoverPvpState` — **narrative corrected 2026-08-03 (#297): "real" only became true at #297. Until then the bits existed but the source `PublicWeenieBitfield` was frozen at CreateObject, so every one of those sites read a stale value for the whole session. The site enumeration is also incomplete: `RuntimeSetPositionMoverPreparation.cs:183-188` is a SEVENTH mover-flags site that decodes `record.Snapshot.ObjectDescriptionFlags` directly rather than calling `ResolveMoverPvpState`, and it also derives `ObjectInfoState.IsPlayer` from the PWD bit, contradicting `EntityCollisionFlags.cs:119-123`'s claim that every site uses a GUID-prefix heuristic. See AP-134.** — and `PlayerWeenie.JumpStaminaCost`'s `pk` parameter reads the real `PlayerKillerStatus`/`LastPkAttackTimestamp` pair against a 20-second window instead of a hardcoded `false`; the non-PK invariant (every ACE default-created character) is bit-identical to the pre-P3 value since `ResolveMoverPvpState` and the PK-timer predicate both resolve to a no-op for `PublicWeenieBitfield` absent/0; TS-46 retired 2026-07-30 at Campaign P Slice P3 — the Setup's verbatim ≤2-sphere list (`CPhysicsObj::transition` 0x00512dc0 → `SPHEREPATH::init_sphere` 0x0050c670) now seeds the sweep for the local player, remote dead-reckoning, and ordinary movers alike, replacing the two-scalar (radius, height) capsule reconstruction; remote/ordinary step-up/step-down are now Setup-derived (`CPartArray::GetStepUpHeight`/`GetStepDownHeight`, 0x005180d0/0x005180f0, ×ObjScale) instead of a hardcoded 0.4 m, closing both residuals the row named; TS-5 retired 2026-07-30 at Campaign P Slice P1 — real burden-gated CanJump + real JumpStaminaCost, both decomp-verbatim; TS-1 retired 2026-07-30 at Campaign P Slice P2 — the row was stale; the EdgeSlide → PrecipiceSlide/CliffSlide chain is already a real, tested port; TS-57..TS-61 filed 2026-07-29 during Campaign N — no outbound RejectRetransmit; TS-27 narrowed same slice to the inbound direction) + TS-37 historical note (TS-20 retired 2026-07-16 — the later named-retail audit disproved the proposed DrawingBSP polygon filter; TS-37 is a retired-row historical note, not an active count; TS-39 retired R5-V3 — sticky seams bound to the ported PositionManager/StickyManager, radii threaded; TS-45 retired 2026-07-07 — hand-rolled `SphereCollision` replaced by the faithful CSphere family port, fixing the player-vs-monster crowd wedge; TS-3 retired 2026-07-07 — `frames_stationary_fall` accounting ported in the #182 verbatim UpdateObjectInternal rebuild, fixing the airborne falling-animation wedge; TS-41 retired 2026-07-07 — SERVERVEL synth-velocity remote body-drive replaced by the retail interp catch-up + unconditional MovementManager::UseTime, the remote-creature de-overlap #184; TS-42 retired 2026-07-19 — semantic animation completion now precedes the ordered Target/Movement/PartArray/Position tail; TS-44 narrowed again 2026-07-19 — complete orientation joined interpolation, only during-stick enqueue suppression remains) +## 4. Temporary stopgap (TS) — 40 active rows (TS-73 filed 2026-08-11 at the Campaign OP OP1 review-fix round — `RuntimeCharacterOptionsState.TrySetOption`'s port of `CPlayerModule::OnChanged`'s local side-effect switch (MF-2) covers only the two `PlayerModule`-state-mutating cases (0x02/0x12 fellowship mutual exclusion); the four presentation-binding cases (weather/day/combat-target/fog) remain unmodeled, pre-anchored to Campaign OP OP4's Group B consumer binds (see the row below); TS-71 RETIRED 2026-08-11 at the same round — both remaining `SetCharacterOptions (0x01A1)` flush triggers (the 480 s auto-save timer, the pre-logoff flush) are now wired through `LiveSessionController`'s own tick/stop transaction (`ConfigureAutoSaveTick`/`ConfigurePreLogoffFlush`, wired once by `GameRuntime`'s constructor), matching the plan's stated target; TS-72 RETIRED 2026-08-11 at the Campaign OP OP2 rework (double-REJECT fix round) — the click-toggle bit math is now decomp-CONFIRMED against `UIOption_CheckboxBitfield64::ListenToElementMessage @0x00485AE0` (`BitUtils::SetBitsOnOrOff`: OR-in-on / AND-NOT-off, which was already correct) and `::Refresh @0x004859C0` (the checked-state predicate, which WAS wrong — the shipped code required ALL mask bits set; retail checks on ANY mask bit — and is now fixed to match); the widget is still not reachable by any user (Campaign OP slice OP5 wires it), but nothing about its own click/checked mechanism remains genuinely unverified, so the row is retired rather than rewritten; TS-70 RETIRED 2026-08-09 at Campaign CH user-gate round 1, item E (#362) — `ClientCommandResponses.cs` now parses and renders all four named inbound GameEvents (`ChannelIndex 0x0149`, `ChannelList 0x0148`, `AvailableHouses 0x0271`, `AllegianceInfoResponse 0x027C`), each wired into `GameEventWiring.cs` and rendering retail-shaped `LogTextType 0x00` lines ported from the named-retail decomp (`Handle_Communication__ChannelIndex`/`ChannelList` @0x0057d0c0/@0x0057d230, `Handle_House__Recv_AvailableHouses` + `DisplayListOfCoords` @0x00585d50/@0x00585c20, `Handle_Allegiance__AllegianceInfoResponseEvent` @0x0056a1d0); the row's `@on`/`@off` mention was never itself missing a handler (both already resolve through the pre-existing `WeenieErrorWithString` registration) so nothing there needed a fix; TS-68/TS-69 filed 2026-08-09, Campaign CH slice CH4 — the deferred allegiance/house subcommand dispatchers, the three unported pure-local commands (day/log/render); TS-66/TS-67 filed and TS-29 retired 2026-08-08, Campaign A slice A5 — the region ambient system landed, so TS-29's ambient half is ported and its music half turned out to have nothing to port; TS-66 is the omitted `seen_outside` interior case and TS-67 the in-plane contribution weight. TS-64/TS-65 filed 2026-08-08, Campaign A slice A2 — TS-64 the two unimplemented retail sound preferences (unfocused-app silence, pan disable) plus the three enable bools; TS-65 the volume-squared quirk, applied on the ambient path where two lanes byte-confirmed it and deliberately NOT on the hook path where the pre-multiplying overload is unpinned. TS-62/TS-63 filed 2026-08-02, continuation-executor slice; TS-4 and TS-8 retired 2026-07-31; Campaign P's goal-enumerated physics stopgaps are now zero. TS-4's graph/flat Path-6 branches match retail's foot SetCollide/Adjusted and head CollisionNormal/Collided split with no BSP-layer sliding-normal write; TS-8's live 0x02C2 carries its complete StatMod through the canonical enchantment record and updates effective stats immediately. Campaign P P7 2026-07-30: TS-25 retired — outbound stance has shipped via RawState.CurrentStyle since #219; TS-24 re-argued to AD-57; TS-40 re-argued to AD-58; TS-35 retired at P5; earlier same campaign: TS-1/TS-5/TS-23/TS-46 retired by ports; TS-23 retired 2026-07-30 at Campaign P Slice P3 — every mover-flags call site (local player world-entry ×2, remote DR sweep ×2, remote teleport, ordinary movers) now ORs in the mover's real PK/PKLite/Impenetrable `ObjectInfoState` bits via the new `ClientObjectTable`-backed `EntityCollisionFlagsExt.ResolveMoverPvpState` — **narrative corrected 2026-08-03 (#297): "real" only became true at #297. Until then the bits existed but the source `PublicWeenieBitfield` was frozen at CreateObject, so every one of those sites read a stale value for the whole session. The site enumeration is also incomplete: `RuntimeSetPositionMoverPreparation.cs:183-188` is a SEVENTH mover-flags site that decodes `record.Snapshot.ObjectDescriptionFlags` directly rather than calling `ResolveMoverPvpState`, and it also derives `ObjectInfoState.IsPlayer` from the PWD bit, contradicting `EntityCollisionFlags.cs:119-123`'s claim that every site uses a GUID-prefix heuristic. See AP-134.** — and `PlayerWeenie.JumpStaminaCost`'s `pk` parameter reads the real `PlayerKillerStatus`/`LastPkAttackTimestamp` pair against a 20-second window instead of a hardcoded `false`; the non-PK invariant (every ACE default-created character) is bit-identical to the pre-P3 value since `ResolveMoverPvpState` and the PK-timer predicate both resolve to a no-op for `PublicWeenieBitfield` absent/0; TS-46 retired 2026-07-30 at Campaign P Slice P3 — the Setup's verbatim ≤2-sphere list (`CPhysicsObj::transition` 0x00512dc0 → `SPHEREPATH::init_sphere` 0x0050c670) now seeds the sweep for the local player, remote dead-reckoning, and ordinary movers alike, replacing the two-scalar (radius, height) capsule reconstruction; remote/ordinary step-up/step-down are now Setup-derived (`CPartArray::GetStepUpHeight`/`GetStepDownHeight`, 0x005180d0/0x005180f0, ×ObjScale) instead of a hardcoded 0.4 m, closing both residuals the row named; TS-5 retired 2026-07-30 at Campaign P Slice P1 — real burden-gated CanJump + real JumpStaminaCost, both decomp-verbatim; TS-1 retired 2026-07-30 at Campaign P Slice P2 — the row was stale; the EdgeSlide → PrecipiceSlide/CliffSlide chain is already a real, tested port; TS-57..TS-61 filed 2026-07-29 during Campaign N — no outbound RejectRetransmit; TS-27 narrowed same slice to the inbound direction) + TS-37 historical note (TS-20 retired 2026-07-16 — the later named-retail audit disproved the proposed DrawingBSP polygon filter; TS-37 is a retired-row historical note, not an active count; TS-39 retired R5-V3 — sticky seams bound to the ported PositionManager/StickyManager, radii threaded; TS-45 retired 2026-07-07 — hand-rolled `SphereCollision` replaced by the faithful CSphere family port, fixing the player-vs-monster crowd wedge; TS-3 retired 2026-07-07 — `frames_stationary_fall` accounting ported in the #182 verbatim UpdateObjectInternal rebuild, fixing the airborne falling-animation wedge; TS-41 retired 2026-07-07 — SERVERVEL synth-velocity remote body-drive replaced by the retail interp catch-up + unconditional MovementManager::UseTime, the remote-creature de-overlap #184; TS-42 retired 2026-07-19 — semantic animation completion now precedes the ordered Target/Movement/PartArray/Position tail; TS-44 narrowed again 2026-07-19 — complete orientation joined interpolation, only during-stick enqueue suppression remains) | # | Divergence | Where (file:line) | Why it is safe / justified | Risk if assumption breaks | Retail oracle | |---|---|---|---|---|---| | TS-73 | `RuntimeCharacterOptionsState.TrySetOption`'s port of `CPlayerModule::OnChanged @0x0059A8E0`'s local side-effect switch (step 2) covers only the two cases that mutate `PlayerModule` state itself — `case 2 IgnoreFellowshipRequests` / `case 0x12 FellowshipAutoAcceptRequests`, the fellowship mutual-exclusion pair (MF-2, OP1 review fix). The other four cases (`0x04 DisableMostWeatherEffects`, `0x05 PersistentAtDay`, `0x07 ViewCombatTarget`, `0x30 DisableDistanceFog`) are presentation bindings retail wires to `SmartBox::EnableWeather`/`LScape::SetDay`/`ClientCombatSystem::TrackTarget`/`LScape::m_fFogEnabled` — none of which this Runtime-only seam can reach today. | `src/AcDream.Runtime/Gameplay/RuntimeCharacterState.cs` (`RuntimeCharacterOptionsState.TrySetOption`) | Pre-anchored, not newly discovered: Campaign OP's own slice map already assigns these four options' consumers to OP4's "Group B one-line binds" (weather/daylight/fog) and OP3's mouse-turning row — the campaign plan (`docs/plans/2026-08-10-options-panel-campaign.md` §4 OP4) is the tracking mechanism, this row is the auditable pointer to it from the code that actually omits them. | Until OP4 lands, toggling `DisableMostWeatherEffects`/`PersistentAtDay`/`ViewCombatTarget`/`DisableDistanceFog` writes the bit and dirties/auto-saves it correctly, but produces NONE of retail's immediate local presentation change (weather doesn't stop, distance fog doesn't toggle, day/night doesn't force, combat-target tracking doesn't engage) until the next full reconnect re-derives it from some other path. | `CPlayerModule::OnChanged @0x0059A8E0`; `docs/research/2026-08-10-character-options-map.md` §1.5 | -| TS-72 | `UiCheckboxBitfield64`'s click handler (the Chat tab's per-window text-filter block) applies a conservative AND/OR-mask toggle — a row is "on" when ALL its mask bits are set in the current value, and a click SETS (turns on) or CLEARS (turns off) exactly those bits — because the decompiled excerpt this campaign pulled documents `UIOption_CheckboxBitfield64::Apply`'s WRITE side (the property write into `PlayerModule::SetChatWindowOption`) but not the CLICK handler's own bit-toggle math. The widget itself is not yet wired into any page controller (Campaign OP slice OP2 ships the primitive only), so nothing user-reachable can observe a divergence yet. | `src/AcDream.App/UI/UiCheckboxBitfield64.cs` (`ToggleRow`) | Filed rather than guessed silently: the class doc/remarks flag the exact gap and name the follow-up slice (OP5, the Chat tab controller) that must verify/replace the algorithm against `UIOption_CheckboxBitfield64`'s real click-handler decomp before wiring the authoritative `PlayerModule::SetChatWindowOption` transaction. | If the real algorithm differs (e.g. XOR instead of set/clear, or partial-overlap handling), a later slice that wires this widget without re-verifying ships a subtly wrong per-row toggle for the Chat tab's text filters — a checkbox that doesn't match retail's exact on/off transition for masks with partially-overlapping bits. | `docs/research/2026-08-10-options-panel-structure.md` §3.7 (documents `Apply`'s write side only); `UIOption_CheckboxBitfield64::Apply @0x00485FF0` | | ~~TS-1~~ | **RETIRED 2026-07-30 (Campaign P Slice P2) — the row was stale, not the code.** The cited `:1254` line is unrelated stepping-loop code; the file moved substantially since the row was written. Retail's `EdgeSlide → PrecipiceSlide / CliffSlide` chain is already a real, tested port: `SpherePath.PrecipiceSlide` (`TransitionTypes.cs:943-970`, retail `SPHEREPATH::precipice_slide` pc:274316), `Transition.CliffSlide` (`:2080-2164`, retail `CTransition::cliff_slide` pc:272397, return-value mapping verified against `acclient.h:6100-6108`), and `Transition.EdgeSlideAfterStepDownFailed` (`:1907-2078`, mirrors `CTransition::edge_slide` pc:273001-273090). The one real gap (back-probe fallback skipping retail's `walkable_check_pos`/`localspace_sphere` recache, pc:274318-274326) needed no code change: acdream's `WalkableVertices`/`GlobalSphere` are populated in unified world space at assignment time (`SetWalkable`/`SetWalkableTransformed`, `SetCheckPos`/`RestoreCheckPos`), so both operands `BSPQuery.FindCrossedEdge` compares are already commensurable — retail's per-cell local-frame reprojection is a no-op correction here. Documented in-code at the back-probe site and pinned by `EdgeSlideBackProbePrecipiceSlideTests`. The chain's two acdream-only compensating branches (CliffSlide's three-source reference-normal fallback; the walkable-steepness reroute to CliffSlide before PrecipiceSlide) are real, non-retail additions — filed as AD-53 / AD-54 rather than folded into this row. | `src/AcDream.Core/Physics/TransitionTypes.cs` (`SpherePath.PrecipiceSlide`, `Transition.CliffSlide`, `Transition.EdgeSlideAfterStepDownFailed`); `tests/AcDream.Core.Tests/Physics/EdgeSlideBackProbePrecipiceSlideTests.cs` | — | — | `SPHEREPATH::precipice_slide` pc:274316 (0050cc80); `CTransition::cliff_slide` pc:272397 (0050a6d0); `CTransition::edge_slide` pc:273001-273090 (0050b3d0); `SPHEREPATH::get_walkable_pos`/`cache_localspace_sphere`/`set_walkable_check_pos` pc:274318-274326 (0050a8f0/0050c9d0/00509ce0); `docs/research/2026-07-30-response-layer-edge-family-pseudocode.md` §2, §6 Step 1 | | ~~TS-4~~ | **RETIRED 2026-07-31 (Campaign P Slice 2B; corrective acceptance complete).** The graph and prepared-flat Path-6 implementations now match retail's exact two-sphere split: every primary/foot polygon hit calls `SetCollide`, sets `WalkableAllowance=LandingZ`, and returns `Adjusted`; only a secondary/head hit writes `CollisionNormal` and returns `Collided`. The steep tangent shortcut and every BSP-layer `SetSlidingNormal` write are deleted. Exact site tests pin all changed and preserved fields plus raw-bit graph/flat parity. A corrective 90-tick already-airborne, zero-root-motion Core suite executes acceleration, body integration, transition resolution, exact commit, and `handle_all_collisions` while retaining every behavior-bearing collision/body field used by that specialized quantum. Vertical, inward, tangential, downhill, and positive-Z uphill-jump traces match graph/flat by raw bits, reject penetration/fixed points/second launches, and pin exact terminal velocity, contact, sliding, and contact-plane state. The older resolver-only capture is explicitly historical and restored to its three-second bound. | `src/AcDream.Core/Physics/BSPQuery.cs`; `src/AcDream.Core/Physics/FlatBspQuery.cs`; `tests/AcDream.Core.Tests/Physics/Ts4Path6ConformanceTests.cs`; `tests/AcDream.Core.Tests/Physics/Ts4ProductionQuantumConformanceTests.cs`; `tests/AcDream.Core.Tests/Physics/Ts4SteepRoofWedgeCaptureTests.cs` | — | — | `BSPTREE::find_collisions` 0x0053A440: head `0x0053A793..0x0053A7A4`, foot `0x0053A7B3..0x0053A7DC`; research §10 | | TS-6 | Weather particle emission suppressed — all weathery DayGroups map to Overcast (correct fog/cloud tone, no precipitation); retail's camera-attached weather subsystem not yet located in the decomp | `src/AcDream.Core/World/WeatherState.cs:200` | Decomp research verified the sky loop never reads `DefaultPesObjectId`; an earlier name-based rain spawn regressed (rained where retail didn't, 2026-04-23) — inventing a name→rain path is forbidden until the real subsystem is found | Rainy/snowy/stormy days never show retail's precipitation effects (permanent missing visuals until the subsystem is found and ported) | FUN_00508010 / FUN_0051bed0→FUN_0051bfb0 (negative findings) | diff --git a/src/AcDream.App/UI/Layout/DatWidgetFactory.cs b/src/AcDream.App/UI/Layout/DatWidgetFactory.cs index bcc3172c..25ad06be 100644 --- a/src/AcDream.App/UI/Layout/DatWidgetFactory.cs +++ b/src/AcDream.App/UI/Layout/DatWidgetFactory.cs @@ -93,21 +93,30 @@ public static class DatWidgetFactory or IndicatorBarController.VitaeClassId => BuildButton( info, resolve, elementFont, fontResolve, stringResolve), // gmUIElement_*Indicator custom button classes - // UIElement_ListBox (Type 5) with an authored row-template list (dat - // property 0x64) — the Options panel's Character/Chat/Config ListBoxes - // (docs/research/2026-08-10-options-panel-structure.md §1.5). Gated on - // info.TemplateList.Count > 0 so an ORDINARY Type-5 ListBox that authors - // no template array (none currently reach this factory — vendor's category - // dropdown is drawn procedurally by UiMenu.Scrollable, not imported as a - // live Type-5 widget) keeps falling to the generic UiDatElement fallback - // unchanged (OP2 acceptance: no behavior change to any existing widget). - 5 when info.TemplateList.Count > 0 => new UiTemplateListBox( - info.TemplateList, info.ScrollbarElementId), + // UIElement_ListBox (Type 5). OP2 rework (docs/research/2026-08-11-op2- + // review-blast.md MUST-FIX 2): every pre-existing Type-5 element that + // reaches this factory already authors a non-empty row-template array + // (dat property 0x64) — the original "none currently reach this factory" + // premise was false. UiTemplateListBox now derives from UiDatElement and + // stays DORMANT (no viewport, no behavior change) until a controller calls + // AddItemFromTemplateList, so mapping every Type-5 element unconditionally + // is safe: an element with an empty TemplateList behaves EXACTLY like the + // pre-OP2 UiDatElement fallback (media drawn, ClickThrough=true, state + // propagation) because nothing ever activates it. + 5 => new UiTemplateListBox(info, resolve, info.TemplateList, info.ScrollbarElementId), 6 => new UiMenu(), // UIElement_Menu (reg :120163) 7 => BuildMeter(info, resolve, elementFont), // UIElement_Meter - // UIElement_TabControl (Type 8) — the Options panel's tab strip (dat - // property 0x2E; same research doc §1.3/§10.1). - 8 => new UiTabControl(info.TabTable), + // UIElement_Panel (Type 8) — retail's tab-strip host (dat property 0x2E; + // research doc §1.3/§10.1). OP2 rework (docs/research/2026-08-11-op2- + // review-mechanism.md MUST-FIX 5): Type 8 is UIElement_Panel, NOT a class + // called "UIElement_TabControl" (that name does not exist in the named- + // retail PDB). UiTabPanel derives from UiDatElement and stays DORMANT (see + // its class doc) until a controller calls ActivateTabBehavior(), so mapping + // every Type-8 element unconditionally is safe for the same reason as the + // Type-5 arm above — including the vendor backdrop 0x1000008D, which has NO + // tab table and now keeps its authored DirectState fill via the UiDatElement + // base instead of losing it to a bare UiElement with no OnDraw. + 8 => new UiTabPanel(info, resolve, info.TabTable), 9 => BuildResizeGrip(info, resolve), // UIElement_Resizebar (reg 0x0046B920) 0xD => new UiViewport(), // UIElement_Viewport — 3-D mini-scene blit leaf 11 => BuildScrollbar(info, resolve), // UIElement_Scrollbar (reg :124137) @@ -142,11 +151,15 @@ public static class DatWidgetFactory // ChatWindowController wires the channel menu. 0x10000038u => new UiMenu(), // UIOption_CheckboxBitfield64 (Type 0x10000044): the Chat tab's per-window - // text-filter block. Its authored template (0x10000520) carries no children - // or media at all — every row is added at runtime via AddChild(lowMask, - // highMask, label, tooltip), matching retail's own - // gmChatOptionsUI::AddCheckboxBitfield64Option call pattern (research doc §5.2). - 0x10000044u => BuildCheckboxBitfield64(resolve, elementFont), + // text-filter block. OP2 rework (docs/research/2026-08-11-op2-review- + // mechanism.md MUST-FIX 4): the authored template (0x10000520) DOES author + // content — its own row-template list (dat property 0x64 -> {0x2100002B, + // 0x10000521}) — and retail CreateChildren @0x00485DF0 builds every row + // through AddItemFromTemplateList(this, 0, nullptr), matching retail's own + // gmChatOptionsUI::AddCheckboxBitfield64Option call pattern (research doc + // §5.2). AddChild(lowMask, highMask, label, tooltip) resolves that SAME + // template per row instead of synthesizing a fake ElementInfo. + 0x10000044u => new UiCheckboxBitfield64(info.TemplateList), _ => new UiDatElement(info, resolve), // generic fallback (incl. Type 3 chrome/containers) }; @@ -800,21 +813,6 @@ public static class DatWidgetFactory return button; } - /// - /// Builds a blank seeded with the sprite - /// resolver and dat font a page controller's later - /// - /// calls need — the template authors no rows, so there is nothing else to read - /// from ElementInfo at import time. - /// - private static UiCheckboxBitfield64 BuildCheckboxBitfield64( - Func resolve, UiDatFont? elementFont) - => new() - { - SpriteResolve = resolve, - LabelFont = elementFont, - }; - private static ElementInfo? FindStatefulFaceChild(ElementInfo info) => FindStatefulFaceChildren(info).FirstOrDefault(); diff --git a/src/AcDream.App/UI/Layout/ElementReader.cs b/src/AcDream.App/UI/Layout/ElementReader.cs index bf369825..de4171a2 100644 --- a/src/AcDream.App/UI/Layout/ElementReader.cs +++ b/src/AcDream.App/UI/Layout/ElementReader.cs @@ -517,6 +517,13 @@ public static class ElementReader if (item.Kind != UiPropertyKind.Struct) continue; uint buttonId = ReadStructMemberId(item.StructValue, 0x30u); uint pageId = ReadStructMemberId(item.StructValue, 0x31u); + // Retail UIElement_Panel::SetupTabPageHash @0x0046C2E0 skips an entry whose + // InqProperty(0x30) (@0x0046C3E5) or InqProperty(0x31) (@0x0046C3FC) is + // missing — a partial entry never enters m_TabPageHash. ReadStructMemberId + // returns 0 for a missing/uncoercible member, and 0 is never a valid dat + // element id, so treat it the same way: skip, don't admit a zero-id entry + // that could still participate in SwitchTo and hide a page. + if (buttonId == 0u || pageId == 0u) continue; bool isDefault = item.StructValue.TryGetValue(0x32u, out var flag) && flag.Kind == UiPropertyKind.Bool && flag.BoolValue; diff --git a/src/AcDream.App/UI/Layout/LayoutImporter.cs b/src/AcDream.App/UI/Layout/LayoutImporter.cs index 52f799ba..e65f2318 100644 --- a/src/AcDream.App/UI/Layout/LayoutImporter.cs +++ b/src/AcDream.App/UI/Layout/LayoutImporter.cs @@ -169,7 +169,7 @@ public static class LayoutImporter stateful.TrySetRetailState(stateful.ActiveRetailStateId); // See IUiChildrenAttachedListener: a widget that must resolve OTHER children by - // dat element id (e.g. UiTabControl's tab table) can only do so once its subtree + // dat element id (e.g. UiTabPanel's tab table) can only do so once its subtree // is actually attached, which just happened above. if (w is IUiChildrenAttachedListener childrenAttached) childrenAttached.OnChildrenAttached(); diff --git a/src/AcDream.App/UI/Layout/UiDatElement.cs b/src/AcDream.App/UI/Layout/UiDatElement.cs index f3181eb2..584a4d5e 100644 --- a/src/AcDream.App/UI/Layout/UiDatElement.cs +++ b/src/AcDream.App/UI/Layout/UiDatElement.cs @@ -27,8 +27,20 @@ namespace AcDream.App.UI.Layout; /// sets /// GL_REPEAT on both S and T, so vertical tiling is always active. /// +/// +/// +/// OP2 rework (2026-08-11): unsealed so behavioral Type-8/Type-5 widgets +/// (, ) can subclass it and stay +/// DORMANT by default — every element of those two dat Types that reaches +/// gets this exact media-draw / ClickThrough / +/// behavior unless a controller explicitly opts a specific +/// instance into its behavioral mechanism. This is what makes the unconditional Type-8/ +/// Type-5 factory mappings safe for the pre-existing shipped panels the OP2 REJECT +/// findings named (`docs/research/2026-08-11-op2-review-blast.md`, +/// `docs/research/2026-08-11-op2-review-mechanism.md`). +/// /// -public sealed class UiDatElement : UiElement, IUiDatStateful +public class UiDatElement : UiElement, IUiDatStateful { // DrawModeType enum values from DatReaderWriter.Enums. // See docs/research/2026-06-15-layoutdesc-format.md §6. @@ -39,13 +51,16 @@ public sealed class UiDatElement : UiElement, IUiDatStateful private const int DrawAlphablend = 3; #pragma warning restore IDE0051 - private readonly ElementInfo _info; + /// Protected so subclasses (e.g. , + /// ) can read authored state/media for their own + /// mechanism-specific fields without a second copy of the merged snapshot. + protected readonly ElementInfo Info; private readonly Func _resolve; /// The dat element id from . Exposed so controllers /// can identify which logical element a UiDatElement represents when walking subtrees /// (e.g. footer state groups that appear once per tab page but share the same dat id). - public uint ElementId => _info.Id; + public uint ElementId => Info.Id; /// Which state name to render. "" = the unnamed DirectState. /// Falls back to DirectState if the named state is absent. @@ -57,7 +72,7 @@ public sealed class UiDatElement : UiElement, IUiDatStateful { if (string.IsNullOrEmpty(ActiveState)) return UiStateInfo.DirectStateId; - foreach (var (id, state) in _info.States) + foreach (var (id, state) in Info.States) if (string.Equals(state.Name, ActiveState, StringComparison.Ordinal)) return id; return UiButtonStateMachine.TryStateId(ActiveState, out uint standard) @@ -73,12 +88,12 @@ public sealed class UiDatElement : UiElement, IUiDatStateful UiStateInfo? selectedState = null; if (stateId == UiStateInfo.DirectStateId) { - if (!_info.States.TryGetValue(stateId, out selectedState) - && !_info.StateMedia.ContainsKey("")) + if (!Info.States.TryGetValue(stateId, out selectedState) + && !Info.StateMedia.ContainsKey("")) return false; ActiveState = ""; } - else if (_info.States.TryGetValue(stateId, out selectedState)) + else if (Info.States.TryGetValue(stateId, out selectedState)) { ActiveState = selectedState.Name; } @@ -87,7 +102,7 @@ public sealed class UiDatElement : UiElement, IUiDatStateful string stateName = UiButtonStateMachine.StateName(stateId); if (string.IsNullOrEmpty(stateName)) stateName = RetailUiStateIds.StateName(stateId); - if (string.IsNullOrEmpty(stateName) || !_info.StateMedia.ContainsKey(stateName)) + if (string.IsNullOrEmpty(stateName) || !Info.StateMedia.ContainsKey(stateName)) return false; ActiveState = stateName; } @@ -106,7 +121,7 @@ public sealed class UiDatElement : UiElement, IUiDatStateful /// Returns (0,0,0) when the texture is not yet uploaded. public UiDatElement(ElementInfo info, Func resolve) { - _info = info; + Info = info; _resolve = resolve; ClickThrough = true; // generic decoration; behavioral widgets opt back in @@ -133,8 +148,8 @@ public sealed class UiDatElement : UiElement, IUiDatStateful /// // exposed for unit testing public (uint File, int DrawMode) ActiveMedia() - => _info.StateMedia.TryGetValue(ActiveState, out var m) ? m - : _info.StateMedia.TryGetValue("", out var d) ? d + => Info.StateMedia.TryGetValue(ActiveState, out var m) ? m + : Info.StateMedia.TryGetValue("", out var d) ? d : (0u, 0); /// Optional click handler. Set by a controller for interactive dat diff --git a/src/AcDream.App/UI/UiCheckboxBitfield64.cs b/src/AcDream.App/UI/UiCheckboxBitfield64.cs index 9309759e..fcb28faf 100644 --- a/src/AcDream.App/UI/UiCheckboxBitfield64.cs +++ b/src/AcDream.App/UI/UiCheckboxBitfield64.cs @@ -7,37 +7,50 @@ namespace AcDream.App.UI; /// /// Retail UIOption_CheckboxBitfield64 (Type 0x10000044) — a block of -/// individually toggleable mask checkboxes, built ENTIRELY at runtime. Its authored -/// dat template (0x10000520 in 0x2100002B, 272x100) carries NO children -/// and NO media — verified against the regenerated options_2100002B.json -/// fixture. Retail C++ populates it by calling AddChild(lowMask, highMask, -/// labelId, tooltipId) once per checkbox (research doc §5.2: -/// gmChatOptionsUI::InitOptions / AddCheckboxBitfield64Option), N times -/// per window, then CreateChildren(). This widget ports that shape: -/// appends one row, reusing -/// (with retail's toggle-behavior property 0x0B seeded) -/// for the clickable/labelled row itself rather than drawing anything new — -/// consistent with the campaign contract's "compose existing primitives" directive. +/// individually toggleable mask checkboxes (the Chat tab's per-window text-filter +/// block). +/// +/// +/// OP2 rework (2026-08-11 — `docs/research/2026-08-11-op2-review-mechanism.md` +/// MUST-FIX 3/4): the OP2 slice's class doc claimed the authored template +/// (0x10000520 in 0x2100002B) "carries NO children and NO media" and +/// synthesized a fake per-row (Type=1, invented +/// RowHeight=14) for every added row. Both claims were refuted by the committed +/// fixture: 0x10000520 authors its OWN row-template list (dat property +/// 0x64{0x2100002B, 0x10000521}), and retail +/// UIOption_CheckboxBitfield64::CreateChildren @0x00485DF0 builds every row by +/// calling UIElement_ListBox::AddItemFromTemplateList(this, 0, nullptr) in a +/// loop — i.e. UIOption_CheckboxBitfield64 genuinely IS a +/// UIElement_ListBox: it calls the ListBox mechanism on itself +/// (AddItemFromTemplateList/GetItem/CalculatePaperSize/ +/// ListenToElementMessage). The template 0x10000521 is a 272×20 container +/// holding checkbox 0x10000219 (260×14, Type 1) which itself holds the 13×13 +/// five-state LED child 0x10000328 — every row's art/font/insets now come from +/// that authored subtree via , the SAME seam +/// exposes (this class does not wrap a +/// instance because retail's block does not itself +/// scroll — the ENCLOSING Chat page ListBox scrolls the whole option list, and this +/// block is one composite row within it — but it reuses the identical +/// resolve-and-stack row-instantiation shape). +/// /// -/// -/// Click semantics: retail's exact bit-toggle algorithm (what -/// UIOption_CheckboxBitfield64's own click handler does to m_current, as -/// opposed to UIOption_CheckboxBitfield64::Apply's documented WRITE side in -/// research doc §3.7) is not in the decompiled excerpt this campaign pulled. This -/// widget applies the conservative, retail-consistent reading — a row is "on" when -/// ALL its mask bits are set, and a click SETS (turns on) or CLEARS (turns off) -/// exactly those bits — and raises so a page controller can -/// verify/replace the exact algorithm against the real decomp before wiring the -/// authoritative PlayerModule::SetChatWindowOption transaction (Campaign OP -/// slice OP5). -/// public sealed class UiCheckboxBitfield64 : UiPanel { + /// + /// Retail element id of the checkbox inside the authored row template + /// (0x10000521's sole child). Hardcoded in retail's own C++ + /// (GetChildRecursive(row, 0x10000219) inside CreateChildren), not + /// something generically derivable from the template — ports that literal constant. + /// + public const uint TemplateCheckboxElementId = 0x10000219u; + /// One added checkbox row. public readonly record struct Row( - ulong LowMask, ulong HighMask, string Label, string? Tooltip, UiButton Toggle); + ulong LowMask, ulong HighMask, string Label, string? Tooltip, + UiElement RowRoot, UiButton Toggle); private readonly List _rows = new(); + private float _contentHeight; /// The rows added so far, in call order. public IReadOnlyList Rows => _rows; @@ -50,23 +63,33 @@ public sealed class UiCheckboxBitfield64 : UiPanel private ulong _defaultLow, _defaultHigh; - /// Row height in px for the stacked layout. Rows lay out top-to-bottom in - /// call order, matching retail's authored call sequence. No authored row height - /// exists for this block (it is unauthored in the dat) — a page controller may - /// override before the first call. - public float RowHeight { get; set; } = 14f; + /// + /// The authored row template (dat property 0x64 on THIS element). Retail authors + /// exactly one entry, {0x2100002B, 0x10000521}, and reuses it for every row + /// (AddItemFromTemplateList(this, 0, nullptr) called once per row). + /// + public IReadOnlyList Templates { get; } - /// Dat font for row labels. + /// Same seam as — a page + /// controller wires this with real DAT access (Campaign OP slice OP5+). Left null + /// by DatWidgetFactory itself. + public Func? TemplateResolver { get; set; } + + /// Dat font for row labels — kept for callers that built rows before this + /// rework shipped; unused now that labels are set directly on the resolved + /// template's own checkbox widget, whose font already comes from the authored + /// template. public UiDatFont? LabelFont { get; set; } - // SpriteResolve (forwarded to each row's UiButton) is inherited from UiPanel — + // SpriteResolve (forwarded to each row's built subtree) is inherited from UiPanel — // same resolver shape, no need to redeclare it. /// Fired with the new (low, high) value after any row toggles. public Action? ValueChanged { get; set; } - public UiCheckboxBitfield64() + public UiCheckboxBitfield64(IReadOnlyList templates) { + Templates = templates; BackgroundColor = Vector4.Zero; BorderColor = Vector4.Zero; } @@ -100,43 +123,89 @@ public sealed class UiCheckboxBitfield64 : UiPanel /// /// Retail UIOption_CheckboxBitfield64::AddChild(lowMask, highMask, labelId, - /// tooltipId): appends one toggleable row for the given mask, stacked below - /// the previous row. / are - /// already-resolved strings — string-table lookup is the caller's job (matches + /// tooltipId) → CreateChildren's per-row loop: instantiates the authored + /// row template ([0], the only entry) through + /// , locates its embedded checkbox + /// () via retail's own + /// GetChildRecursive, and stamps this row's label/click/checked-state onto + /// it. / are already-resolved + /// strings — string-table lookup is the caller's job (matches /// 's own already-resolved-Label convention). /// - public UiButton AddChild(ulong lowMask, ulong highMask, string label, string? tooltip = null) + /// The row's checkbox widget, or null (loud-logged) when no template is + /// authored, no resolver is wired, the resolver produced nothing, or the resolved + /// subtree does not contain — any of which + /// means retail's authored shape is missing or the resolver seam is unwired, not + /// something this widget should silently paper over. + public UiButton? AddChild(ulong lowMask, ulong highMask, string label, string? tooltip = null) { - var rowInfo = new ElementInfo { Type = 1u, Width = Width, Height = RowHeight }; - var direct = new UiStateInfo { Id = UiStateInfo.DirectStateId, Name = "" }; - direct.Properties.Values[0x0Bu] = new UiPropertyValue + if (Templates.Count == 0) { - Kind = UiPropertyKind.Bool, - BoolValue = true, // ToggleBehavior (property 0x0B) — UiButton reads this in its ctor. - }; - rowInfo.States[UiStateInfo.DirectStateId] = direct; - - var toggle = new UiButton(rowInfo, SpriteResolve ?? (_ => (0u, 0, 0))) + Console.WriteLine("[D.2b] UiCheckboxBitfield64.AddChild: no authored row template (property 0x64 empty) — cannot build a row."); + return null; + } + Func? resolver = TemplateResolver; + if (resolver is null) { - Label = label, - LabelFont = LabelFont, - LabelAlign = UiButton.LabelAlignment.Left, - Left = 0f, - Top = _rows.Count * RowHeight, - Width = Width, - Height = RowHeight, - Selected = IsSet(lowMask, highMask), - }; - toggle.OnClick = () => ToggleRow(lowMask, highMask, toggle); + Console.WriteLine("[D.2b] UiCheckboxBitfield64.AddChild: TemplateResolver not wired yet — cannot build a row."); + return null; + } - _rows.Add(new Row(lowMask, highMask, label, tooltip, toggle)); - AddChild(toggle); - return toggle; + UiTemplateListEntry entry = Templates[0]; // retail always reuses template index 0 + UiElement? row = resolver(entry.TemplateLayoutId, entry.TemplateElementId); + if (row is null) + { + Console.WriteLine($"[D.2b] UiCheckboxBitfield64.AddChild: resolver returned null for template 0x{entry.TemplateLayoutId:X8}/0x{entry.TemplateElementId:X8}."); + return null; + } + + UiButton? checkbox = FindCheckboxRecursive(row); + if (checkbox is null) + { + Console.WriteLine($"[D.2b] UiCheckboxBitfield64.AddChild: resolved row template did not contain checkbox 0x{TemplateCheckboxElementId:X8} — row will not respond to clicks."); + return null; + } + + checkbox.Label = label; + checkbox.Selected = IsSet(lowMask, highMask); + checkbox.OnClick = () => ToggleRow(lowMask, highMask, checkbox); + + row.Left = 0f; + row.Top = _contentHeight; + _contentHeight += row.Height; + base.AddChild(row); + + _rows.Add(new Row(lowMask, highMask, label, tooltip, row, checkbox)); + return checkbox; } - private bool IsSet(ulong lowMask, ulong highMask) - => (CurrentLow & lowMask) == lowMask && (CurrentHigh & highMask) == highMask; + private static UiButton? FindCheckboxRecursive(UiElement node) + { + if (node.DatElementId == TemplateCheckboxElementId && node is UiButton button) + return button; + foreach (UiElement child in node.Children) + { + UiButton? found = FindCheckboxRecursive(child); + if (found is not null) return found; + } + return null; + } + /// + /// Retail UIOption_CheckboxBitfield64::Refresh @0x004859C0: a row is checked + /// when ANY bit of its mask is set in the current value — NOT when every bit is + /// set. lowHit = current.low & mask.low; highHit = current.high & + /// mask.high; checked = (lowHit | highHit) != 0. + /// + private bool IsSet(ulong lowMask, ulong highMask) + => (CurrentLow & lowMask) != 0 || (CurrentHigh & highMask) != 0; + + /// + /// Retail UIOption_CheckboxBitfield64::ListenToElementMessage @0x00485AE0: + /// BitUtils::SetBitsOnOrOff(&m_current, mask, onOff) — decomp-confirmed + /// OR-in-on / AND-NOT-off (TS-72's toggle-math half was always correct; only the + /// checked-state predicate above needed fixing). + /// private void ToggleRow(ulong lowMask, ulong highMask, UiButton toggle) { bool turnOn = !IsSet(lowMask, highMask); diff --git a/src/AcDream.App/UI/UiTabControl.cs b/src/AcDream.App/UI/UiTabControl.cs deleted file mode 100644 index 777256ce..00000000 --- a/src/AcDream.App/UI/UiTabControl.cs +++ /dev/null @@ -1,112 +0,0 @@ -using System.Collections.Generic; -using AcDream.App.UI.Layout; - -namespace AcDream.App.UI; - -/// -/// Retail UIElement_TabControl (Type 8) — the Options panel's tab strip + -/// mounted-page switcher. Owns the authored tab table (dat property 0x2E, -/// see ): activating a tab shows exactly ONE page-slot -/// child and hides the rest, and updates the corresponding tab button's Open/Closed -/// visual state. -/// -/// -/// The tab buttons and page-slot children are ORDINARY imported dat elements — this -/// widget does not set , so -/// LayoutImporter builds them the normal recursive way (buttons build as -/// with Open/Closed states — retail's tab buttons are Type 0xC -/// text elements, not Type-1 buttons; page slots build as generic containers whose -/// OWN children are the mounted page's content via BaseLayoutId/ -/// BaseElement inheritance). This widget only wires cross-references the tab -/// table names by id, which it can only resolve once that subtree exists — see -/// . -/// -/// -/// -/// Retail anchors: docs/research/2026-08-10-options-panel-structure.md §1.3 -/// (the tab table property 0x2E struct shape), §10.1 (structural inventory — -/// tab buttons `0x1000020D..0x1000020F`/`0x1000050B`, page slots -/// `0x10000211..0x10000213`/`0x1000050C`, Gameplay the authored default). Verified -/// byte-for-byte against the regenerated options_2100002B.json fixture: four -/// entries, Gameplay (`0x1000020D`/`0x10000212`) is the sole IsDefault row. -/// -/// -/// -/// Retail's OnVisibilityChanged auto-apply/auto-revert semantics (research doc -/// §3.6 — hiding a page reverts uncommitted edits, showing one applies + commits) are -/// OUT of this widget's scope: they belong to the OptionPage/ -/// PlayerOptionPage model a page controller owns (Campaign OP slice OP3+). -/// This widget only switches which page slot is . -/// -/// -public sealed class UiTabControl : UiElement, IUiChildrenAttachedListener -{ - private readonly IReadOnlyList _tabs; - - public UiTabControl(IReadOnlyList tabs) - { - _tabs = tabs; - } - - /// The authored tab table this control was built from, in authored array order. - public IReadOnlyList Tabs => _tabs; - - /// Dat element id of the currently active page slot. 0 before the first mount. - public uint ActivePageElementId { get; private set; } - - /// - /// Retail wires the tab table's cross-references (button ↔ page ↔ default) once - /// the imported subtree exists — see 's - /// doc for why this can't happen during DatWidgetFactory.Create. Every tab - /// button's click is bound to switch to its paired page, then the authored - /// default tab (the entry with true, or - /// the first entry if the dat authored none) is activated. - /// - public void OnChildrenAttached() - { - UiTabTableEntry? defaultEntry = null; - foreach (UiTabTableEntry entry in _tabs) - { - UiElement? button = FindDirectChild(entry.ButtonElementId); - uint pageId = entry.PageElementId; - RetailTabBinding.SetClick(button, () => SwitchTo(pageId)); - - if (entry.IsDefault) - defaultEntry = entry; - } - - defaultEntry ??= _tabs.Count > 0 ? _tabs[0] : null; - if (defaultEntry is { } def) - SwitchTo(def.PageElementId); - } - - /// - /// Activates the page slot named : shows it, hides - /// every other authored page slot, and sets each tab button's Open/Closed state to - /// match (). No-op if the page is already active. - /// - public void SwitchTo(uint pageElementId) - { - if (ActivePageElementId == pageElementId) return; - - foreach (UiTabTableEntry entry in _tabs) - { - bool active = entry.PageElementId == pageElementId; - UiElement? page = FindDirectChild(entry.PageElementId); - if (page is not null) page.Visible = active; - - UiElement? button = FindDirectChild(entry.ButtonElementId); - RetailTabBinding.SetOpen(button, active); - } - - ActivePageElementId = pageElementId; - } - - private UiElement? FindDirectChild(uint datElementId) - { - foreach (UiElement child in Children) - if (child.DatElementId == datElementId) - return child; - return null; - } -} diff --git a/src/AcDream.App/UI/UiTabPanel.cs b/src/AcDream.App/UI/UiTabPanel.cs new file mode 100644 index 00000000..e894227f --- /dev/null +++ b/src/AcDream.App/UI/UiTabPanel.cs @@ -0,0 +1,220 @@ +using System; +using System.Collections.Generic; +using AcDream.App.UI.Layout; + +namespace AcDream.App.UI; + +/// +/// Retail UIElement_Panel (dat class Type 8) — the tab-strip host used by +/// the Options panel and, in principle, any panel that authors a tab table (dat property +/// 0x2E, see ). +/// +/// +/// Naming correction (OP2 rework): the OP2 slice named this class/mechanism +/// UIElement_TabControl. No such class exists in the named-retail PDB — Type 8 is +/// registered as UIElement_Panel::Create (UIElement::RegisterElementClass(8, +/// UIElement_Panel::Create) @0x0046C6B7). Correct anchors: +/// UIElement_Panel::SetupTabPageHash @0x0046C2E0 (tab-table read + default +/// selection), ::Update @0x0046BD00 (the one-visible-page switch + tab +/// Open/Closed state write), ::OpenTab @0x0046BE20 / ::InqTabFromPage +/// @0x0046BEB0 (the click entry points), ::ListenToElementMessage @0x0046BF90. +/// +/// +/// +/// Shape correction (OP2 rework, `docs/research/2026-08-11-op2-review-blast.md` + +/// `docs/research/2026-08-11-op2-review-mechanism.md`): OP2 mapped every dat Type-8 +/// element unconditionally to this class and wired its tab table AT IMPORT TIME +/// (OnChildrenAttached). Four already-shipped panels (vendor `0x100000B8`, +/// character sheet root `0x10000227`, spellbook root `0x100002A8`, combat +/// `0x100000A2`) are Type 8 and authored a tab table, so they silently gained a SECOND, +/// import-time tab-switcher racing their own existing C# controllers +/// (CharacterStatController/SpellbookWindowController/ +/// VendorUiController already own this exact switching for their panels; combat +/// has no re-binder at all — the table would have taken over outright). A fifth Type-8 +/// element, vendor's media-bearing backdrop `0x1000008D`, has NO tab table at all and +/// simply lost its authored fill because the old bare- base drew +/// nothing and defaulted to false. +/// +/// +/// +/// This class now derives from and is DORMANT by default: +/// importing a Type-8 element only gets authored-media drawing, retail's +/// ClickThrough = true generic-decoration default, and +/// state propagation — identical to the pre-OP2 fallback for every element that doesn't +/// opt in. The tab-table switching mechanism (button ↔ page ↔ default, Open/Closed state) +/// only activates when a controller explicitly calls — +/// today, nobody does (OP2 ships the mechanism only; the Options panel controller, +/// Campaign OP slice OP3+, is the first caller). This is filed as an intentional +/// deviation from retail's unconditional per-instance activation — see the register row +/// added in this same commit. +/// +/// +/// +/// The tab buttons and page-slot children are ORDINARY imported dat elements — this +/// widget does not set , so +/// LayoutImporter builds them the normal recursive way (buttons build as +/// with Open/Closed states — retail's tab buttons are Type 0xC +/// text elements, not Type-1 buttons; page slots build as generic containers whose +/// OWN children are the mounted page's content via BaseLayoutId/ +/// BaseElement inheritance). +/// +/// +/// +/// Retail anchors: docs/research/2026-08-10-options-panel-structure.md §1.3 +/// (the tab table property 0x2E struct shape), §10.1 (structural inventory — +/// tab buttons `0x1000020D..0x1000020F`/`0x1000050B`, page slots +/// `0x10000211..0x10000213`/`0x1000050C`, Gameplay the authored default). Verified +/// byte-for-byte against the regenerated options_2100002B.json fixture: four +/// entries, Gameplay (`0x1000020D`/`0x10000212`) is the sole IsDefault row. +/// +/// +/// +/// Retail's OnVisibilityChanged auto-apply/auto-revert semantics (research doc +/// §3.6 — hiding a page reverts uncommitted edits, showing one applies + commits) are +/// OUT of this widget's scope: they belong to the OptionPage/ +/// PlayerOptionPage model a page controller owns (Campaign OP slice OP3+). +/// This widget only switches which page slot is . +/// +/// +public sealed class UiTabPanel : UiDatElement, IUiChildrenAttachedListener +{ + /// Retail element id this class was ported for: Type 8 = 8. + public const uint RetailTypeId = 8u; + + private readonly IReadOnlyList _tabs; + private readonly List _unresolved = new(); + private bool _behaviorActive; + + public UiTabPanel( + ElementInfo info, + Func resolve, + IReadOnlyList tabs) + : base(info, resolve) + { + _tabs = tabs; + } + + /// The authored tab table this control was built from, in authored array order. + public IReadOnlyList Tabs => _tabs; + + /// Dat element id of the currently active page slot. 0 before the first + /// switch (either 's default-entry switch, or a + /// direct call). + public uint ActivePageElementId { get; private set; } + + /// + /// True once has run. Dormant instances (every + /// pre-existing Type-8 host today) never flip this. + /// + public bool BehaviorActive => _behaviorActive; + + /// + /// Tab-table entries whose button, page, or both did not resolve against this + /// element's built subtree the last time ran — a + /// silently-empty tab table and one that entirely fails to resolve are otherwise + /// indistinguishable (round-2 review SHOULD-FIX 3), so this is loud instead of a + /// mere no-op. Each miss is also logged via . + /// + public IReadOnlyList UnresolvedEntries => _unresolved; + + /// + /// Dormant by design (see class doc) — importing a Type-8 element performs no + /// wiring. is the explicit, controller-driven + /// opt-in that does the equivalent work once the subtree exists AND a controller + /// actually wants this element to own tab switching. + /// + void IUiChildrenAttachedListener.OnChildrenAttached() + { + } + + /// + /// Opts this instance into retail's tab-table switching mechanism: binds every tab + /// button's click to switch to its paired page (UIElement_Panel::OpenTab), + /// then activates the authored default entry — the entry with + /// true. Idempotent; a second call is a + /// no-op. Retail resolves both the button and the page via + /// GetChildRecursive (a descendant search, not direct-children-only), which + /// this ports so cross-layout mounts (a tab page's content built from a different + /// LayoutDesc, e.g. Configure Keyboard) still resolve. + /// + public void ActivateTabBehavior() + { + if (_behaviorActive) return; + _behaviorActive = true; + + _unresolved.Clear(); + UiTabTableEntry? defaultEntry = null; + foreach (UiTabTableEntry entry in _tabs) + { + UiElement? button = FindDescendant(this, entry.ButtonElementId); + UiElement? page = FindDescendant(this, entry.PageElementId); + if (button is null || page is null) + { + _unresolved.Add(entry); + Console.WriteLine( + $"[D.2b] UiTabPanel 0x{Info.Id:X8}: tab entry button=0x{entry.ButtonElementId:X8} " + + $"page=0x{entry.PageElementId:X8} did not resolve against the built subtree " + + $"(button {(button is null ? "MISSING" : "ok")}, page {(page is null ? "MISSING" : "ok")})."); + } + + uint pageId = entry.PageElementId; + RetailTabBinding.SetClick(button, () => SwitchTo(pageId)); + + if (entry.IsDefault) + defaultEntry = entry; + } + + // Retail UIElement_Panel::Update(0, 0) — the guard when neither + // m_OpenPageToken nor m_OpenTabToken has been seeded — performs no switch at + // all. No entry authoring 0x32==true means retail never activates a page here; + // do not fabricate a fallback to the first entry (the OP2 REJECT-review + // SHOULD-FIX 2 finding). + if (defaultEntry is { } def) + SwitchTo(def.PageElementId); + } + + /// + /// Activates the page slot named : shows it, hides + /// every other authored page slot, and sets each tab button's Open/Closed state to + /// match (). No-op if the page is already + /// active. Safe to call directly (e.g. from a test or a controller that wants + /// programmatic navigation) without going through + /// first, though the authored click bindings only exist after activation. + /// + public void SwitchTo(uint pageElementId) + { + if (ActivePageElementId == pageElementId) return; + + foreach (UiTabTableEntry entry in _tabs) + { + bool active = entry.PageElementId == pageElementId; + UiElement? page = FindDescendant(this, entry.PageElementId); + if (page is not null) page.Visible = active; + + UiElement? button = FindDescendant(this, entry.ButtonElementId); + RetailTabBinding.SetOpen(button, active); + } + + ActivePageElementId = pageElementId; + } + + /// + /// Retail GetChildRecursive: a depth-first search of every descendant (not + /// just direct children) for a widget carrying . + /// Direct-children-only search (the pre-rework FindDirectChild) missed + /// cross-layout mounts where the tab table's ids name elements nested below an + /// intermediate incorporated container. + /// + private static UiElement? FindDescendant(UiElement node, uint datElementId) + { + foreach (UiElement child in node.Children) + { + if (child.DatElementId == datElementId) + return child; + UiElement? found = FindDescendant(child, datElementId); + if (found is not null) + return found; + } + return null; + } +} diff --git a/src/AcDream.App/UI/UiTemplateListBox.cs b/src/AcDream.App/UI/UiTemplateListBox.cs index d957de71..56dc351f 100644 --- a/src/AcDream.App/UI/UiTemplateListBox.cs +++ b/src/AcDream.App/UI/UiTemplateListBox.cs @@ -1,32 +1,68 @@ using System; using System.Collections.Generic; -using System.Numerics; using AcDream.App.UI.Layout; namespace AcDream.App.UI; /// -/// Retail UIElement_ListBox (Type 5) with an authored row-template list (dat -/// property 0x64). Port of AddItemFromTemplateList(index): instantiates -/// row 's template — a +/// Retail UIElement_ListBox (dat class Type 5) with an authored row-template +/// list (dat property 0x64). Port of AddItemFromTemplateList(index): +/// instantiates row 's template — a /// naming a cross-layout {LayoutDesc DID, element id} pair, per /// docs/research/2026-08-10-options-panel-structure.md §1.5 — through the SAME -/// import machinery every other retained window uses, and appends it as one -/// scrollable row. +/// import machinery every other retained window uses, and appends it as one row. /// /// -/// Wraps a as its single child rather than -/// duplicating its scroll logic — is sealed, and this -/// is the SAME "controller-built row list" viewport pattern -/// CharacterStatController.RebuildActiveList already uses for the skill list -/// (a child sized to its host, rows added through it). +/// OP2 rework (2026-08-11): derives from and stays +/// DORMANT until a controller adds its first row. The OP2 REJECT-review blast-radius +/// finding (`docs/research/2026-08-11-op2-review-blast.md`) established that EVERY +/// pre-existing Type-5 element reaching already authors a +/// non-empty 0x64 template array (character `0x1000023D`/`0x10000532`, effects +/// positive/negative `0x10000123`, examine `0x10000149`/`0x10000335`/`0x1000032D`, +/// mini-game `0x10000174`, spellbook `0x10000464`) — so the original Type-5 factory +/// guard's premise ("none currently reach this factory") was false, and the old +/// unconditional viewport injection in the constructor (base.AddChild(_viewport)) +/// gave every one of those ten elements a spurious hit-testable +/// child plus lost their authored media (the old class +/// derived from bare , zeroed its background/border, and drew +/// nothing dat-authored). None of the ten pre-existing elements author real dat +/// children of their own (verified against every regenerated fixture — their row +/// content comes ONLY from the cross-layout 0x64 array, never from a literal +/// child in their own LayoutDesc subtree), so making this class dormant-by-default is a +/// pure behavior restoration: an un-activated instance renders and hit-tests EXACTLY +/// like the pre-OP2 fallback. The Options panel's three +/// ListBoxes (Character/Config/Chat, Campaign OP slice OP4+) are the only elements a +/// controller will ever call against. +/// +/// +/// +/// is true: retail ListBox rows come ONLY from +/// AddItemFromTemplateList, never from static dat children of the ListBox element +/// itself, so this widget owns its own child construction the same way +/// Meter/Menu/Button/Scrollbar/Text/Field do — LayoutImporter does not attempt to +/// recurse into any literal dat children this element might (incorrectly) author. +/// +/// +/// +/// Row content is stacked inside a lazily-created — +/// created on the FIRST successful call, not in the +/// constructor. This is what makes dormancy free: an instance that never gets a row +/// (every pre-existing panel today) never allocates or attaches the viewport, so there is +/// no spurious hit-testable child competing with whatever the controller separately adds +/// via (the same "resolve → not a UiItemList → build one +/// and attach it directly to the host" pattern EffectsUiController/ +/// AppraisalUiController/SpellbookWindowController/ +/// CharacterStatController already use for these exact ten elements). +/// is sealed, hence composition rather than inheritance — +/// the SAME "controller-built row list" viewport pattern +/// CharacterStatController.RebuildActiveList already uses for the skill list. /// The wrapped panel is anchored to fill this box, so scrolling, per-row visibility -/// clipping, and the pixel scroll model () all come from the -/// SAME code CH6/the character sheet already exercise — no new scroll model. Rows -/// stack in call order: each new row's is set to the -/// viewport's current before it is -/// added, exactly retail's own ListBox layout (each row is authored at its own -/// template-local Y=0; the box stacks instances). +/// clipping, and the pixel scroll model () all come from the SAME +/// code CH6/the character sheet already exercise — no new scroll model. Rows stack in +/// call order: each new row's is set to the viewport's +/// current before it is added, exactly +/// retail's own ListBox layout (each row is authored at its own template-local Y=0; the +/// box stacks instances). /// /// /// @@ -42,12 +78,15 @@ namespace AcDream.App.UI; /// IDatReaderWriter. /// /// -public sealed class UiTemplateListBox : UiPanel +public sealed class UiTemplateListBox : UiDatElement { - private readonly UiScrollablePanel _viewport = new() - { - Anchors = AnchorEdges.Left | AnchorEdges.Top | AnchorEdges.Right | AnchorEdges.Bottom, - }; + /// Retail element id this class was ported for: Type 5 = 5. + public const uint RetailTypeId = 5u; + + private const int DefaultLineHeight = 16; + + private UiScrollablePanel? _viewport; + private int _pendingLineHeight = DefaultLineHeight; /// The authored row-template list (dat property 0x64), in authored array order. public IReadOnlyList Templates { get; } @@ -63,19 +102,25 @@ public sealed class UiTemplateListBox : UiPanel public uint ScrollbarElementId { get; } /// The wrapped viewport's pixel scroll model — link a page controller's - /// resolved scrollbar () to this. - public UiScrollable Scroll => _viewport.Scroll; + /// resolved scrollbar () to this. Creates the + /// viewport on first access (see class doc — dormancy). + public UiScrollable Scroll => Viewport.Scroll; /// Total stacked row height in px — the same value 's - /// content extent uses. - public int ContentHeight => _viewport.ContentHeight; + /// content extent uses. 0 while dormant (no viewport created yet). + public int ContentHeight => _viewport?.ContentHeight ?? 0; /// Row height for the scroll model's line-scroll quantum. Set once template - /// heights are known; defaults to the viewport's own default (16px). + /// heights are known; defaults to the viewport's own default (16px). Safe to set + /// before the viewport exists — the value is applied once it's created. public int LineHeight { - get => _viewport.LineHeight; - set => _viewport.LineHeight = value; + get => _viewport?.LineHeight ?? _pendingLineHeight; + set + { + _pendingLineHeight = value; + if (_viewport is not null) _viewport.LineHeight = value; + } } /// @@ -85,21 +130,44 @@ public sealed class UiTemplateListBox : UiPanel /// public Func? TemplateResolver { get; set; } - public UiTemplateListBox(IReadOnlyList templates, uint scrollbarElementId) + public UiTemplateListBox( + ElementInfo info, + Func resolve, + IReadOnlyList templates, + uint scrollbarElementId) + : base(info, resolve) { Templates = templates; ScrollbarElementId = scrollbarElementId; - BackgroundColor = Vector4.Zero; - BorderColor = Vector4.Zero; - base.AddChild(_viewport); + } + + /// Retail ListBox rows never come from static dat children — see class doc. + public override bool ConsumesDatChildren => true; + + private UiScrollablePanel Viewport + { + get + { + if (_viewport is null) + { + _viewport = new UiScrollablePanel + { + Anchors = AnchorEdges.Left | AnchorEdges.Top | AnchorEdges.Right | AnchorEdges.Bottom, + LineHeight = _pendingLineHeight, + }; + base.AddChild(_viewport); + } + return _viewport; + } } /// /// Retail UIElement_ListBox::AddItemFromTemplateList(m_pOptionBox, index, /// nullptr): resolves Templates[index] through /// and appends the built subtree as the next row, stacked below the previous one. - /// Returns the built row widget, or null when is out of - /// range, no resolver is wired, or the resolver produced nothing. + /// Lazily creates the internal viewport on the FIRST successful call (see class doc — + /// dormancy). Returns the built row widget, or null when is + /// out of range, no resolver is wired, or the resolver produced nothing. /// public UiElement? AddItemFromTemplateList(int index) { @@ -111,9 +179,10 @@ public sealed class UiTemplateListBox : UiPanel UiElement? row = resolver(entry.TemplateLayoutId, entry.TemplateElementId); if (row is null) return null; + UiScrollablePanel viewport = Viewport; row.Left = 0f; - row.Top = _viewport.ContentHeight; - _viewport.AddChild(row); + row.Top = viewport.ContentHeight; + viewport.AddChild(row); return row; } } diff --git a/tests/AcDream.App.Tests/UI/Layout/EffectsUiControllerTests.cs b/tests/AcDream.App.Tests/UI/Layout/EffectsUiControllerTests.cs index 86c0122f..23fefebf 100644 --- a/tests/AcDream.App.Tests/UI/Layout/EffectsUiControllerTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/EffectsUiControllerTests.cs @@ -133,7 +133,15 @@ public sealed class EffectsUiControllerTests Templates(), "SELECT A SPELL")!; spellbook.OnEnchantmentAdded(new ActiveEnchantmentRecord( 42u, 1u, 60f, 1u, Bucket: 1u, SpellCategory: 42u)); - UiElement listHost = Assert.IsType( + // OP2 rework (docs/research/2026-08-11-op2-review-blast.md MUST-FIX 2): the + // effects list host authors a row-template array (dat property 0x64), so + // against real DAT data it now builds as UiTemplateListBox — the dormant + // UiDatElement subclass — not the bare UiDatElement fallback this assertion + // used to pin. Behavior is unchanged (media/ClickThrough/state propagation + // all still come from the shared UiDatElement base); only the concrete class + // changed to one that ALSO knows how to build authored-template rows, which + // this controller never calls (it manages the child UiItemList itself). + UiElement listHost = Assert.IsType( layout.FindElement(EffectsUiController.ListId)); UiItemList list = Assert.IsType(Assert.Single(listHost.Children)); UiTemplateListSlot row = Assert.IsType(list.GetItem(0)); diff --git a/tests/AcDream.App.Tests/UI/Layout/ElementReaderTests.cs b/tests/AcDream.App.Tests/UI/Layout/ElementReaderTests.cs index c4c1323f..8cc2c57b 100644 --- a/tests/AcDream.App.Tests/UI/Layout/ElementReaderTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/ElementReaderTests.cs @@ -350,4 +350,132 @@ public class ElementReaderTests var merged = ElementReader.Merge(base_, derived); Assert.Null(merged.OutlineColor); } + + // ── OP2 rework: reader-level tests for 0x2E/0x64/0x72 ─────────────────────── + // docs/research/2026-08-11-op2-review-mechanism.md §1.4 SHOULD-FIX: the OP2 + // conformance tests only ever read the SERIALIZED ElementInfo.TabTable/ + // TemplateList/ScrollbarElementId fields off a committed fixture, so a future + // regression in ReadTabTable/ReadTemplateList/the 0x72 reader would not fail a + // single test. These drive ApplyCanonicalLegacyProjection directly from a + // synthetic raw property bag — the readers themselves, not a fixture snapshot. + + private static UiPropertyValue EnumProp(uint value) => new() + { + Kind = UiPropertyKind.Enum, + UnsignedValue = value, + }; + + private static UiPropertyValue BoolProp(bool value) => new() + { + Kind = UiPropertyKind.Bool, + BoolValue = value, + }; + + private static ElementInfo WithDirectProperty(uint propertyId, UiPropertyValue value) + { + var info = new ElementInfo(); + var direct = new UiStateInfo { Id = UiStateInfo.DirectStateId, Name = "" }; + direct.Properties.Values[propertyId] = value; + info.States[UiStateInfo.DirectStateId] = direct; + return info; + } + + [Fact] + public void ReadTabTable_DecodesButtonPageDefaultInAuthoredOrder() + { + var entry0 = new UiPropertyValue { Kind = UiPropertyKind.Struct }; + entry0.StructValue[0x30u] = EnumProp(0x1000AAAAu); + entry0.StructValue[0x31u] = EnumProp(0x1000BBBBu); + entry0.StructValue[0x32u] = BoolProp(true); + + var entry1 = new UiPropertyValue { Kind = UiPropertyKind.Struct }; + entry1.StructValue[0x30u] = EnumProp(0x1000CCCCu); + entry1.StructValue[0x31u] = EnumProp(0x1000DDDDu); + // no 0x32 -> IsDefault false + + var array = new UiPropertyValue { Kind = UiPropertyKind.Array }; + array.ArrayValue.Add(entry0); + array.ArrayValue.Add(entry1); + + ElementInfo info = WithDirectProperty(0x2Eu, array); + ElementReader.ApplyCanonicalLegacyProjection(info); + + Assert.Equal(2, info.TabTable.Count); + Assert.Equal(new UiTabTableEntry(0x1000AAAAu, 0x1000BBBBu, true), info.TabTable[0]); + Assert.Equal(new UiTabTableEntry(0x1000CCCCu, 0x1000DDDDu, false), info.TabTable[1]); + } + + /// + /// Retail UIElement_Panel::SetupTabPageHash @0x0046C2E0 skips a struct + /// entry whose InqProperty(0x30) or InqProperty(0x31) is missing — + /// a partial entry never enters m_TabPageHash (OP2 rework, + /// docs/research/2026-08-11-op2-review-mechanism.md §1.1). + /// + [Fact] + public void ReadTabTable_SkipsEntriesMissingButtonOrPage() + { + var missingPage = new UiPropertyValue { Kind = UiPropertyKind.Struct }; + missingPage.StructValue[0x30u] = EnumProp(0x1000EEEEu); + // no 0x31 + + var missingButton = new UiPropertyValue { Kind = UiPropertyKind.Struct }; + missingButton.StructValue[0x31u] = EnumProp(0x1000FFFFu); + // no 0x30 + + var wellFormed = new UiPropertyValue { Kind = UiPropertyKind.Struct }; + wellFormed.StructValue[0x30u] = EnumProp(0x10001111u); + wellFormed.StructValue[0x31u] = EnumProp(0x10002222u); + + var array = new UiPropertyValue { Kind = UiPropertyKind.Array }; + array.ArrayValue.Add(missingPage); + array.ArrayValue.Add(missingButton); + array.ArrayValue.Add(wellFormed); + + ElementInfo info = WithDirectProperty(0x2Eu, array); + ElementReader.ApplyCanonicalLegacyProjection(info); + + UiTabTableEntry only = Assert.Single(info.TabTable); + Assert.Equal(new UiTabTableEntry(0x10001111u, 0x10002222u, false), only); + } + + [Fact] + public void ReadTemplateList_DecodesLayoutDidAndElementIdInAuthoredOrder() + { + var entry0 = new UiPropertyValue { Kind = UiPropertyKind.Struct }; + entry0.StructValue[0x63u] = EnumProp(0x21000099u); + entry0.StructValue[0x62u] = EnumProp(0x10003333u); + + var entry1 = new UiPropertyValue { Kind = UiPropertyKind.Struct }; + entry1.StructValue[0x63u] = EnumProp(0x21000099u); + entry1.StructValue[0x62u] = EnumProp(0x10004444u); + + var array = new UiPropertyValue { Kind = UiPropertyKind.Array }; + array.ArrayValue.Add(entry0); + array.ArrayValue.Add(entry1); + + ElementInfo info = WithDirectProperty(0x64u, array); + ElementReader.ApplyCanonicalLegacyProjection(info); + + Assert.Equal(2, info.TemplateList.Count); + Assert.Equal(new UiTemplateListEntry(0x21000099u, 0x10003333u), info.TemplateList[0]); + Assert.Equal(new UiTemplateListEntry(0x21000099u, 0x10004444u), info.TemplateList[1]); + } + + [Fact] + public void ReadReferencedElementId_ScrollbarLinkage_DecodesEnumProperty() + { + ElementInfo info = WithDirectProperty(0x72u, EnumProp(0x10005555u)); + ElementReader.ApplyCanonicalLegacyProjection(info); + + Assert.Equal(0x10005555u, info.ScrollbarElementId); + } + + [Fact] + public void ReadReferencedElementId_ScrollbarLinkage_AbsentPropertyStaysZero() + { + var info = new ElementInfo(); + ElementReader.ApplyCanonicalLegacyProjection(info); + + Assert.Equal(0u, info.ScrollbarElementId); + } } diff --git a/tests/AcDream.App.Tests/UI/Layout/OP2ReworkBlastRadiusConformanceTests.cs b/tests/AcDream.App.Tests/UI/Layout/OP2ReworkBlastRadiusConformanceTests.cs new file mode 100644 index 00000000..c8f45d05 --- /dev/null +++ b/tests/AcDream.App.Tests/UI/Layout/OP2ReworkBlastRadiusConformanceTests.cs @@ -0,0 +1,157 @@ +using AcDream.App.UI; +using AcDream.App.UI.Layout; + +namespace AcDream.App.Tests.UI.Layout; + +/// +/// Built-widget behavior pins for the pre-existing, already-shipped Type-8/Type-5 +/// elements the OP2 double-REJECT findings named +/// (`docs/research/2026-08-11-op2-review-blast.md` §1.1/§1.2, +/// `docs/research/2026-08-11-op2-review-mechanism.md` §2.1/§2.2). These fixtures are +/// NOT Options-panel data — they are the character sheet, spellbook, vendor, and +/// combat panels' own committed fixtures — and every assertion here is a regression +/// guard for the OP2 rework's dormancy model: a Type-8/Type-5 element that reaches +/// without a controller opting it into the new +/// mechanism must render and hit-test EXACTLY like the pre-OP2 +/// fallback. +/// +/// +/// Before this rework, these five Type-8 elements and every pre-existing Type-5 +/// element silently re-classed to a bare--derived +/// UiTabControl/UiTemplateListBox in production while every fixture- +/// driven test still exercised the OLD stale-fixture shape (empty TabTable/ +/// TemplateList) — a structural false negative the blast-radius review named as the +/// root enabler. These tests build through the REAL (regenerated) fixtures, so a +/// future regression that reintroduces eager wiring, media loss, or a ClickThrough +/// flip WILL fail here. +/// +/// +public class OP2ReworkBlastRadiusConformanceTests +{ + // ── Type 8 — vendor's media-bearing, tab-table-less backdrop ──────────── + + /// + /// Vendor `0x1000008D` (800x20) authors a DirectState fill and NO tab table — + /// `RetailUiRuntime.cs` documents it by name as the vendor panel's own backdrop + /// fill. Blast-review MUST-FIX 1(a): the OP2-as-landed unconditional-but-bare + /// mapping stopped this drawing entirely. + /// + [Fact] + public void Vendor_BackdropElement_DrawsItsAuthoredMedia_AndStaysClickThrough() + { + var layout = FixtureLoader.LoadVendor(); + var backdrop = Assert.IsType(layout.FindElement(0x1000008Du)); + + Assert.Empty(backdrop.Tabs); // no authored 0x2E on this element + Assert.False(backdrop.BehaviorActive); // nobody activates it — dormant + Assert.True(backdrop.ClickThrough); // UiDatElement's generic-decoration default + (uint file, int _) = backdrop.ActiveMedia(); + Assert.NotEqual(0u, file); // the authored fill still draws + } + + /// + /// Vendor `0x100000B8` (the ACTUAL tab host, distinct from the `0x1000008D` + /// backdrop above) authors a 3-entry tab table that `VendorUiController` + /// already switches end-to-end. Same claim as the character/spellbook roots + /// below: dormant on import, controller owns activation. + /// + [Fact] + public void Vendor_TabHost_StaysDormant_ControllerOwnsSwitching() + { + var layout = FixtureLoader.LoadVendor(); + var host = Assert.IsType(layout.FindElement(0x100000B8u)); + + Assert.Equal(3, host.Tabs.Count); // the authored table IS present… + Assert.False(host.BehaviorActive); // …but nobody has activated it + Assert.Equal(0u, host.ActivePageElementId); + Assert.True(host.ClickThrough); + } + + // ── Type 8 — panel roots with their own controller-owned switching ────── + + /// + /// Character sheet root `0x10000227` authors a 3-entry tab table but + /// `CharacterStatController` already owns tab switching for this panel + /// end-to-end. Blast-review MUST-FIX 1(b)/(c): the OP2-as-landed mapping made + /// this element claim every unclaimed click in its bounds + /// (ClickThrough false→ silently) and stop propagating + /// state into its children. + /// + [Fact] + public void CharacterRoot_StaysClickThrough_AndPropagatesState_WithoutActivation() + { + var layout = FixtureLoader.LoadCharacter(); + var root = Assert.IsType(layout.Root); + Assert.Equal(0x10000227u, root.DatElementId); + + Assert.NotEmpty(root.Tabs); // the authored table IS present… + Assert.False(root.BehaviorActive); // …but nobody has activated it + Assert.Equal(0u, root.ActivePageElementId); + Assert.True(root.ClickThrough); + Assert.IsAssignableFrom(root); + } + + /// Spellbook root `0x100002A8` — same shape/claim as the character + /// sheet, owned end-to-end by SpellbookWindowController. + [Fact] + public void SpellbookRoot_StaysClickThrough_AndPropagatesState_WithoutActivation() + { + var layout = FixtureLoader.LoadSpellbook(); + var root = Assert.IsType(layout.Root); + Assert.Equal(0x100002A8u, root.DatElementId); + + Assert.NotEmpty(root.Tabs); + Assert.False(root.BehaviorActive); + Assert.Equal(0u, root.ActivePageElementId); + Assert.True(root.ClickThrough); + Assert.IsAssignableFrom(root); + } + + // ── Type 8 — combat, which has NO controller re-binder at all ─────────── + + /// + /// Combat `0x100000A2` authors an 8-entry tab table and — unlike character/ + /// spellbook/vendor — has NO controller that re-binds it after import. Blast- + /// review MUST-FIX 1(d): the OP2-as-landed OnChildrenAttached ran at + /// import time regardless, so this element would have taken over its 8 stance + /// pages outright with nothing to override it. Every child must remain exactly + /// as imported: all Visible (retail's plain default), no page hidden, no click + /// bound. + /// + [Fact] + public void Combat_TabHost_PerformsNoImportTimeTakeover() + { + var layout = FixtureLoader.LoadCombat(); + var host = Assert.IsType(layout.FindElement(0x100000A2u)); + + Assert.Equal(8, host.Tabs.Count); // the authored table IS present… + Assert.False(host.BehaviorActive); // …but nothing ever activates it + Assert.Equal(0u, host.ActivePageElementId); + Assert.Equal(16, host.Children.Count); // no children lost/consumed + Assert.All(host.Children, child => Assert.True(child.Visible)); + } + + // ── Type 5 — a representative pre-existing ListBox with an authored template ── + + /// + /// Effects list `0x10000123` (`EffectsUiController.ListId`) authors a 1-row + /// template array. Blast-review MUST-FIX 2: the OP2-as-landed unconditional + /// mapping lost the authored media, defaulted ClickThrough=false, and + /// unconditionally injected a hit-testable viewport as child 0 — before + /// EffectsUiController.Bind ever runs. This pins the dormant baseline + /// directly; EffectsUiControllerTests pins the controller's own + /// subsequent behavior. + /// + [Fact] + public void EffectsList_StaysDormant_ClickThrough_NoInjectedViewport() + { + var layout = FixtureLoader.LoadPositiveEffects(); + var host = Assert.IsType( + layout.FindElement(EffectsUiController.ListId)); + + Assert.NotEmpty(host.Templates); // the authored 0x64 array IS present… + Assert.Empty(host.Children); // …but no viewport was injected + Assert.Equal(0, host.ContentHeight); + Assert.True(host.ClickThrough); + } +} diff --git a/tests/AcDream.App.Tests/UI/Layout/OptionsPanelLayoutConformanceTests.cs b/tests/AcDream.App.Tests/UI/Layout/OptionsPanelLayoutConformanceTests.cs index 1ded6ce5..0471afbd 100644 --- a/tests/AcDream.App.Tests/UI/Layout/OptionsPanelLayoutConformanceTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/OptionsPanelLayoutConformanceTests.cs @@ -8,11 +8,14 @@ namespace AcDream.App.Tests.UI.Layout; /// Dat-free conformance tests for the committed options_2100002B.json / /// options_gameplay_2100002A.json / options_character_21000028.json / /// options_chat_2100005C.json / options_config_21000029.json golden -/// fixtures (Campaign OP slice OP2). Pins the tab table (dat property 0x2E), -/// the three ListBox row-template lists (dat property 0x64), scrollbar -/// linkage (dat property 0x72), the new Type-8/5/0x10000036..0x44 -/// widget mappings, and 's switch behavior. Retail anchors: -/// docs/research/2026-08-10-options-panel-structure.md §1.3, §1.5, §10.1. +/// fixtures (Campaign OP slice OP2, reworked 2026-08-11). Pins the tab table (dat +/// property 0x2E), the three ListBox row-template lists (dat property +/// 0x64), scrollbar linkage (dat property 0x72), the new Type-8/5/ +/// 0x10000036..0x44 widget mappings, and 's switch +/// behavior. Retail anchors: docs/research/2026-08-10-options-panel-structure.md +/// §1.3, §1.5, §10.1. See also OP2ReworkBlastRadiusConformanceTests.cs (built- +/// widget pins for the pre-existing shipped panels the rework's dormancy model +/// protects) and the reader-level tests appended to ElementReaderTests.cs. /// public class OptionsPanelLayoutConformanceTests { @@ -51,13 +54,18 @@ public class OptionsPanelLayoutConformanceTests } [Fact] - public void OptionsPanelFixture_TabControl_BuildsAsUiTabControl_WithSameTabTable() + public void OptionsPanelFixture_TabControl_BuildsAsUiTabPanel_WithSameTabTable() { var layout = FixtureLoader.LoadOptionsPanel(); - var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); + var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); Assert.Equal(4, tabControl.Tabs.Count); Assert.True(tabControl.Tabs[0].IsDefault); Assert.Equal(0x10000212u, tabControl.Tabs[0].PageElementId); + + // OP2 rework: dormant until a controller opts in — importing alone must not + // have switched anything (docs/research/2026-08-11-op2-review-blast.md). + Assert.False(tabControl.BehaviorActive); + Assert.Equal(0u, tabControl.ActivePageElementId); } // ── Row-template lists (property 0x64) ────────────────────────────────── @@ -156,6 +164,12 @@ public class OptionsPanelLayoutConformanceTests var listBox = Assert.IsType(layout.FindElement(0x100001FAu)); Assert.Equal(3, listBox.Templates.Count); Assert.Equal(0x100001FBu, listBox.ScrollbarElementId); + + // OP2 rework: dormant until a controller adds its first row — importing alone + // must not have injected a viewport child (docs/research/2026-08-11-op2-review- + // blast.md SHOULD-FIX 1). + Assert.Empty(listBox.Children); + Assert.Equal(0, listBox.ContentHeight); } [Fact] @@ -224,10 +238,15 @@ public class OptionsPanelLayoutConformanceTests public void OptionsPanelFixture_Bitfield64Template_BuildsAsEmptyUiCheckboxBitfield64() { // UIOption_CheckboxBitfield64 (0x10000044), template element 0x10000520: - // authors zero children/media in the dat — every row is added at runtime. + // authors zero children/media of its OWN, but DOES author its own row-template + // list (dat property 0x64 -> {0x2100002B, 0x10000521}) — every row is built + // from THAT template at runtime (OP2 rework, + // docs/research/2026-08-11-op2-review-mechanism.md MUST-FIX 4). var layout = FixtureLoader.LoadOptionsPanel(); var bitfield = Assert.IsType(layout.FindElement(0x10000520u)); Assert.Empty(bitfield.Rows); + UiTemplateListEntry template = Assert.Single(bitfield.Templates); + Assert.Equal(new UiTemplateListEntry(0x2100002Bu, 0x10000521u), template); } [Fact] @@ -244,19 +263,48 @@ public class OptionsPanelLayoutConformanceTests Assert.NotNull(slider); } - // ── UiCheckboxBitfield64 behavior (structural, click semantics flagged) ── + // ── UiCheckboxBitfield64 behavior (rows built from the authored template) ── + + /// Builds a hermetic whose + /// constructs a minimal subtree + /// containing ONLY the checkbox retail's own CreateChildren looks for + /// () — proves the + /// widget resolves and stamps that exact id rather than assuming row shape. + private static UiCheckboxBitfield64 NewBitfieldWithStubTemplate() + { + var templates = new[] { new UiTemplateListEntry(0x2100002Bu, 0x10000521u) }; + return new UiCheckboxBitfield64(templates) + { + Width = 272f, + TemplateResolver = (layoutId, elementId) => + { + Assert.Equal(0x2100002Bu, layoutId); + Assert.Equal(0x10000521u, elementId); + var checkboxInfo = new ElementInfo + { + Id = UiCheckboxBitfield64.TemplateCheckboxElementId, + Type = 1u, + Width = 260f, + Height = 14f, + }; + return LayoutImporter.Build(checkboxInfo, NoTex, null).Root; + }, + }; + } [Fact] - public void UiCheckboxBitfield64_AddChild_TracksMaskAndTogglesOnClick() + public void UiCheckboxBitfield64_AddChild_ResolvesRowFromAuthoredTemplate() { - var bitfield = new UiCheckboxBitfield64 { Width = 272f }; + var bitfield = NewBitfieldWithStubTemplate(); bitfield.SetDefaultValue(0x00000000_FBFFFFFFul, 0ul); // retail main-window default (research §5.2) // "Error" (mask 0x04000000) is the ONE bit clear in the FBFFFFFF default — // research §5.2's own cross-check ("Society bit opt-in") confirms every // other row's bits are already set in that default, so Error is the only // mask that starts observably OFF and round-trips cleanly through OR/AND-NOT. - var row = bitfield.AddChild(0x00000000_04000000ul, 0ul, "Error"); + UiButton? row = bitfield.AddChild(0x00000000_04000000ul, 0ul, "Error"); + Assert.NotNull(row); + Assert.Equal(UiCheckboxBitfield64.TemplateCheckboxElementId, row!.DatElementId); Assert.False(row.Selected); ulong? changedLow = null; @@ -271,6 +319,46 @@ public class OptionsPanelLayoutConformanceTests Assert.Equal(0x00000000_FBFFFFFFul, changedLow); // back to the seeded default } + /// + /// MUST-FIX 3a (`docs/research/2026-08-11-op2-review-mechanism.md`): retail + /// UIOption_CheckboxBitfield64::Refresh @0x004859C0 checks a row when ANY + /// mask bit is set, not when EVERY mask bit is set. A single-bit mask cannot + /// distinguish the two predicates — this seeds a value with only ONE of a + /// TWO-bit mask's bits set (Combat's real mask 0x00600040, research §5.2) + /// and asserts the row still reads checked. + /// + [Fact] + public void UiCheckboxBitfield64_MultiBitMask_IsSet_UsesAnyBitNotAllBits() + { + var bitfield = NewBitfieldWithStubTemplate(); + const ulong combatMask = 0x00000000_00600040ul; // two bits + const ulong onlyOneBitOfMask = 0x00000000_00000040ul; // partially overlapping + bitfield.SetDefaultValue(onlyOneBitOfMask, 0ul); + + UiButton? row = bitfield.AddChild(combatMask, 0ul, "Combat"); + Assert.NotNull(row); + Assert.True(row!.Selected); // any-bit predicate: 0x40 & 0x600040 != 0 + + // Clicking now must turn the row OFF (it currently reads checked) and clear + // BOTH mask bits, matching retail's confirmed SetBitsOnOrOff AND-NOT. + ulong? changedLow = null; + bitfield.ValueChanged += (low, _) => changedLow = low; + row.OnClick!.Invoke(); + Assert.False(row.Selected); + Assert.Equal(0ul, changedLow); + } + + [Fact] + public void UiCheckboxBitfield64_AddChild_NoTemplateResolverWired_ReturnsNullAndLeavesNoRow() + { + var templates = new[] { new UiTemplateListEntry(0x2100002Bu, 0x10000521u) }; + var bitfield = new UiCheckboxBitfield64(templates) { Width = 272f }; + // No TemplateResolver wired — matches DatWidgetFactory's own construction + // (OP2 ships the mechanism; a page controller supplies the resolver). + Assert.Null(bitfield.AddChild(0x1ul, 0ul, "Unwired")); + Assert.Empty(bitfield.Rows); + } + // ── The template mechanism, exercised end-to-end ──────────────────────── /// @@ -293,7 +381,9 @@ public class OptionsPanelLayoutConformanceTests } ElementInfo characterListBoxInfo = Find(FixtureLoader.LoadOptionsCharacterInfos(), 0x100001FAu)!; - var listBox = new UiTemplateListBox(characterListBoxInfo.TemplateList, characterListBoxInfo.ScrollbarElementId) + var listBox = new UiTemplateListBox( + characterListBoxInfo, NoTex, + characterListBoxInfo.TemplateList, characterListBoxInfo.ScrollbarElementId) { TemplateResolver = Resolve, }; @@ -333,32 +423,46 @@ public class OptionsPanelLayoutConformanceTests { ElementInfo characterListBoxInfo = Find(FixtureLoader.LoadOptionsCharacterInfos(), 0x100001FAu)!; var listBox = new UiTemplateListBox( + characterListBoxInfo, NoTex, characterListBoxInfo.TemplateList, characterListBoxInfo.ScrollbarElementId); // No TemplateResolver wired — matches DatWidgetFactory's own construction // (OP2 ships the mechanism; a page controller supplies the resolver). Assert.Null(listBox.AddItemFromTemplateList(0)); + // OP2 rework: a failed/never-attempted add must not have allocated a viewport. + Assert.Empty(listBox.Children); } [Fact] public void TemplateListBox_AddItemFromTemplateList_OutOfRangeIndex_ReturnsNull() { - var listBox = new UiTemplateListBox(new[] { new UiTemplateListEntry(1u, 2u) }, 0u) + var listBox = new UiTemplateListBox( + new ElementInfo(), NoTex, new[] { new UiTemplateListEntry(1u, 2u) }, 0u) { TemplateResolver = (_, _) => new UiDatElement(new ElementInfo(), NoTex), }; Assert.Null(listBox.AddItemFromTemplateList(-1)); Assert.Null(listBox.AddItemFromTemplateList(1)); Assert.NotNull(listBox.AddItemFromTemplateList(0)); + // The one successful add DID lazily create the viewport. + Assert.Single(listBox.Children); } - // ── UiTabControl behavior ──────────────────────────────────────────────── + // ── UiTabPanel behavior ────────────────────────────────────────────────── + // OP2 rework: these all explicitly call ActivateTabBehavior() first — a Type-8 + // element is dormant on import (docs/research/2026-08-11-op2-review-blast.md / + // -mechanism.md), so a controller (here, the test itself) must opt in before any + // switching happens. This mirrors how OP3+'s OptionsPanelController will drive it. [Fact] - public void UiTabControl_DefaultMount_ShowsOnlyTheGameplayPage() + public void UiTabPanel_ActivateTabBehavior_ShowsOnlyTheGameplayDefaultPage() { var layout = FixtureLoader.LoadOptionsPanel(); - var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); + var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); + tabControl.ActivateTabBehavior(); + + Assert.True(tabControl.BehaviorActive); + Assert.Empty(tabControl.UnresolvedEntries); Assert.Equal(0x10000212u, tabControl.ActivePageElementId); // Gameplay page slot UiElement gameplayPage = layout.FindElement(0x10000212u)!; @@ -373,10 +477,24 @@ public class OptionsPanelLayoutConformanceTests } [Fact] - public void UiTabControl_SwitchTo_ShowsExactlyOnePage() + public void UiTabPanel_ActivateTabBehavior_IsIdempotent() { var layout = FixtureLoader.LoadOptionsPanel(); - var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); + var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); + + tabControl.ActivateTabBehavior(); + tabControl.SwitchTo(0x10000211u); // Character page slot — deliberately not the default + tabControl.ActivateTabBehavior(); // second call must be a no-op, not re-switch to default + + Assert.Equal(0x10000211u, tabControl.ActivePageElementId); + } + + [Fact] + public void UiTabPanel_SwitchTo_ShowsExactlyOnePage() + { + var layout = FixtureLoader.LoadOptionsPanel(); + var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); + tabControl.ActivateTabBehavior(); tabControl.SwitchTo(0x1000050Cu); // Chat page slot @@ -394,10 +512,11 @@ public class OptionsPanelLayoutConformanceTests } [Fact] - public void UiTabControl_SwitchTo_UpdatesTabButtonOpenClosedState() + public void UiTabPanel_SwitchTo_UpdatesTabButtonOpenClosedState() { var layout = FixtureLoader.LoadOptionsPanel(); - var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); + var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); + tabControl.ActivateTabBehavior(); var gameplayButton = Assert.IsType(layout.FindElement(0x1000020Du)); var characterButton = Assert.IsType(layout.FindElement(0x1000020Eu)); @@ -412,10 +531,11 @@ public class OptionsPanelLayoutConformanceTests } [Fact] - public void UiTabControl_ClickingTabButton_SwitchesActivePage() + public void UiTabPanel_ClickingTabButton_SwitchesActivePage() { var layout = FixtureLoader.LoadOptionsPanel(); - var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); + var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); + tabControl.ActivateTabBehavior(); // clicks only bind once behavior is activated var characterButton = layout.FindElement(0x1000020Eu)!; characterButton.OnEvent(new UiEvent(0, characterButton, UiEventType.Click)); @@ -426,10 +546,28 @@ public class OptionsPanelLayoutConformanceTests } [Fact] - public void UiTabControl_SwitchToSameActivePage_IsANoOp() + public void UiTabPanel_ClickingTabButton_BeforeActivation_DoesNothing() + { + // OP2 rework's central regression guard: a dormant instance's tab buttons are + // NOT click-bound yet, so a click before ActivateTabBehavior() must be inert — + // this is exactly the property that keeps the four pre-existing shipped Type-8 + // hosts (which never call ActivateTabBehavior) safe. + var layout = FixtureLoader.LoadOptionsPanel(); + var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); + var characterButton = layout.FindElement(0x1000020Eu)!; + + characterButton.OnEvent(new UiEvent(0, characterButton, UiEventType.Click)); + + Assert.Equal(0u, tabControl.ActivePageElementId); + Assert.False(tabControl.BehaviorActive); + } + + [Fact] + public void UiTabPanel_SwitchToSameActivePage_IsANoOp() { var layout = FixtureLoader.LoadOptionsPanel(); - var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); + var tabControl = Assert.IsType(layout.FindElement(0x10000208u)); + tabControl.ActivateTabBehavior(); uint before = tabControl.ActivePageElementId; tabControl.SwitchTo(before); diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/character_2100002E.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/character_2100002E.json index 32a70ae5..c283b741 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/character_2100002E.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/character_2100002E.json @@ -472,6 +472,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -950,6 +952,8 @@ "Z": 0.49803922, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Closed", @@ -1016,6 +1020,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687251, @@ -1028,7 +1034,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435689, @@ -1092,6 +1101,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687253, @@ -1104,7 +1115,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435989, @@ -1168,6 +1182,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687255, @@ -1180,9 +1196,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436009, @@ -1658,6 +1680,8 @@ "Z": 0.49803922, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Closed", @@ -1724,6 +1748,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687251, @@ -1736,7 +1762,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435689, @@ -1800,6 +1829,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687253, @@ -1812,7 +1843,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435989, @@ -1876,6 +1910,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687255, @@ -1888,9 +1924,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436010, @@ -1984,6 +2026,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100668307, @@ -1996,7 +2040,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436792, @@ -2472,6 +2519,8 @@ "Z": 0.49803922, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Closed", @@ -2538,6 +2587,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687251, @@ -2550,7 +2601,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435689, @@ -2614,6 +2668,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687253, @@ -2626,7 +2682,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435989, @@ -2690,6 +2749,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687255, @@ -2702,9 +2763,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436793, @@ -2802,6 +2869,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -3185,10 +3254,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436783, @@ -3709,10 +3783,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436784, @@ -3751,6 +3830,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100668448, @@ -3759,7 +3840,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436785, @@ -4135,10 +4219,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436786, @@ -4383,6 +4472,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -4391,7 +4482,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [ + { + "TemplateLayoutId": 553648222, + "TemplateElementId": 268436790 + } + ], + "ScrollbarElementId": 268436787 }, { "Id": 268436787, @@ -4605,6 +4704,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -4711,6 +4812,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -4791,6 +4894,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -4807,7 +4912,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -4885,6 +4993,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -4901,7 +5011,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -4979,6 +5092,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -4995,9 +5110,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -5192,6 +5313,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -5208,7 +5331,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -5403,6 +5529,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -5419,9 +5547,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436788, @@ -5460,6 +5594,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100668448, @@ -5468,7 +5604,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436789, @@ -5992,6 +6131,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Ghosted", @@ -6086,6 +6227,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682902, @@ -6106,7 +6249,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436175, @@ -6198,6 +6344,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682905, @@ -6218,7 +6366,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436176, @@ -6310,6 +6461,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682908, @@ -6330,11 +6483,20 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436011, @@ -6462,6 +6624,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "StatManagement_Footer_Default", @@ -6536,6 +6700,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -6702,6 +6868,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "StatManagement_Footer_Default", @@ -7051,10 +7219,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436037, @@ -7401,10 +7574,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436046, @@ -7838,10 +8016,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436034, @@ -8188,10 +8371,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436035, @@ -8538,10 +8726,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436038, @@ -8605,6 +8798,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682934, @@ -8617,7 +8812,10 @@ }, "StateCursors": {}, "DefaultStateName": "Ghosted", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436039, @@ -8744,6 +8942,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667814, @@ -8790,6 +8990,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667274, @@ -8798,9 +9000,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436971, @@ -8864,6 +9072,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100692267, @@ -8876,9 +9086,15 @@ }, "StateCursors": {}, "DefaultStateName": "Ghosted", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436016, @@ -8914,6 +9130,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -9263,10 +9481,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436934, @@ -9613,10 +9836,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436017, @@ -10108,10 +10336,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436018, @@ -10632,10 +10865,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436019, @@ -10982,10 +11220,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436020, @@ -11361,10 +11604,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436021, @@ -11711,10 +11959,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436022, @@ -11841,6 +12094,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667814, @@ -11887,6 +12142,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667813, @@ -11895,7 +12152,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436023, @@ -12271,10 +12531,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436024, @@ -12621,12 +12886,20 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436025, @@ -12665,6 +12938,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682936, @@ -12673,7 +12948,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436026, @@ -13049,10 +13327,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436027, @@ -13428,12 +13711,20 @@ "Z": 0.49803922, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436028, @@ -13472,6 +13763,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682951, @@ -13480,7 +13773,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436029, @@ -14045,10 +14341,36 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [ + { + "TemplateLayoutId": 553648197, + "TemplateElementId": 268436040 + }, + { + "TemplateLayoutId": 553648197, + "TemplateElementId": 268436041 + }, + { + "TemplateLayoutId": 553648197, + "TemplateElementId": 268436042 + }, + { + "TemplateLayoutId": 553648197, + "TemplateElementId": 268436043 + }, + { + "TemplateLayoutId": 553648197, + "TemplateElementId": 268436044 + } + ], + "ScrollbarElementId": 268436030 }, { "Id": 268436030, @@ -14262,6 +14584,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -14368,6 +14692,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -14448,6 +14774,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -14464,7 +14792,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -14542,6 +14873,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -14558,7 +14891,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -14636,6 +14972,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -14652,9 +14990,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -14849,6 +15193,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -14865,7 +15211,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -15060,6 +15409,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -15076,9 +15427,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436031, @@ -15117,6 +15474,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682951, @@ -15125,7 +15484,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436032, @@ -15284,6 +15646,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "StatManagement_Footer_Default", @@ -15633,10 +15997,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436037, @@ -15983,10 +16352,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436046, @@ -16420,10 +16794,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436034, @@ -16770,10 +17149,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436035, @@ -17120,12 +17504,20 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436033, @@ -17284,6 +17676,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "StatManagement_Footer_Default", @@ -17633,10 +18027,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436037, @@ -17983,10 +18382,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436046, @@ -18420,10 +18824,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436034, @@ -18770,10 +19179,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436035, @@ -19120,10 +19534,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436038, @@ -19187,6 +19606,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682934, @@ -19199,7 +19620,10 @@ }, "StateCursors": {}, "DefaultStateName": "Ghosted", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436971, @@ -19263,6 +19687,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100692267, @@ -19275,13 +19701,25 @@ }, "StateCursors": {}, "DefaultStateName": "Ghosted", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436012, @@ -19409,6 +19847,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "StatManagement_Footer_Default", @@ -19483,6 +19923,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -19649,6 +20091,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "StatManagement_Footer_Default", @@ -19998,10 +20442,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436037, @@ -20348,10 +20797,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436046, @@ -20785,10 +21239,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436034, @@ -21135,10 +21594,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436035, @@ -21485,10 +21949,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436038, @@ -21552,6 +22021,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682934, @@ -21564,7 +22035,10 @@ }, "StateCursors": {}, "DefaultStateName": "Ghosted", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436039, @@ -21691,6 +22165,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667814, @@ -21737,6 +22213,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667274, @@ -21745,9 +22223,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436971, @@ -21811,6 +22295,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100692267, @@ -21823,9 +22309,15 @@ }, "StateCursors": {}, "DefaultStateName": "Ghosted", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436016, @@ -21861,6 +22353,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -22210,10 +22704,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436934, @@ -22560,10 +23059,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436017, @@ -23055,10 +23559,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436018, @@ -23579,10 +24088,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436019, @@ -23929,10 +24443,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436020, @@ -24308,10 +24827,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436021, @@ -24658,10 +25182,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436022, @@ -24788,6 +25317,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667814, @@ -24834,6 +25365,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667813, @@ -24842,7 +25375,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436023, @@ -25218,10 +25754,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436024, @@ -25568,12 +26109,20 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436025, @@ -25612,6 +26161,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682936, @@ -25620,7 +26171,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436026, @@ -25996,10 +26550,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436027, @@ -26375,12 +26934,20 @@ "Z": 0.49803922, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436028, @@ -26419,6 +26986,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682951, @@ -26427,7 +26996,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436029, @@ -26992,10 +27564,36 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [ + { + "TemplateLayoutId": 553648197, + "TemplateElementId": 268436040 + }, + { + "TemplateLayoutId": 553648197, + "TemplateElementId": 268436041 + }, + { + "TemplateLayoutId": 553648197, + "TemplateElementId": 268436042 + }, + { + "TemplateLayoutId": 553648197, + "TemplateElementId": 268436043 + }, + { + "TemplateLayoutId": 553648197, + "TemplateElementId": 268436044 + } + ], + "ScrollbarElementId": 268436030 }, { "Id": 268436030, @@ -27209,6 +27807,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -27315,6 +27915,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -27395,6 +27997,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -27411,7 +28015,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -27489,6 +28096,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -27505,7 +28114,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -27583,6 +28195,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -27599,9 +28213,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -27796,6 +28416,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -27812,7 +28434,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -28007,6 +28632,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -28023,9 +28650,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436031, @@ -28064,6 +28697,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682951, @@ -28072,7 +28707,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436032, @@ -28231,6 +28869,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "StatManagement_Footer_Default", @@ -28580,10 +29220,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436037, @@ -28930,10 +29575,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436046, @@ -29367,10 +30017,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436034, @@ -29717,10 +30372,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436035, @@ -30067,12 +30727,20 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436033, @@ -30231,6 +30899,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "StatManagement_Footer_Default", @@ -30580,10 +31250,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436037, @@ -30930,10 +31605,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436046, @@ -31367,10 +32047,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436034, @@ -31717,10 +32402,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436035, @@ -32067,10 +32757,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436038, @@ -32134,6 +32829,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682934, @@ -32146,7 +32843,10 @@ }, "StateCursors": {}, "DefaultStateName": "Ghosted", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436971, @@ -32210,6 +32910,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100692267, @@ -32222,13 +32924,44 @@ }, "StateCursors": {}, "DefaultStateName": "Ghosted", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [ + { + "ButtonElementId": 268436008, + "PageElementId": 268436011, + "IsDefault": true + }, + { + "ButtonElementId": 268436009, + "PageElementId": 268436012, + "IsDefault": false + }, + { + "ButtonElementId": 268436792, + "PageElementId": 268436793, + "IsDefault": false + } + ], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/character_info_2100006E_10000183.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/character_info_2100006E_10000183.json index 50e23d7b..2cea163a 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/character_info_2100006E_10000183.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/character_info_2100006E_10000183.json @@ -149,6 +149,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -190,6 +192,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -573,10 +577,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 268435742 }, { "Id": 268435742, @@ -790,6 +799,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -896,6 +907,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -976,6 +989,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -992,7 +1007,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -1070,6 +1088,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -1086,7 +1106,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -1164,6 +1187,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -1180,9 +1205,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -1377,6 +1408,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -1393,7 +1426,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -1588,6 +1624,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -1604,11 +1642,20 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435708, @@ -1702,6 +1749,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100668307, @@ -1714,7 +1763,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435710, @@ -2093,6 +2145,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100683002, @@ -2101,7 +2155,13 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/chat_2100006f.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/chat_2100006f.json index 951698c3..91bbfe71 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/chat_2100006f.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/chat_2100006f.json @@ -620,7 +620,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437140, @@ -699,7 +702,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436773, @@ -1115,7 +1121,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437141, @@ -1194,7 +1203,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437142, @@ -1273,7 +1285,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436591, @@ -1362,7 +1377,10 @@ }, "StateCursors": {}, "DefaultStateName": "Minimized", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437143, @@ -1441,7 +1459,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437144, @@ -1520,7 +1541,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437145, @@ -1599,7 +1623,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437146, @@ -1678,7 +1705,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437147, @@ -1798,7 +1828,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437148, @@ -1859,7 +1892,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437149, @@ -1979,7 +2015,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437150, @@ -2070,7 +2109,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435472, @@ -3266,9 +3308,15 @@ }, "StateCursors": {}, "DefaultStateName": "Ghosted", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 268435474 }, { "Id": 268435474, @@ -3690,7 +3738,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -3786,7 +3837,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -3882,9 +3936,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -4097,7 +4157,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -4310,11 +4373,20 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437151, @@ -4434,7 +4506,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437152, @@ -4525,7 +4600,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437153, @@ -4645,7 +4723,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435475, @@ -5385,9 +5466,15 @@ "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435478, @@ -6435,7 +6522,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435480, @@ -6495,9 +6585,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435481, @@ -6862,9 +6958,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437154, @@ -6955,7 +7057,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436770, @@ -7371,7 +7476,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436771, @@ -7787,7 +7895,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437139, @@ -7866,7 +7977,13 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/chat_floaty_2100005b.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/chat_floaty_2100005b.json index eb4da451..804821ed 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/chat_floaty_2100005b.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/chat_floaty_2100005b.json @@ -149,6 +149,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -190,6 +192,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688170, @@ -198,7 +202,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436777, @@ -239,6 +246,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": { "": { @@ -249,7 +258,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436778, @@ -313,6 +325,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100688405, @@ -325,7 +339,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436732, @@ -428,6 +445,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -443,7 +462,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436734, @@ -546,6 +568,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -561,7 +585,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436690, @@ -635,6 +662,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688171, @@ -650,7 +679,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435471, @@ -724,6 +756,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688170, @@ -739,7 +773,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435472, @@ -778,6 +815,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -1750,6 +1789,8 @@ "Z": 0.8, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -1917,6 +1958,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100687630, @@ -1929,11 +1972,20 @@ }, "StateCursors": {}, "DefaultStateName": "Ghosted", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 268435474 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436691, @@ -2007,6 +2059,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688173, @@ -2022,7 +2076,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436737, @@ -2125,6 +2182,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -2140,7 +2199,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436692, @@ -2214,6 +2276,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688172, @@ -2229,7 +2293,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435474, @@ -2472,6 +2539,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -2578,6 +2647,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -2658,6 +2729,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -2674,7 +2747,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -2752,6 +2828,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -2768,7 +2846,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -2846,6 +2927,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -2862,9 +2945,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -3059,6 +3148,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -3075,7 +3166,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -3270,6 +3364,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -3286,9 +3382,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436739, @@ -3391,6 +3493,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -3406,7 +3510,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436697, @@ -3756,6 +3863,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -3764,7 +3873,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436745, @@ -3803,6 +3915,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -4844,6 +4958,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -4953,6 +5069,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -4994,6 +5112,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682953, @@ -5002,7 +5122,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435978, @@ -5041,6 +5164,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682953, @@ -5049,7 +5174,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435979, @@ -5088,6 +5216,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682953, @@ -5096,7 +5226,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436149, @@ -5135,6 +5268,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682953, @@ -5143,11 +5278,20 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435481, @@ -5463,12 +5607,23 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/combat_21000073.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/combat_21000073.json index 75d7d04f..b3f9c2ea 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/combat_21000073.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/combat_21000073.json @@ -229,6 +229,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -297,6 +299,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -394,6 +398,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -432,10 +438,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436563, @@ -471,10 +482,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436564, @@ -543,6 +559,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100683017, @@ -551,9 +569,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435634, @@ -1164,6 +1188,8 @@ "Z": 1, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -1258,6 +1284,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682902, @@ -1278,7 +1306,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436175, @@ -1370,6 +1401,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682905, @@ -1390,7 +1423,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436176, @@ -1482,6 +1518,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682908, @@ -1502,9 +1540,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435616, @@ -1573,6 +1617,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -2043,12 +2089,20 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435617, @@ -2087,6 +2141,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -2095,7 +2151,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435618, @@ -3098,6 +3157,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -3611,6 +3672,8 @@ "Z": 1, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687545, @@ -3623,7 +3686,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435623, @@ -4134,6 +4200,8 @@ "Z": 1, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687545, @@ -4146,7 +4214,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435624, @@ -4657,6 +4728,8 @@ "Z": 1, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687545, @@ -4669,7 +4742,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435625, @@ -5180,6 +5256,8 @@ "Z": 1, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687545, @@ -5192,7 +5270,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435626, @@ -5228,6 +5309,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -5441,6 +5524,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -5638,6 +5723,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682972, @@ -5654,7 +5741,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -5849,6 +5939,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682974, @@ -5865,9 +5957,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435638, @@ -6426,12 +6524,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435627, @@ -6467,6 +6573,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -6680,6 +6788,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -6877,6 +6987,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682972, @@ -6893,7 +7005,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -7088,6 +7203,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682974, @@ -7104,9 +7221,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435638, @@ -7665,12 +7788,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435628, @@ -7706,6 +7837,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -7919,6 +8052,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -8116,6 +8251,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682972, @@ -8132,7 +8269,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -8327,6 +8467,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682974, @@ -8343,9 +8485,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435638, @@ -8904,12 +9052,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435629, @@ -8945,6 +9101,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -9158,6 +9316,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -9355,6 +9515,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682972, @@ -9371,7 +9533,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -9566,6 +9731,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682974, @@ -9582,9 +9749,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435638, @@ -10143,12 +10316,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435630, @@ -10184,6 +10365,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -10397,6 +10580,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -10594,6 +10779,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682972, @@ -10610,7 +10797,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -10805,6 +10995,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682974, @@ -10821,9 +11013,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435638, @@ -11382,12 +11580,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435631, @@ -11423,6 +11629,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -11636,6 +11844,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -11833,6 +12043,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682972, @@ -11849,7 +12061,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -12044,6 +12259,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682974, @@ -12060,9 +12277,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435638, @@ -12621,12 +12844,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435632, @@ -12662,6 +12893,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -12875,6 +13108,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -13072,6 +13307,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682972, @@ -13088,7 +13325,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -13283,6 +13523,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682974, @@ -13299,9 +13541,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435638, @@ -13860,12 +14108,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436930, @@ -14376,6 +14632,8 @@ "Z": 1, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687545, @@ -14388,7 +14646,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435619, @@ -14899,6 +15160,8 @@ "Z": 1, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687545, @@ -14911,7 +15174,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436931, @@ -14947,6 +15213,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -15160,6 +15428,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -15357,6 +15627,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682972, @@ -15373,7 +15645,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -15568,6 +15843,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682974, @@ -15584,9 +15861,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435638, @@ -16145,12 +16428,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435620, @@ -16661,6 +16952,8 @@ "Z": 1, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687545, @@ -16673,7 +16966,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435621, @@ -17184,6 +17480,8 @@ "Z": 1, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687545, @@ -17196,11 +17494,61 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [ + { + "ButtonElementId": 268435619, + "PageElementId": 268435626, + "IsDefault": true + }, + { + "ButtonElementId": 268435620, + "PageElementId": 268435627, + "IsDefault": false + }, + { + "ButtonElementId": 268435621, + "PageElementId": 268435628, + "IsDefault": false + }, + { + "ButtonElementId": 268435622, + "PageElementId": 268435629, + "IsDefault": false + }, + { + "ButtonElementId": 268435623, + "PageElementId": 268435630, + "IsDefault": false + }, + { + "ButtonElementId": 268435624, + "PageElementId": 268435631, + "IsDefault": false + }, + { + "ButtonElementId": 268435625, + "PageElementId": 268435632, + "IsDefault": false + }, + { + "ButtonElementId": 268436930, + "PageElementId": 268436931, + "IsDefault": false + } + ], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437163, @@ -17269,6 +17617,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693190, @@ -17277,7 +17627,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437164, @@ -17346,6 +17699,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693186, @@ -17354,7 +17709,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437165, @@ -17457,6 +17815,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -17472,7 +17832,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437166, @@ -17516,6 +17879,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688170, @@ -17531,7 +17896,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437167, @@ -17605,6 +17973,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -17620,7 +17990,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437168, @@ -17694,6 +18067,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688171, @@ -17709,7 +18084,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437169, @@ -17812,6 +18190,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -17827,7 +18207,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437170, @@ -17901,6 +18284,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688172, @@ -17916,7 +18301,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437171, @@ -18019,6 +18407,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -18034,7 +18424,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437172, @@ -18108,6 +18501,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688173, @@ -18123,7 +18518,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437157, @@ -18192,6 +18590,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693187, @@ -18200,7 +18600,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435548, @@ -18288,6 +18691,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -18329,6 +18734,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -18337,7 +18744,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435533, @@ -18376,6 +18786,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -18384,7 +18796,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435534, @@ -18423,6 +18838,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -18431,7 +18848,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435535, @@ -18645,6 +19065,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693194, @@ -18691,6 +19113,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100669731, @@ -18699,7 +19123,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 4, @@ -18738,6 +19165,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100669721, @@ -18746,7 +19175,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435536, @@ -18870,6 +19302,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -18911,6 +19345,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667904, @@ -18919,7 +19355,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436975, @@ -18958,6 +19397,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100692318, @@ -18966,11 +19407,20 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435537, @@ -19346,10 +19796,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435538, @@ -19836,10 +20291,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435539, @@ -20286,6 +20746,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -20394,6 +20856,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -20418,9 +20882,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435540, @@ -20867,6 +21337,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -20975,6 +21447,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -20999,9 +21473,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435541, @@ -21477,6 +21957,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -21585,6 +22067,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -21609,9 +22093,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435542, @@ -21706,6 +22196,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -22334,6 +22826,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683036, @@ -22354,7 +22848,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435544, @@ -22980,6 +23477,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683036, @@ -23000,7 +23499,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435545, @@ -23626,6 +24128,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683036, @@ -23646,11 +24150,20 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437158, @@ -23719,6 +24232,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693183, @@ -23727,7 +24242,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437159, @@ -23796,6 +24314,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693188, @@ -23804,7 +24324,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437160, @@ -23873,6 +24396,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693184, @@ -23881,7 +24406,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437161, @@ -23950,6 +24478,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693189, @@ -23958,7 +24488,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437162, @@ -24027,6 +24560,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693185, @@ -24035,7 +24570,13 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/component_category_21000033_10000466.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/component_category_21000033_10000466.json index e6162133..42b40b5e 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/component_category_21000033_10000466.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/component_category_21000033_10000466.json @@ -346,6 +346,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100668306, @@ -354,5 +356,8 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/component_row_21000033_10000467.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/component_row_21000033_10000467.json index 9585ddf4..df440263 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/component_row_21000033_10000467.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/component_row_21000033_10000467.json @@ -49,6 +49,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100687393, @@ -96,10 +98,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436585, @@ -446,10 +453,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436586, @@ -825,10 +837,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436587, @@ -1381,6 +1398,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -1389,7 +1408,13 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/dialogs_2100003C.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/dialogs_2100003C.json index d19d45f1..0baca67b 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/dialogs_2100003C.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/dialogs_2100003C.json @@ -149,6 +149,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -278,6 +280,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100687323, @@ -324,6 +328,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100687166, @@ -332,7 +338,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435978, @@ -371,6 +380,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100687166, @@ -379,7 +390,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435979, @@ -418,6 +432,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100687165, @@ -426,7 +442,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436145, @@ -465,6 +484,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100687161, @@ -473,7 +494,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436146, @@ -512,6 +536,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100687162, @@ -520,7 +546,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436147, @@ -559,6 +588,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100687163, @@ -567,7 +598,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436148, @@ -606,6 +640,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100687164, @@ -614,7 +650,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436149, @@ -653,6 +692,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100687165, @@ -661,7 +702,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436271, @@ -697,6 +741,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -1223,6 +1269,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -1317,6 +1365,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682902, @@ -1337,7 +1387,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436175, @@ -1429,6 +1482,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682905, @@ -1449,7 +1504,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436176, @@ -1541,6 +1599,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682908, @@ -1561,9 +1621,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 25, @@ -2087,6 +2153,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -2181,6 +2249,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682902, @@ -2201,7 +2271,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436175, @@ -2293,6 +2366,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682905, @@ -2313,7 +2388,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436176, @@ -2405,6 +2483,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682908, @@ -2425,11 +2505,20 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 62, @@ -3307,12 +3396,28 @@ "Z": 0.8, "W": 1 }, + "Outline": true, + "OutlineColor": { + "X": 0.06666667, + "Y": 0.05882353, + "Z": 0.02745098, + "W": 1 + }, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/effects_negative_2100001B.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/effects_negative_2100001B.json index 2899d29d..a7dfd054 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/effects_negative_2100001B.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/effects_negative_2100001B.json @@ -120,6 +120,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -501,6 +503,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100683002, @@ -509,7 +513,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435747, @@ -693,10 +700,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [ + { + "TemplateLayoutId": 553648155, + "TemplateElementId": 268435752 + } + ], + "ScrollbarElementId": 268435748 }, { "Id": 268435748, @@ -910,6 +927,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -1016,6 +1035,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -1096,6 +1117,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -1112,7 +1135,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -1190,6 +1216,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -1206,7 +1234,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -1284,6 +1315,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -1300,9 +1333,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -1497,6 +1536,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -1513,7 +1554,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -1708,6 +1752,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -1724,9 +1770,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435749, @@ -1765,6 +1817,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100668309, @@ -2148,10 +2202,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 268435751 }, { "Id": 268435751, @@ -2365,6 +2424,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -2471,6 +2532,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -2551,6 +2614,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -2567,7 +2632,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -2645,6 +2713,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -2661,7 +2731,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -2739,6 +2812,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -2755,9 +2830,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -2952,6 +3033,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -2968,7 +3051,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -3163,6 +3249,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -3179,11 +3267,20 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435708, @@ -3277,6 +3374,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100668307, @@ -3289,7 +3388,13 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/effects_positive_2100001B.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/effects_positive_2100001B.json index 11721e7a..a40132b2 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/effects_positive_2100001B.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/effects_positive_2100001B.json @@ -149,6 +149,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -530,6 +532,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100683002, @@ -538,7 +542,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435747, @@ -722,10 +729,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [ + { + "TemplateLayoutId": 553648155, + "TemplateElementId": 268435752 + } + ], + "ScrollbarElementId": 268435748 }, { "Id": 268435748, @@ -939,6 +956,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -1045,6 +1064,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -1125,6 +1146,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -1141,7 +1164,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -1219,6 +1245,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -1235,7 +1263,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -1313,6 +1344,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -1329,9 +1362,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -1526,6 +1565,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -1542,7 +1583,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -1737,6 +1781,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -1753,9 +1799,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435749, @@ -1794,6 +1846,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100668309, @@ -2177,10 +2231,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 268435751 }, { "Id": 268435751, @@ -2394,6 +2453,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -2500,6 +2561,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -2580,6 +2643,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -2596,7 +2661,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -2674,6 +2742,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -2690,7 +2760,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -2768,6 +2841,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -2784,9 +2859,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -2981,6 +3062,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -2997,7 +3080,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -3192,6 +3278,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -3208,11 +3296,20 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435708, @@ -3306,6 +3403,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100668307, @@ -3318,7 +3417,13 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/effects_row_2100001B_10000128.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/effects_row_2100001B_10000128.json index 048ebdff..66ca36b3 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/effects_row_2100001B_10000128.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/effects_row_2100001B_10000128.json @@ -60,6 +60,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100668310, @@ -107,10 +109,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435754, @@ -602,10 +609,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435755, @@ -952,10 +964,18 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/examine_2100006B_100005F2.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/examine_2100006B_100005F2.json index f5a8f78d..f0ca9801 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/examine_2100006B_100005F2.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/examine_2100006B_100005F2.json @@ -149,6 +149,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -215,6 +217,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100688405, @@ -227,7 +231,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437117, @@ -330,6 +337,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -345,7 +354,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437118, @@ -419,6 +431,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688171, @@ -434,7 +448,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437119, @@ -537,6 +554,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -552,7 +571,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437120, @@ -626,6 +648,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688172, @@ -641,7 +665,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436776, @@ -680,6 +707,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688170, @@ -688,7 +717,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437121, @@ -791,6 +823,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -806,7 +840,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436777, @@ -842,10 +879,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437122, @@ -919,6 +961,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688173, @@ -934,7 +978,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435795, @@ -970,6 +1017,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -1319,10 +1368,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435807, @@ -1361,6 +1415,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100683004, @@ -1369,7 +1425,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435808, @@ -1716,10 +1775,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436269, @@ -1990,10 +2054,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [ + { + "TemplateLayoutId": 553648156, + "TemplateElementId": 268436270 + } + ], + "ScrollbarElementId": 0 }, { "Id": 268435809, @@ -2340,10 +2414,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435810, @@ -2690,10 +2769,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435811, @@ -3542,10 +3626,15 @@ "Z": 0.8, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 268435812 }, { "Id": 268435812, @@ -3759,6 +3848,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -3865,6 +3956,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -3945,6 +4038,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -3961,7 +4056,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -4039,6 +4137,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -4055,7 +4155,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -4133,6 +4236,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -4149,9 +4254,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -4346,6 +4457,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -4362,7 +4475,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -4557,6 +4673,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -4573,9 +4691,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435813, @@ -4951,10 +5075,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435796, @@ -5023,6 +5152,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -5031,7 +5162,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435800, @@ -5070,6 +5204,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688172, @@ -5078,7 +5214,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435802, @@ -5117,6 +5256,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688172, @@ -5125,7 +5266,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435804, @@ -5164,6 +5308,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688172, @@ -5172,9 +5318,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437107, @@ -5243,6 +5395,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693187, @@ -5251,7 +5405,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437108, @@ -5320,6 +5477,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693183, @@ -5328,7 +5487,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437109, @@ -5397,6 +5559,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693188, @@ -5405,7 +5569,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435776, @@ -5441,6 +5608,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -5509,10 +5678,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435785, @@ -5667,10 +5841,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [ + { + "TemplateLayoutId": 553648235, + "TemplateElementId": 268435814 + } + ], + "ScrollbarElementId": 0 }, { "Id": 268435786, @@ -6046,10 +6230,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435787, @@ -6425,10 +6614,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435788, @@ -6775,10 +6969,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435789, @@ -6814,6 +7013,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -7163,12 +7364,20 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435791, @@ -7204,6 +7413,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -7553,10 +7764,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435793, @@ -7903,10 +8119,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435794, @@ -8253,12 +8474,20 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436277, @@ -8471,10 +8700,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [ + { + "TemplateLayoutId": 553648156, + "TemplateElementId": 268436279 + } + ], + "ScrollbarElementId": 0 }, { "Id": 268436577, @@ -8513,6 +8752,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688172, @@ -8521,7 +8762,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435777, @@ -8590,6 +8834,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -8598,7 +8844,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435781, @@ -8637,6 +8886,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100668102, @@ -8645,7 +8896,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436794, @@ -9137,10 +9391,15 @@ "Z": 1, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435782, @@ -9179,6 +9438,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688172, @@ -9187,9 +9448,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437110, @@ -9258,6 +9525,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693184, @@ -9266,7 +9535,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437111, @@ -9335,6 +9607,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693189, @@ -9343,7 +9617,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437112, @@ -9412,6 +9689,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693185, @@ -9420,7 +9699,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437113, @@ -9489,6 +9771,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693190, @@ -9497,7 +9781,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435757, @@ -10021,6 +10308,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -10029,7 +10318,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437114, @@ -10098,6 +10390,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693186, @@ -10106,7 +10400,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435758, @@ -10175,6 +10472,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -10396,6 +10695,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -10502,6 +10803,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -10582,6 +10885,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -10598,7 +10903,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -10676,6 +10984,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -10692,7 +11002,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -10770,6 +11083,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -10786,9 +11101,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -10983,6 +11304,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -10999,7 +11322,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -11194,6 +11520,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -11210,9 +11538,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436984, @@ -11281,6 +11615,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -11289,7 +11625,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435765, @@ -11328,6 +11667,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688172, @@ -11336,7 +11677,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435767, @@ -11375,6 +11719,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100668015, @@ -11383,7 +11729,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435772, @@ -12290,10 +12639,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 268435773 }, { "Id": 268435773, @@ -12536,6 +12890,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -12642,6 +12998,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -12722,6 +13080,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -12738,7 +13098,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -12816,6 +13179,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -12832,7 +13197,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -12910,6 +13278,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -12926,9 +13296,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -13123,6 +13499,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -13139,7 +13517,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -13334,6 +13715,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -13350,9 +13733,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435774, @@ -14416,10 +14805,15 @@ "Z": 0, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 268436590 }, { "Id": 268435775, @@ -15384,12 +15778,20 @@ "Z": 0, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437115, @@ -15492,6 +15894,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -15507,7 +15911,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437116, @@ -15581,6 +15988,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688170, @@ -15596,7 +16005,13 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/examine_component_2100006B_1000032E.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/examine_component_2100006B_1000032E.json index d8952a84..7349f117 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/examine_component_2100006B_1000032E.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/examine_component_2100006B_1000032E.json @@ -32,6 +32,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -103,6 +105,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -111,7 +115,13 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/examine_row_2100006B_10000166.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/examine_row_2100006B_10000166.json index 6a2e96dc..e70f2416 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/examine_row_2100006B_10000166.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/examine_row_2100006B_10000166.json @@ -35,6 +35,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -476,10 +478,15 @@ "Z": 1, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435755, @@ -1000,10 +1007,18 @@ "Z": 1, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/indicators_21000071.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/indicators_21000071.json index 4d70d6b8..3a139ae7 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/indicators_21000071.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/indicators_21000071.json @@ -149,6 +149,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -225,6 +227,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -240,7 +244,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437072, @@ -284,6 +291,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688172, @@ -299,7 +308,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437073, @@ -373,6 +385,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -388,7 +402,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437074, @@ -462,6 +479,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688173, @@ -477,7 +496,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435699, @@ -585,6 +607,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100693157, @@ -650,6 +674,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal_pressed": { "Item1": 100682984, @@ -658,9 +684,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435700, @@ -768,6 +800,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100693152, @@ -833,6 +867,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal_pressed": { "Item1": 100693147, @@ -841,9 +877,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435701, @@ -980,6 +1022,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100693148, @@ -1045,6 +1089,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal_pressed": { "Item1": 100693147, @@ -1053,9 +1099,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435702, @@ -1192,6 +1244,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100693150, @@ -1257,6 +1311,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal_pressed": { "Item1": 100693147, @@ -1265,9 +1321,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437059, @@ -1336,6 +1398,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693187, @@ -1344,7 +1408,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435703, @@ -1474,6 +1541,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Unencumbered": { "Item1": 100693154, @@ -1539,6 +1608,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal_pressed": { "Item1": 100693147, @@ -1547,9 +1618,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437060, @@ -1618,6 +1695,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693183, @@ -1626,7 +1705,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435704, @@ -1770,6 +1852,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Connection_good": { "Item1": 100693144, @@ -1839,6 +1923,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal_pressed": { "Item1": 100693147, @@ -1847,9 +1933,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437061, @@ -1918,6 +2010,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693188, @@ -1926,7 +2020,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437062, @@ -1995,6 +2092,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693184, @@ -2003,7 +2102,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435706, @@ -2067,6 +2169,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100693169, @@ -2079,7 +2183,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437063, @@ -2148,6 +2255,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693189, @@ -2156,7 +2265,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437064, @@ -2225,6 +2337,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693185, @@ -2233,7 +2347,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437065, @@ -2302,6 +2419,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693190, @@ -2310,7 +2429,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437066, @@ -2379,6 +2501,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693186, @@ -2387,7 +2511,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437067, @@ -2461,6 +2588,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -2476,7 +2605,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437068, @@ -2520,6 +2652,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688170, @@ -2535,7 +2669,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437069, @@ -2609,6 +2746,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -2624,7 +2763,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437070, @@ -2698,6 +2840,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688171, @@ -2713,7 +2857,13 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/inventory_21000023.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/inventory_21000023.json index 434139a6..fd915593 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/inventory_21000023.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/inventory_21000023.json @@ -91,6 +91,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -132,6 +134,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100683019, @@ -140,7 +144,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435922, @@ -237,6 +244,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -253,7 +262,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435923, @@ -777,6 +789,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100683002, @@ -785,7 +799,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435917, @@ -821,6 +838,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -1237,10 +1256,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436887, @@ -1654,10 +1678,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436911, @@ -2071,10 +2100,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436912, @@ -2488,10 +2522,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436913, @@ -2905,10 +2944,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436914, @@ -3322,10 +3366,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435925, @@ -3391,10 +3440,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436915, @@ -3808,10 +3862,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435926, @@ -4004,6 +4063,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -4259,6 +4320,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "ItemSlot_DragOver_Accept": { "Item1": 100667897, @@ -4271,9 +4334,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435930, @@ -4687,10 +4756,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435931, @@ -5104,10 +5178,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435932, @@ -5521,10 +5600,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435933, @@ -5938,10 +6022,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435934, @@ -6355,10 +6444,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436969, @@ -6772,10 +6866,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435935, @@ -7189,10 +7288,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436878, @@ -7606,10 +7710,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435936, @@ -8023,10 +8132,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435937, @@ -8440,10 +8554,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436926, @@ -8948,6 +9067,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -9056,6 +9177,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -9080,9 +9203,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435938, @@ -9496,10 +9625,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435939, @@ -9913,10 +10047,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436907, @@ -10330,10 +10469,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436908, @@ -10747,10 +10891,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436885, @@ -11164,10 +11313,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436909, @@ -11581,10 +11735,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436886, @@ -11998,12 +12157,20 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435918, @@ -12039,6 +12206,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -12417,10 +12586,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435928, @@ -12767,10 +12941,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435929, @@ -12897,6 +13076,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667933, @@ -12943,6 +13124,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667932, @@ -12951,9 +13134,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435913, @@ -13367,10 +13556,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435914, @@ -13813,10 +14007,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 268435915 }, { "Id": 268435915, @@ -14030,6 +14229,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -14136,6 +14337,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -14216,6 +14419,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -14232,7 +14437,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -14310,6 +14518,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -14326,7 +14536,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -14404,6 +14617,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -14420,9 +14635,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -14617,6 +14838,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -14633,7 +14856,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -14828,6 +15054,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -14844,11 +15072,20 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435919, @@ -14884,6 +15121,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -15378,10 +15617,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435910, @@ -15940,10 +16184,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 268435911 }, { "Id": 268435911, @@ -16186,6 +16435,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -16292,6 +16543,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -16372,6 +16625,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -16388,7 +16643,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -16466,6 +16724,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -16482,7 +16742,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -16560,6 +16823,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -16576,9 +16841,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -16773,6 +17044,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -16789,7 +17062,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -16984,6 +17260,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -17000,11 +17278,20 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435920, @@ -17043,6 +17330,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100683018, @@ -17051,7 +17340,13 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/link_status_2100001D.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/link_status_2100001D.json index 4fcf41c2..6ea4a87a 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/link_status_2100001D.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/link_status_2100001D.json @@ -120,6 +120,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -161,6 +163,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -515,12 +519,20 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435708, @@ -614,6 +626,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100668307, @@ -626,7 +640,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435709, @@ -665,6 +682,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100683002, @@ -1048,12 +1067,23 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/mini_game_2100001E.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/mini_game_2100001E.json index 5c896a61..ecca6c83 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/mini_game_2100001E.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/mini_game_2100001E.json @@ -120,6 +120,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -216,6 +218,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100668307, @@ -228,7 +232,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435820, @@ -267,6 +274,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100683002, @@ -650,12 +659,20 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435822, @@ -694,6 +711,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100668312, @@ -1306,6 +1325,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100672324, @@ -1322,7 +1343,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435830, @@ -1927,6 +1951,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100672324, @@ -1943,7 +1969,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435831, @@ -2548,6 +2577,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100672324, @@ -2564,7 +2595,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435823, @@ -2600,6 +2634,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -2641,6 +2677,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100671446, @@ -2649,7 +2687,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435825, @@ -2688,6 +2729,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100671447, @@ -2696,7 +2739,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435826, @@ -2735,6 +2781,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100671448, @@ -2743,7 +2791,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435827, @@ -2782,6 +2833,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100671449, @@ -2790,7 +2843,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435828, @@ -3384,6 +3440,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100671445, @@ -3392,11 +3450,28 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [ + { + "TemplateLayoutId": 553648158, + "TemplateElementId": 268435832 + } + ], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/paperdoll_21000024.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/paperdoll_21000024.json index 3a8edb2c..062b438d 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/paperdoll_21000024.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/paperdoll_21000024.json @@ -32,6 +32,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -448,10 +450,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436887, @@ -865,10 +872,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436911, @@ -1282,10 +1294,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436912, @@ -1699,10 +1716,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436913, @@ -2116,10 +2138,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436914, @@ -2533,10 +2560,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435925, @@ -2602,10 +2634,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436915, @@ -3019,10 +3056,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435926, @@ -3215,6 +3257,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -3470,6 +3514,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "ItemSlot_DragOver_Accept": { "Item1": 100667897, @@ -3482,9 +3528,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435930, @@ -3898,10 +3950,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435931, @@ -4315,10 +4372,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435932, @@ -4732,10 +4794,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435933, @@ -5149,10 +5216,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435934, @@ -5566,10 +5638,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436969, @@ -5983,10 +6060,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435935, @@ -6400,10 +6482,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436878, @@ -6817,10 +6904,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435936, @@ -7234,10 +7326,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435937, @@ -7651,10 +7748,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436926, @@ -8159,6 +8261,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -8267,6 +8371,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -8291,9 +8397,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435938, @@ -8707,10 +8819,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435939, @@ -9124,10 +9241,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436907, @@ -9541,10 +9663,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436908, @@ -9958,10 +10085,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436885, @@ -10375,10 +10507,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436909, @@ -10792,10 +10929,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436886, @@ -11209,10 +11351,18 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/powerbar_21000072.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/powerbar_21000072.json index 561ea4a1..324ff0bc 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/powerbar_21000072.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/powerbar_21000072.json @@ -222,6 +222,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -395,6 +397,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100683019, @@ -1029,10 +1033,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 2, @@ -1124,6 +1133,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "JumpMode": { "Item1": 100668244, @@ -1144,7 +1155,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436974, @@ -1183,6 +1197,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100692318, @@ -1191,9 +1207,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437123, @@ -1262,6 +1284,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693187, @@ -1270,7 +1294,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437124, @@ -1339,6 +1366,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693183, @@ -1347,7 +1376,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437125, @@ -1416,6 +1448,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693188, @@ -1424,7 +1458,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437126, @@ -1493,6 +1530,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693184, @@ -1501,7 +1540,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437127, @@ -1570,6 +1612,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693189, @@ -1578,7 +1622,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437128, @@ -1647,6 +1694,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693185, @@ -1655,7 +1704,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437129, @@ -1724,6 +1776,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693190, @@ -1732,7 +1786,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437130, @@ -1801,6 +1858,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693186, @@ -1809,7 +1868,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437131, @@ -1883,6 +1945,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -1898,7 +1962,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437132, @@ -1942,6 +2009,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688170, @@ -1957,7 +2026,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437133, @@ -2031,6 +2103,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -2046,7 +2120,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437134, @@ -2120,6 +2197,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688171, @@ -2135,7 +2214,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437135, @@ -2209,6 +2291,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -2224,7 +2308,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437136, @@ -2268,6 +2355,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688172, @@ -2283,7 +2372,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437137, @@ -2357,6 +2449,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -2372,7 +2466,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437138, @@ -2446,6 +2543,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688173, @@ -2461,7 +2560,13 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/radar_21000074.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/radar_21000074.json index bbed9368..e41c835e 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/radar_21000074.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/radar_21000074.json @@ -462,6 +462,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -814,6 +816,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682944, @@ -822,7 +826,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435519, @@ -861,6 +868,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682945, @@ -869,7 +878,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435520, @@ -908,6 +920,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667899, @@ -916,7 +930,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435521, @@ -955,6 +972,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100669752, @@ -963,7 +982,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435522, @@ -1002,6 +1024,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100669754, @@ -1010,7 +1034,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437155, @@ -1054,6 +1081,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693193, @@ -1069,7 +1098,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437017, @@ -1144,6 +1176,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "LockedUI": { "Item1": 100693175, @@ -1156,7 +1190,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435523, @@ -1195,6 +1232,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100669756, @@ -1203,7 +1242,13 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/smartbox_fps_2100000F.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/smartbox_fps_2100000F.json index f9e0fca1..08549eda 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/smartbox_fps_2100000F.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/smartbox_fps_2100000F.json @@ -388,8 +388,13 @@ "Z": 1, "W": 1 }, + "Outline": true, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/spellbook_21000034.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/spellbook_21000034.json index cf16ed7b..a4375bab 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/spellbook_21000034.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/spellbook_21000034.json @@ -355,6 +355,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -833,6 +835,8 @@ "Z": 0.49803922, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Closed", @@ -899,6 +903,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687251, @@ -911,7 +917,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435689, @@ -975,6 +984,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687253, @@ -987,7 +998,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435989, @@ -1051,6 +1065,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687255, @@ -1063,9 +1079,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436138, @@ -1541,6 +1563,8 @@ "Z": 0.49803922, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Closed", @@ -1607,6 +1631,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687251, @@ -1619,7 +1645,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435689, @@ -1683,6 +1712,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687253, @@ -1695,7 +1726,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435989, @@ -1759,6 +1793,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687255, @@ -1771,9 +1807,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436139, @@ -1867,6 +1909,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100668307, @@ -1879,7 +1923,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436140, @@ -1977,6 +2024,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -2427,10 +2476,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 268436118 }, { "Id": 268436118, @@ -2644,6 +2698,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -2750,6 +2806,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -2830,6 +2888,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -2846,7 +2906,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -2924,6 +2987,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -2940,7 +3005,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -3018,6 +3086,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -3034,9 +3104,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -3231,6 +3307,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -3247,7 +3325,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -3442,6 +3523,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -3458,9 +3541,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436119, @@ -3499,6 +3588,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100673314, @@ -3895,6 +3986,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -4003,6 +4096,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -4027,9 +4122,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436129, @@ -4418,6 +4519,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -4526,6 +4629,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -4550,9 +4655,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436130, @@ -4941,6 +5052,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -5049,6 +5162,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -5073,9 +5188,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436131, @@ -5451,10 +5572,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436132, @@ -5830,10 +5956,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436133, @@ -5897,6 +6028,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682970, @@ -6284,12 +6417,20 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436120, @@ -6678,6 +6819,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -6786,6 +6929,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -6810,9 +6955,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436121, @@ -7201,6 +7352,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -7309,6 +7462,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -7333,9 +7488,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436122, @@ -7724,6 +7885,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -7832,6 +7995,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -7856,9 +8021,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436928, @@ -8247,6 +8418,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -8355,6 +8528,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -8379,9 +8554,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436123, @@ -8770,6 +8951,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -8878,6 +9061,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -8902,9 +9087,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436814, @@ -9293,6 +9484,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -9401,6 +9594,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -9425,9 +9620,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436124, @@ -9816,6 +10017,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -9924,6 +10127,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -9948,9 +10153,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436125, @@ -10339,6 +10550,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -10447,6 +10660,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -10471,9 +10686,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436126, @@ -10862,6 +11083,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -10970,6 +11193,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -10994,9 +11219,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436127, @@ -11385,6 +11616,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -11493,6 +11726,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100683029, @@ -11517,13 +11752,25 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436141, @@ -11621,6 +11868,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -12045,10 +12294,24 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [ + { + "TemplateLayoutId": 553648179, + "TemplateElementId": 268436582 + }, + { + "TemplateLayoutId": 553648179, + "TemplateElementId": 268436583 + } + ], + "ScrollbarElementId": 268436581 }, { "Id": 268436581, @@ -12262,6 +12525,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682847, @@ -12368,6 +12633,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -12448,6 +12715,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682848, @@ -12464,7 +12733,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436325, @@ -12542,6 +12814,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682851, @@ -12558,7 +12832,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436326, @@ -12636,6 +12913,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682854, @@ -12652,9 +12931,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435569, @@ -12849,6 +13134,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682857, @@ -12865,7 +13152,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435570, @@ -13060,6 +13350,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682860, @@ -13076,11 +13368,34 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [ + { + "ButtonElementId": 268436137, + "PageElementId": 268436140, + "IsDefault": true + }, + { + "ButtonElementId": 268436138, + "PageElementId": 268436141, + "IsDefault": false + } + ], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/toolbar_21000016.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/toolbar_21000016.json index 26dcfca7..b76cb7cd 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/toolbar_21000016.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/toolbar_21000016.json @@ -32,6 +32,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -98,6 +100,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100667687, @@ -110,7 +114,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435878, @@ -149,6 +156,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -157,7 +166,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435879, @@ -571,10 +583,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435880, @@ -988,10 +1005,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435881, @@ -1405,10 +1427,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435858, @@ -1472,6 +1499,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682988, @@ -1484,7 +1513,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435882, @@ -1898,10 +1930,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435859, @@ -1995,6 +2032,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682990, @@ -2007,7 +2046,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435883, @@ -2421,10 +2463,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436826, @@ -2587,6 +2634,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100690350, @@ -2599,7 +2648,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435860, @@ -2961,6 +3013,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682992, @@ -2973,7 +3027,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435884, @@ -3387,10 +3444,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435861, @@ -3484,6 +3546,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682994, @@ -3496,7 +3560,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435885, @@ -3910,10 +3977,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435862, @@ -3952,6 +4024,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667691, @@ -3960,7 +4034,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437174, @@ -3999,6 +4076,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -4007,7 +4086,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435886, @@ -4421,10 +4503,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435863, @@ -4587,6 +4674,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100667679, @@ -4599,7 +4688,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437175, @@ -5013,10 +5105,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435887, @@ -5430,10 +5527,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435864, @@ -5596,6 +5698,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100667673, @@ -5608,7 +5712,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437176, @@ -6022,10 +6129,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435888, @@ -6064,6 +6176,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -6072,7 +6186,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435865, @@ -6235,6 +6352,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100667682, @@ -6247,7 +6366,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435889, @@ -6439,6 +6561,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682999, @@ -6689,6 +6813,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "ItemSlot_DragOver_Accept": { "Item1": 100667897, @@ -6705,9 +6831,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437177, @@ -7121,10 +7253,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435866, @@ -7287,6 +7424,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100667670, @@ -7299,7 +7438,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437178, @@ -7713,10 +7855,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435867, @@ -7879,6 +8026,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100667676, @@ -7891,7 +8040,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437179, @@ -8305,10 +8457,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435868, @@ -8347,6 +8504,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667692, @@ -8355,7 +8514,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437180, @@ -8769,10 +8931,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435869, @@ -8850,6 +9017,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100667689, @@ -8866,7 +9035,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437181, @@ -9280,10 +9452,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435870, @@ -9355,6 +9532,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100667686, @@ -9886,6 +10065,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682997, @@ -9894,7 +10075,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435876, @@ -9989,6 +10173,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -10030,6 +10216,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100687299, @@ -10038,7 +10226,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 4, @@ -10077,6 +10268,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682998, @@ -10085,9 +10278,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435871, @@ -10835,10 +11034,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435872, @@ -10902,6 +11106,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "ObjectSelected": { "Item1": 100669751, @@ -10914,7 +11120,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435873, @@ -11070,6 +11279,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100669758, @@ -11116,6 +11327,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100669759, @@ -11124,9 +11337,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435874, @@ -11282,6 +11501,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100672213, @@ -11328,6 +11549,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100672214, @@ -11336,11 +11559,20 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437182, @@ -11754,10 +11986,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437183, @@ -12171,10 +12408,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437184, @@ -12213,6 +12455,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -12221,7 +12465,13 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/vendor_21000012_100000B7.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/vendor_21000012_100000B7.json index ae6de02d..65230c73 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/vendor_21000012_100000B7.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/vendor_21000012_100000B7.json @@ -32,6 +32,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -98,6 +100,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100668074, @@ -110,7 +114,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435640, @@ -528,6 +535,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -658,6 +667,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -1079,10 +1090,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435654, @@ -1325,6 +1341,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682879, @@ -1431,6 +1449,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -1511,6 +1531,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682883, @@ -1527,7 +1549,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436329, @@ -1605,6 +1630,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682880, @@ -1621,7 +1648,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436330, @@ -1699,6 +1729,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682886, @@ -1715,9 +1747,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436331, @@ -1912,6 +1950,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682889, @@ -1928,7 +1968,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436332, @@ -2123,6 +2166,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682892, @@ -2139,9 +2184,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435655, @@ -2488,10 +2539,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435656, @@ -2838,10 +2894,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435657, @@ -3446,6 +3507,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682828, @@ -3462,7 +3525,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435658, @@ -4067,6 +4133,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682828, @@ -4083,7 +4151,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435659, @@ -4688,6 +4759,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100668090, @@ -4704,7 +4777,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435660, @@ -5309,6 +5385,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100668090, @@ -5325,9 +5403,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435661, @@ -5455,6 +5539,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -6067,6 +6153,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100669735, @@ -6083,7 +6171,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435669, @@ -6688,6 +6779,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100669735, @@ -6704,7 +6797,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435662, @@ -7147,10 +7243,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435663, @@ -7393,6 +7494,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682879, @@ -7499,6 +7602,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -7579,6 +7684,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682883, @@ -7595,7 +7702,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436329, @@ -7673,6 +7783,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682880, @@ -7689,7 +7801,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436330, @@ -7767,6 +7882,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682886, @@ -7783,9 +7900,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436331, @@ -7980,6 +8103,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682889, @@ -7996,7 +8121,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436332, @@ -8191,6 +8319,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682892, @@ -8207,9 +8337,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435664, @@ -8556,10 +8692,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435665, @@ -8906,10 +9047,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435666, @@ -9514,6 +9660,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682828, @@ -9530,7 +9678,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435667, @@ -10135,6 +10286,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682828, @@ -10151,9 +10304,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435641, @@ -10606,6 +10765,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687634, @@ -10618,7 +10779,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435642, @@ -11071,6 +11235,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687634, @@ -11083,7 +11249,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435643, @@ -11536,6 +11705,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Closed": { "Item1": 100687634, @@ -11548,7 +11719,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435644, @@ -11676,6 +11850,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -12097,10 +12273,15 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435646, @@ -12343,6 +12524,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682879, @@ -12449,6 +12632,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -12529,6 +12714,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682883, @@ -12545,7 +12732,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436329, @@ -12623,6 +12813,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682880, @@ -12639,7 +12831,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436330, @@ -12717,6 +12912,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682886, @@ -12733,9 +12930,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436331, @@ -12930,6 +13133,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682889, @@ -12946,7 +13151,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436332, @@ -13141,6 +13349,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682892, @@ -13157,9 +13367,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435647, @@ -13465,6 +13681,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "Normal", @@ -13817,6 +14035,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100668083, @@ -13825,7 +14045,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268436302, @@ -13917,6 +14140,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100668081, @@ -13937,9 +14162,15 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435648, @@ -14286,10 +14517,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435649, @@ -14636,10 +14872,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435650, @@ -15244,6 +15485,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682828, @@ -15260,7 +15503,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435651, @@ -15865,6 +16111,8 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100682828, @@ -15881,11 +16129,36 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [ + { + "ButtonElementId": 268435641, + "PageElementId": 268435644, + "IsDefault": true + }, + { + "ButtonElementId": 268435642, + "PageElementId": 268435652, + "IsDefault": false + }, + { + "ButtonElementId": 268435643, + "PageElementId": 268435661, + "IsDefault": false + } + ], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435597, @@ -15924,6 +16197,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100687632, @@ -15932,7 +16207,13 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/vitae_21000020.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/vitae_21000020.json index 6443b76d..284e776c 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/vitae_21000020.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/vitae_21000020.json @@ -120,6 +120,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -161,6 +163,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100682946, @@ -515,12 +519,20 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435708, @@ -614,6 +626,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "Normal": { "Item1": 100668307, @@ -626,7 +640,10 @@ }, "StateCursors": {}, "DefaultStateName": "Normal", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435709, @@ -665,6 +682,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100683002, @@ -1048,12 +1067,23 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file diff --git a/tests/AcDream.App.Tests/UI/Layout/fixtures/vitals_2100006C.json b/tests/AcDream.App.Tests/UI/Layout/fixtures/vitals_2100006C.json index f26dd334..edadf770 100644 --- a/tests/AcDream.App.Tests/UI/Layout/fixtures/vitals_2100006C.json +++ b/tests/AcDream.App.Tests/UI/Layout/fixtures/vitals_2100006C.json @@ -171,6 +171,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -242,6 +244,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693185, @@ -250,7 +254,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435692, @@ -308,6 +315,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -739,10 +748,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 2, @@ -800,6 +814,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -863,6 +879,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "ShowDetail": { "Item1": 100693139, @@ -871,7 +889,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435688, @@ -910,6 +931,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693127, @@ -918,7 +941,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435689, @@ -957,6 +983,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693128, @@ -965,7 +993,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435690, @@ -1004,6 +1035,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693129, @@ -1012,9 +1045,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435687, @@ -1072,6 +1111,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -1135,6 +1176,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "ShowDetail": { "Item1": 100693138, @@ -1143,7 +1186,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435688, @@ -1182,6 +1228,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693124, @@ -1190,7 +1238,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435689, @@ -1229,6 +1280,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693125, @@ -1237,7 +1290,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435690, @@ -1276,6 +1332,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693126, @@ -1284,11 +1342,20 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437049, @@ -1357,6 +1424,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693190, @@ -1365,7 +1434,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437050, @@ -1434,6 +1506,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693186, @@ -1442,7 +1516,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435694, @@ -1500,6 +1577,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -1560,6 +1639,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -1623,6 +1704,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "ShowDetail": { "Item1": 100693141, @@ -1631,7 +1714,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435688, @@ -1670,6 +1756,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693133, @@ -1678,7 +1766,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435689, @@ -1717,6 +1808,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693134, @@ -1725,7 +1818,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435690, @@ -1764,6 +1860,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693135, @@ -1772,9 +1870,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435695, @@ -2203,10 +2307,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435687, @@ -2264,6 +2373,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -2327,6 +2438,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "ShowDetail": { "Item1": 100693140, @@ -2335,7 +2448,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435688, @@ -2374,6 +2490,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693130, @@ -2382,7 +2500,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435689, @@ -2421,6 +2542,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693131, @@ -2429,7 +2552,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435690, @@ -2468,6 +2594,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693132, @@ -2476,11 +2604,20 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437051, @@ -2554,6 +2691,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -2569,7 +2708,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437052, @@ -2613,6 +2755,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688170, @@ -2628,7 +2772,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437053, @@ -2702,6 +2849,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -2717,7 +2866,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437054, @@ -2791,6 +2943,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688171, @@ -2806,7 +2960,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437055, @@ -2880,6 +3037,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -2895,7 +3054,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437056, @@ -2939,6 +3101,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688172, @@ -2954,7 +3118,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437057, @@ -3028,6 +3195,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688169, @@ -3043,7 +3212,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437058, @@ -3117,6 +3289,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100688173, @@ -3132,7 +3306,10 @@ } }, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435686, @@ -3190,6 +3367,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -3621,10 +3800,15 @@ "Z": 1, "W": 1 }, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 2, @@ -3682,6 +3866,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -3745,6 +3931,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "ShowDetail": { "Item1": 100693137, @@ -3753,7 +3941,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435688, @@ -3792,6 +3983,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693121, @@ -3800,7 +3993,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435689, @@ -3839,6 +4035,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693122, @@ -3847,7 +4045,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435690, @@ -3886,6 +4087,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693123, @@ -3894,9 +4097,15 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435687, @@ -3954,6 +4163,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": {}, "StateCursors": {}, "DefaultStateName": "", @@ -4017,6 +4228,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "ShowDetail": { "Item1": 100693136, @@ -4025,7 +4238,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435688, @@ -4064,6 +4280,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693118, @@ -4072,7 +4290,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435689, @@ -4111,6 +4332,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693119, @@ -4119,7 +4342,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268435690, @@ -4158,6 +4384,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693120, @@ -4166,11 +4394,20 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437043, @@ -4239,6 +4476,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693187, @@ -4247,7 +4486,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437044, @@ -4316,6 +4558,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693183, @@ -4324,7 +4568,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437045, @@ -4393,6 +4640,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693188, @@ -4401,7 +4650,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437046, @@ -4470,6 +4722,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693184, @@ -4478,7 +4732,10 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 }, { "Id": 268437047, @@ -4547,6 +4804,8 @@ "HJustify": 1, "VJustify": 1, "FontColor": null, + "Outline": false, + "OutlineColor": null, "StateMedia": { "": { "Item1": 100693189, @@ -4555,7 +4814,13 @@ }, "StateCursors": {}, "DefaultStateName": "", - "Children": [] + "Children": [], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } - ] + ], + "TabTable": [], + "TemplateList": [], + "ScrollbarElementId": 0 } \ No newline at end of file