Commit Graph
352 Commits
Author SHA1 Message Date
daboe01 05bc99690d Merge branch 'main' into Aristo3 2026-10-25 16:11:36 +01:00
David Richardson dc6bebd7eb AppKit: Add magnification support to CPScrollView and zoom controls to TextEditor
CPScrollView previously lacked magnification support, preventing document
zooming and leaving view scaling infrastructure without practical test coverage.
Additionally, views resetting to a 1.0 scale retained stale CSS transform properties,
and legacy cibs compiled via nib2cib omitted explicit magnification limits,
breaking zoom functionality in older archives.

* AppKit/CPScrollView.j:
  - Implement magnification methods and properties (`magnification`, `setMagnification:`, `setMagnification:centeredAtPoint:`, `allowsMagnification`, `minMagnification`, and `maxMagnification`) modelled on NSScrollView, with keyed archiving.
  - Scale clip view bounds and synchronize resizing document view widths.
  - Define standard Cocoa default limits (0.25 and 4.0) as named constants.
  - Implement robust decoding validation to assign default limits to unset or invalid archive values and reject non-positive magnification inputs, ensuring full compatibility with legacy cibs.

* AppKit/CPView.j:
  - Remove stale CSS scale styling when a view's scale factor returns to 1.0.

* Tests/AppKit/CPScrollViewTest.j:
  - Add comprehensive unit tests covering magnification scaling, archiving, and fallback decoding for unconfigured limits.

* Tests/Manual/TextEditor/DocumentWindowController.j:
  - Implement zoom action handlers (`zoomToLevel:`, `zoomToActualSize:`, `zoomIn:`, and `zoomOut:`) driven by menu item tag values.

* Tests/Manual/TextEditor/Resources/MainMenu.xib, MainMenu.cib:
  - Add View menu options for Actual Size, Zoom In, Zoom Out, and explicit Zoom Levels (25% to 200%).

* Tests/Manual/TextEditor/WORKLIST.md:
  - Mark zoom functionality as tested; log discovered scaling edge cases as open items.

CPScrollView and TextEditor now support robust document magnification from 25% to 200%, validating core view scaling mechanics.
2026-10-24 17:57:21 -06:00
daboe01 3ad080b788 Merge remote-tracking branch 'upstream/main' into Aristo3 2026-10-24 22:00:51 +02:00
David Richardson 15268c45c4 AppKit: Remove remaining #if DEBUG conditionals
Eliminate conditional compilation for debug builds across AppKit.

* CPAnimationContext: Remove debug logging traces.
* _CPCibCustomObject, _CPCibCustomView, _CPCibWindowTemplate: Convert unknown-class log messages to unconditional warnings.
* CPView: Convert duplicate-subview assertion to an unconditional check.
* _CPObject+Theme: Convert array-as-state assertions to unconditional checks and remove obsolete performance TODOs.

AppKit is now free of C-style preprocessor directives.
2026-10-09 16:47:46 -06:00
David Richardson 7f38fbe7c7 Tests: promote CPDOMDisplayServer.h to a real source file
- the 11 display-server primitives become plain functions in
  Platform/DOM/CPDOMDisplayServer.j; bodies verbatim from the macro
  definitions; the header was force-included into every AppKit
  compilation by the legacy build and invisible to capp-build
- CPView.j, CPImageView.j, _CPDisplayServer.j import the new file;
  this was the last header in either framework
- CPDOMDisplayServerTest: the raw #include replaced by the
  framework-qualified import
2026-10-06 18:50:09 -06:00
David Richardson eda11e38ba Merge main: Tests/Manual revival, functional fixes
Merges 71 commits from main. Headline content: the Tests/Manual
integration test suite revived and reorganized after long disuse
(renames, new applications, updated cibs), restoring a large
integration validation surface. Functional fixes include replacing
unload-based termination with pagehide (back/forward cache
compatibility) and hardening CPTextField's input-element handling.

Conflict resolutions (local versions retained):

- AppKit/CPTextField.j: main's input-element logic carried, with this
  branch's preprocessor-removal sweep re-applied on top. Main's
  conditionals are re-expressed as runtime CPDOMAvailable guards; the
  _inputElement method-definition gate is retained.

- AppKit/Platform/CPPlatform.j: the DOM platform implementation stays
  inlined under the PLATFORM(DOM) gate. The split layout breaks the
  legacy build: the include fragment is compiled standalone by the
  source walk and cannot resolve its superclass. Main's pagehide
  termination fix is ported into the inlined section; the restored
  AppKit/Platform/DOM/CPPlatform.j fragment is deleted.

Verified: legacy build green through Foundation, AppKit and Tools;
Tests/Manual suite passing.
2026-10-01 14:44:51 -06:00
daboe01 bd572d8059 Merge remote-tracking branch 'upstream/main' into Aristo3 2026-08-27 22:38:20 +02:00
daboe01 bf76c7d2c7 Merge pull request #3241 from daboe01/setBoundsSize-fix
Fixed: scale accumulation in scaleUnitSquareToSize: when setting bounds size
2026-08-27 22:37:45 +02:00
daboe01 301e940236 formatting 2026-08-26 20:56:38 +02:00
David Richardson 45fd97d980 AppKit: complete CPView PLATFORM conditional removal (part 2)
- CPView.j: remaining 17 PLATFORM blocks resolved; purely mechanical
  translation to runtime CPDOMAvailable guards, except the choice of
  guard form (wrapped, compound, or early-return) per site
- No PLATFORM(DOM) conditionals remain in CPView.j; one #if DEBUG
  block remains and is out of scope for this change
- work-in-progress towards complete removal of CPP directives
2026-08-21 15:18:12 -06:00
David Richardson 557e4d7bd2 AppKit: replace PLATFORM(DOM) conditionals with runtime checks (CPView, part 1)
- Add CPDOMAvailable to CPCompatibility.j: canonical documented DOM capability test, bare global assignment
- CPView.j: 13 of 30 PLATFORM blocks resolved. Method bodies now
  guarded at runtime (wrapped, compound, or early-return forms); DOM vars and ivars declared without resort to CPP conditionals
- work-in-progress towards complete removal of CPP directives
2026-08-21 15:05:07 -06:00
David Richardson e5c34e3dd7 Remove NativeHost platform target; require CommonJS/Node for tooling
Cappuccino previously supported three platform contexts behind the
PLATFORM() preprocessor macro: Browser, CommonJS/Node, and a NativeHost
target. NativeHost is no longer supported; this removes it and
consolidates on Browser (for the app) and CommonJS/Node (still needed
by the toolchain itself, for theme compilation and testing).

PLATFORM(DOM) conditionals throughout AppKit governed both distinctions
at once - Browser vs NativeHost, and separately, DOM-dependent code vs
the CommonJS/Node build. Each conditional was reviewed individually:
NativeHost-only branches were removed, while branches needed for
CommonJS/Node were kept intact rather than collapsed to Browser-only.

Also included, found in the course of this work:
- Fixed two pre-existing duplicate instance-variable declarations
  (_ephemeralSubviews in CPView, _scrollingTimer in CPTextView)
- Added a missing @import for CPTextContainer.j in CPTextView.j so
  it resolves when compiled outside the full framework bundle
- Merged two Platform/DOM/*.j files into their parents to resolve a
  build-tool basename collision, preserving the CommonJS fallback path
2026-08-12 13:25:52 -06:00
daboe01 69c8c3d0a2 Merge remote-tracking branch 'upstream/main' into Aristo3 2026-07-25 19:26:39 +02:00
David Richardson 1a9a42ff54 Replace #pragma mark with // MARK:
Replace objc directive with native Javascript version // MARK: to facilitate elimination of preproccsing pass.
2026-07-21 15:15:53 -06:00
daboe01 cff2fd8ed9 optimized version 2026-06-20 17:51:11 +02:00
daboe01 e6e676c91e more safety checks 2026-06-20 15:00:21 +02:00
daboe01 5fd2f49266 safety checks 2026-06-20 14:55:27 +02:00
daboe01 10fb3e6d31 Fixed: scale accumulation in scaleUnitSquareToSize: when setting bounds size 2026-06-20 14:35:15 +02:00
daboe01 9709ca8b52 new: ThemingAdditions and HUD autosetter 2026-02-12 18:18:25 +01:00
daboe01 266251ffbf new: HUD support 2026-01-10 13:24:33 +01:00
daboe01 3c1c01fd9f Merge remote-tracking branch 'upstream/main' into Aristo3 2026-01-02 21:53:59 +01:00
daboe01 c7f3dd5b0f Fixed: [CPView addSubview:] was ignoring bounds origin for DOM positioning 2025-12-07 11:21:11 +01:00
Martin Carlberg b92459ba38 Merge pull request #3121 from daboe01/new-CPView-is-missing-rotateByAngle-method
Fixed: CPView was missing rotateByAngle: method
2025-09-12 12:56:13 +02:00
daboe01 51e9737114 improved: documentation 2025-09-11 18:26:53 +02:00
daboe01 a9aa15d63f fixed CALayer class name 2025-06-26 17:52:11 +02:00
daboe01 e6d2d840e9 fixed: CALayer autocreate 2025-06-26 17:51:26 +02:00
daboe01 4963127c31 formatting 2025-06-26 17:49:36 +02:00
daboe01 0835f18721 new: manual test 2025-06-26 10:01:37 +02:00
daboe01 8231cbc55c fixed: wrong core animation symbol names 2025-06-26 08:01:45 +02:00
daboe01 7d1df21b0e removed unused variable 2025-06-22 22:57:59 +02:00
daboe01 bbb87b4970 removed: wrong code 2025-06-22 22:56:35 +02:00
daboe01 14d9bb795d fixed: wrong code 2025-06-22 22:55:41 +02:00
daboe01 2eb1d1bfb9 fixed: CPView was missing rotateByAngle: method 2025-06-22 22:51:26 +02:00
daboe01 e0a8fa3fde formatting 2025-06-22 21:34:19 +02:00
daboe01 64f4b0fc13 fixed: accidental removal of commented out code 2025-06-22 21:32:48 +02:00
daboe01 c28a05e968 fixed logic 2025-06-22 21:28:37 +02:00
daboe01 170d6ac2e7 fixed wrong logic 2025-06-22 21:19:03 +02:00
daboe01 64cc36a1ac new logic 2025-06-22 21:06:47 +02:00
daboe01 af61bcb93f fixed: wrong logic 2025-06-22 20:45:55 +02:00
daboe01 1f24e89c1b fixed wrong logic 2025-06-22 20:35:11 +02:00
daboe01 b12aee53d3 fixed: subview's window setting mus happen BEFORE _setSuperview 2025-06-22 19:47:19 +02:00
daboe01 d3cc6c29c9 Merge branch 'main' into Aristo3 2024-05-24 16:07:32 +02:00
daboe01 f642330306 new: support for releasedWhenClosed in CPWindow 2023-12-23 19:08:38 +01:00
Michael Bach 6c6f69d4e5 CPView.j, fix typo: _ephereralSubviews → _ephemeralSubviews
This typo occurs only once, line #3462 references the correct spelling.
2022-11-01 18:04:21 +01:00
daboe01 ae42acaef3 Merge branch 'pl_2939' into Aristo3 2022-03-23 06:53:00 +01:00
Martin Carlberg 3e83bd2363 Revert "Fixed: Before this PR, nib2cib failed if a color well or a scrollable text view was added in a CPBox (#2994)"
This reverts commit 6544aff88e.
2022-03-21 16:25:24 +01:00
Martin Carlberg 5c91a08eaf Revert "Fixed: Before this PR, nib2cib failed if a color well or a scrollable text view was added in a CPBox (#2994)"
This reverts commit 6544aff88e.
2022-03-21 16:24:17 +01:00
Didier Korthoudt 48e786e8b5 Fixed: This PR adapts views and custom views decoding to fix "not ready view" bugs (#2917) 2022-03-21 15:50:44 +01:00
David Siaw 73eeda3c09 Fixed: strange lines that appear in Google Chrome (#2863) 2022-03-21 15:14:14 +01:00
Didier Korthoudt 6544aff88e Fixed: Before this PR, nib2cib failed if a color well or a scrollable text view was added in a CPBox (#2994) 2022-03-21 13:29:31 +01:00