Dear developers,
In Cinema 4D 2025.3.X we unfortunately discovered a regression that may require actions from plugin vendors to keep your plugins functional for 2025.3.X releases. The regression impacts both the Cinema 4D Python and C++ API.
2025.3.0 changed the focusing behavior of GeUserArea
, possibly altering the runtime behavior of plugins. This direct change was not intended and is a regression in the Cinema 4D API, which we will fix with the next minor release of Cinema 4D. We apologize for the inconvenience this may cause and want to clarify the situation.
Regression
Attaching a user area with default flags such as shown below,
def CreateLayout(self):
self.SetTitle("My Dialog")
self.AddUserArea(self.ID_USER_AREA, c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT, 0, 0)
self.AttachUserArea(self._ua, self.ID_USER_AREA)
return True
Bool MyDialog::CreateLayout() override
{
SetTitle("My Dialog");
AddUserArea(ID_USER_AREA, BFH_SCALEFIT | BFV_SCALEFIT, 0, 0);
AttachUserArea(_ua, ID_USER_AREA);
return true;
}
will not handle the focus state anymore, which in turn will then cause some events such as keyboard events not to be issued anymore to the user area.
The change itself was intentional but should not have been issued in this form. It was intended as a bugfix, because it was unintentional that all user areas are always focusable, no matter if HANDLEFOCUS
was passed or not. To revert to the pre 2025.3.X behavior, one will have now to use the HANDLEFOCUS
flag.
Action from Maxon
We will fix the issue by reverting the change with the upcoming minor release of Cinema 4D. A hotfix does not make sense in this case, as it would arrive at the same time as the minor release. With Cinema 4D 2026.0.0, we will then apply the change again, as the focus behavior of the user area is a bug which must be fixed.
This back and forth might seem confusing, but we are committed to keeping our API stable and predictable, which is why we will fix the issue in the next minor release and then apply the change again with Cinema 4D 2026.0.0.
Action for 3rd Parties
As a plugin vendor using user areas which are subject to the issue, by for example listening for keyboard inputs, you have two options:
- Keep using the binaries or Python scripts you already issued to customers and inform them that your plugin will malfunction in the context of Cinema 4D 2025.3.0 and 2025.3.1 due to a bug in the Cinema 4D API, recommending customers to fall back to 2025.2.1 in the context of your plugin. In the upcoming minor release of Cinema 4D 2025 your plugin will then work again as before.
- Apply the fix shown below, which will then make your plugin work with all versions of Cinema 4D 2025.X.X.
def CreateLayout(self):
self.SetTitle("My Dialog")
self.AddUserArea(self.ID_USER_AREA, c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT, 0, 0)
# We can always blindly set the flag, because in prior releases, even when the flag was not
# set explicitly, it acted as if it was set. This will act the same across all versions of 2025.
self.AttachUserArea(self._ua, self.ID_USER_AREA, myOtherFlags | c4d.USERAREAFLAGS_HANDLEFOCUS)
return True
Bool MyDialog::CreateLayout()
{
SetTitle("My Dialog");
AddUserArea(ID_USER_AREA, BFH_SCALEFIT | BFV_SCALEFIT, 0, 0);
// Same here, you can compile this code for the 2025.0.0 SDK, and it will work everywhere.
AttachUserArea(_ua, ID_USER_AREA, myOtherFlags | USERAREAFLAGS::HANDLEFOCUS);
return true;
}
We have not yet fully decided how we will handle the change in Cinema 4D 2026.0.0, we might make HANDLEFOCUS
a default flag for user areas, and with that then have the same surface level behavior as in 2025.2.1 (but you could then still disable an UA being focusable it if you wanted to).
Thank you for your understanding,
The Maxon SDK Team