GSoC 2024: Improvements to the Blender macOS User Interface Experience - Weekly Reports

Week 5

June 24 - 28

This Week:

  • Finished implementing colored macOS Titlebar Client-Side window decorations that follow the Blender theme



    See the Pull Request for other screenshots, videos and details

  • Objective-C Refactor Research
    The original plan for this week was to publish an initial GHOST Cocoa/Objective-C Refactor PR to serve as a clean base for the above macOS client-side decorations PR. However, as I started to work on the refactor, the scope of the task grew beyond what I anticipated for a simple PR, as the GHOST and overall Blender Objective-C code is largely outdated, not only in terms of style, but also in terms of API usage and memory management (we currently use the “old” Obj-C MRR memory management style, but newer code was written with the expectation of having automatic reference counting enabled, causing leaks among other major inconsistencies).
    I thus decided to postpone this refactor, in favor of publishing the above PR, as to then be able to focus on it in one block, going beyond simple stylistic changes (see Next Goals below) with the goal of providing Blender with an updated, modern and stable Objective-C software layer.

  • Additional Researches on macOS Universal Binary builds (see previous messages in this thread)

Next Goals:

  • Objective-C/Cocoa Refactor - In multiple steps/PRs:
    • 1st: Stylistic Refactor - Using @autoreleasepool instead of NSAutoReleasePool, includes/imports and comment cleaning, enforcing dot notation for setting properties (using foo.thing = c instead of [foo setThing:c]), etc…
    • 2nd: Memory Management - Enabling and switching to Automatic Reference Counting (ARC) and rewriting functions in that sense, fixing leaks and over-retains.
    • 3rd: Functional Refactor - Clean-up and switching to newer APIs, eventually leading to feature advancements such as multi-monitor window sizing and placement support.
  • macOS Universal Binaries
    • Experiment with adding a splash screen notice when Blender is ran through Rosetta to warn against reduced performances
    • Implement Universal Binaries for macOS Steam packaging delivery
  • Misc macOS/UI bugfixes, such as:
    • Fix floating window title not properly updating on editor changes
    • Fix eyedropper not working outside of the macOS Blender window anymore
  • Following up on Colored Titlebar macOS decorations, continue the work on Inline Titlebar decorations (see previous reports)
9 Likes