RAD Studio 10.4 Sydney (Delphi + C++Builder) has been released with some significant enhancements to the Firemonkey framework. 10.4 includes new Metal API support on macOS and iOS and it brings significant performance improvements. Additionally, there is a new TBufferedLayout control which will cache painting of controls contained inside of it. The product itself received over 1000 updates and fixes across the IDE, RTL, VCL, and FMX. There are a ton of updates and new features in this release which makes it difficult to catalog them all!
Items from the release that are related to cross platform Firemonkey are:
- Apple’s new launch screen storyboard requirement.
- Delphi memory management is now unified across all supported platforms – mobile, desktop, and server.
- New styled TMemo component on the Windows platform.
- FMXLinux integration for building Linux GUI applications in Enterprise and Architect.
- TWebBrowser control for iOS is now implemented using the WKWebView API
- macOS implementation of Media Player control now used AVFoundation
- Expanded HTTP and REST Client libraries with additional HTTPS features
- LiveBindings Performance and Features Enhancements
The list of fixes applied to FireMonkey 10.4 are as follows:
TListView OnUpdatingObjects event handler not synch with datasource | Data, DataLiveBindings, FireMonkey | RSP-16014 |
Live Bindings Master/ Detail problem in FireMonkey | Data, DataLiveBindings, FireMonkey | RSP-16255 |
Access violation in dclbindcomp250.bpl when opeing a project | Data, DataLiveBindings, FireMonkey | RSP-18445 |
FMX relationship TClientDataSet TGrid program | Data, DataLiveBindings, FireMonkey | RSP-23224 |
Column index,1 out of bounds | Data, DataLiveBindings, FireMonkey | RSP-23941 |
Error formatting the TDateColumn with LiveBindings on Mac Os 64 bit | Data, DataLiveBindings, FireMonkey | RSP-27237 |
When using BindingsList, The number in the edit box is not inserted or updated after submission when the mouse clicks the up or down button of TUpDown (FMX / TSpinBox) | Data, DataLiveBindings, FireMonkey, VCL | RSP-21412 |
Interaction of Swipe gestures with button clicks | FireMonkey | AP-208 |
fmx client align apparently ignores system toolbar at bottom of screen | FireMonkey | AP-209 |
Exception when setting the text property of a TLabel if the text contains a line feed character | FireMonkey | RSB-1753 |
Integer overflow in FMX.InertialMovement (TAniCalculations FUpdateTimerCount) | FireMonkey | RSB-2555 |
Move some TControl3D methods from private section to protected | FireMonkey | RSB-2724 |
Can’t upload MacOS-64-App to AppStore because of deprecated API usage | FireMonkey | RSB-3037 |
iOS 13 Dark mode – switch event | FireMonkey | RSB-3357 |
Video playback fails on Catalina | FireMonkey | RSB-3375 |
iOS missing property list keys for Bluetooth LE development | FireMonkey | RSB-3428 |
access to macOS Documents folder is missing from the entitlements list | FireMonkey | RSB-3468 |
Audio recording is not working even though entitlement is set | FireMonkey | RSB-3469 |
DateEdit onEnter called too late | FireMonkey | RSB-3486 |
CameraControl freezes on all windows | FireMonkey | RSP-11625 |
FMX Hint | FireMonkey | RSP-13220 |
Disabling FMX Border Icon cause tips to not be displayed | FireMonkey | RSP-13663 |
Create double buffered FMX controls | FireMonkey | RSP-15576 |
Hints not shown when BorderIcons maximize is disabled. | FireMonkey | RSP-16240 |
TGrid: move Tcolumn.Layout property to public | FireMonkey | RSP-16415 |
TTetheringAppProfile.SendStream() doesn’t return false if the transmission failed everytime | FireMonkey | RSP-16430 |
TEdit ValidChars doesn’t work on Android | FireMonkey | RSP-16585 |
Delphi 10.1 Berlin FireMonkey (Mobile platform) – English and Chinese characters arrangement proble | FireMonkey | RSP-16590 |
OpenGL we always recreate the shared context just after the form is created | FireMonkey | RSP-16602 |
Memory Leak in TTextLayoutNG from FMX.TextLayout.GPU | FireMonkey | RSP-16664 |
Toggling Active state of TCameraComponent causes app to crash | FireMonkey | RSP-16812 |
TCheckCell.DrawCell should place CheckBox image into center of cell | FireMonkey | RSP-17083 |
Pan and Zoom gestures cannot be used simultaneously in Android | FireMonkey | RSP-17835 |
Push Notifications from FCM in an Android Service and iOS | FireMonkey | RSP-18006 |
Regarding Hint problem again | FireMonkey | RSP-18265 |
[Windows] FMX TEdit Component Error!!! | FireMonkey | RSP-18276 |
Regarding Control’s ClipChildren property | FireMonkey | RSP-18795 |
TBindNavigator::Visible property does not compile in C++ | FireMonkey | RSP-19037 |
Hint on TSpeedButton Result Segmentation Fault | FireMonkey | RSP-19306 |
Firemonkey Slow Paint [BUFFER IS THE SOLUTION] | FireMonkey | RSP-19432 |
GDI Leaks at FMX.Memo.Win | FireMonkey | RSP-19474 |
SharedHint Issue/Crash on mobile devices | FireMonkey | RSP-19479 |
Add TToolbar ShowHint & ParentShowHint | FireMonkey | RSP-19507 |
The size of the TTextLayout text displayed by TTextLayout::ConvertToPath and TTextLayout::LenderLayout is different. | FireMonkey | RSP-19590 |
Please change visibility of StyledMemo method | FireMonkey | RSP-19944 |
TCurrencyColumn for TGrid does not work properly | FireMonkey | RSP-20095 |
Cant get Caret position from mouse in TMemo | FireMonkey | RSP-20112 |
TGrid.OnSetValue evoke twice when click TCheckCell | FireMonkey | RSP-20125 |
VisualBindings is Slow, should be improved | FireMonkey | RSP-20325 |
Add IIsChecked interface to TRadioButton | FireMonkey | RSP-20374 |
Add IIsChecked interface to TMenuItem | FireMonkey | RSP-20410 |
Add IIsChecked interface to TSpeedButton | FireMonkey | RSP-20411 |
Multi-point gradients fail | FireMonkey | RSP-20497 |
Androidapi.JNIBridge source appears to be misaligned with binaries | FireMonkey | RSP-20651 |
Using Metal instead of OpenGL on Mac / iOS | FireMonkey | RSP-20667 |
TListView onChange called twice | FireMonkey | RSP-20828 |
FMX.Canvas.TextToPath() on Android behaves differently to Windows | FireMonkey | RSP-21137 |
wrong behave of OnClick in TLabel (Firemonkey) | FireMonkey | RSP-21187 |
OnResize event is triggered before (Frame)Create is complete | FireMonkey | RSP-21188 |
Can’t link xcode9.4 build Static Library framework in firemonkey | FireMonkey | RSP-21247 |
Invalid assumption in TTextLayoutNG.CreateFrame | FireMonkey | RSP-21249 |
TGestureEventInfo.Distance wrong on multimonitor system | FireMonkey | RSP-21326 |
TFrame.Enabled problem | FireMonkey | RSP-21447 |
TPushDeviceTokenData must contain the NSData of the token | FireMonkey | RSP-21539 |
Dont remove “Translation Tools” (FireMonkey TLang) | FireMonkey | RSP-21641 |
Ignoring value TComboTrackBar.DecimalDigits in runtime | FireMonkey | RSP-21821 |
TakeFotoFromCameraAction property Editable doesn’t work | FireMonkey | RSP-21921 |
FMX.Listbox.TComboBox Sort ignores comparer | FireMonkey | RSP-21924 |
Changes to FMX.Memo.Style.pas | FireMonkey | RSP-22406 |
dbl-click on TEdit doesn’t select last word | FireMonkey | RSP-22876 |
IF UIFileSharingEnabled is true/YES Application Loader rejects iOS-App because of type mismatch | FireMonkey | RSP-22926 |
TMemo crash triggered by EndUpdate during destruction | FireMonkey | RSP-22948 |
Hints stop displaying after form’s handle recreation | FireMonkey | RSP-23062 |
“ld” exited with code 1 when adding TetheringManager to project (Android) | FireMonkey | RSP-23073 |
TTimer can suddenly die without any notification | FireMonkey | RSP-23114 |
FMX.ListView.OnChange fires even if item doesn’t change | FireMonkey | RSP-23188 |
Rio officially only support Android 5+ but minSDK is 19 (4.4) which has problems | FireMonkey | RSP-23219 |
Android TNumberbox: onExit gets wrong value | FireMonkey | RSP-23299 |
Visibility of TFont.FFontSvc: IFMXSystemFontService | FireMonkey | RSP-23757 |
Tooltips and hints do not function for controls placed on layout containers | FireMonkey | RSP-23835 |
procedure TCustomForm.PaintBackground; must be set as virtual | FireMonkey | RSP-23841 |
Calendar causing crashes | FireMonkey | RSP-23873 |
Popup menu closes when clicking on item separator and on disabled items. | FireMonkey | RSP-23890 |
FMX [ANDROID] unable to use NDK API beyond 22 – App Crash on 23+ | FireMonkey | RSP-24016 |
MapView.OnMarkerDragEnd does not give new position | FireMonkey | RSP-24168 |
Access violation on TEdit when TEdit.ShowHint=True and there is text in TEdit.Hint and you tap on it | FireMonkey | RSP-24246 |
TCalendar OnDateSelected trigger loop | FireMonkey | RSP-24324 |
Inner borders drawn on TEdit, TCombo, TButton, TLabel …… | FireMonkey | RSP-24392 |
AV in TFMXViewBase.insertText | FireMonkey | RSP-24409 |
miss the declaration of UIAlertController/UIAlertAction in iOSApi.uiKit | FireMonkey | RSP-24740 |
Usage descriptions that could be added for macOS | FireMonkey | RSP-25593 |
Tab Stops do not follow Tab Order | FireMonkey | RSP-25964 |
fmx gpu rendering text property bug | FireMonkey | RSP-25974 |
TPopup and TScrollBox is not working well | FireMonkey | RSP-26042 |
Implement automatic dark mode switching | FireMonkey | RSP-26110 |
TCurrencyColumn wrong display | FireMonkey | RSP-26184 |
TCalendar wrong resizing with FireMonkey styles | FireMonkey | RSP-26332 |
TDateEdit IsEmpty is not persistent | FireMonkey | RSP-26353 |
TLayout Size 0 is not persistent | FireMonkey | RSP-26361 |
TBitmapCodecManager.SaveToFile raises AV | FireMonkey | RSP-26363 |
FireMonkey scaling of PopupMenu subitems doesn’t work | FireMonkey | RSP-26572 |
[macOS 64] Crash due to a tap with three fingers | FireMonkey | RSP-26642 |
Android 64 bit app crashes when calling TInAppPurchase.QueryProducts | FireMonkey | RSP-27140 |
Any iOS app cannot start without debugger | FireMonkey | RSP-27146 |
FMX.Tmediaplayer.Duration is negative. | FireMonkey | RSP-27166 |
Firemonkey App compiled with Rio 10.3.3 is not usable on a MacbookPro with macOS10.13 | FireMonkey | RSP-27197 |
InAppPurchase.QueryProducts crash App in Android64 | FireMonkey | RSP-27228 |
Wrong Decimals in NumberBox when Value is greater than 32767 | FireMonkey | RSP-27282 |
incorrect declaration export function JSStringCreateWithUTF8CString | FireMonkey | RSP-27340 |
NSLocale missing a number of methods | FireMonkey | RSP-27353 |
FMX.TListBoxGroupHeader – default FALSE value in TextSettings.WordWrap not works | FireMonkey | RSP-27470 |
Firemomkey – android. Onkeyup event not called | FireMonkey | RSP-27496 |
Support newer Android NDK than 17 | FireMonkey | RSP-27509 |
Bad TLabel text rendering quality on some Android devices | FireMonkey | RSP-27520 |
TTreeView expanding items during begin update does not work | FireMonkey | RSP-27739 |
InputQuery on iOS should not show first prompt as message when using two prompts | FireMonkey | RSP-27777 |
ITMS-90809: Deprecated API Usage UIWebView warning from Apple | FireMonkey | RSP-27902 |
Bug in rendering ListView items | FireMonkey | RSP-27917 |
TNumberCell. Shortcoming in the validation of valid characters | FireMonkey | RSP-28057 |
FMX and VCL default exception handlers produce uninformative error messages with EAggregateException (as raised by ITask.Wait etc.) | FireMonkey | RSP-9539 |
Circular references when using 3D controls | FireMonkey, FireMonkey3D Components | RSP-9785 |
FMX Hint Cannot display if the form is transparent | FireMonkey, FireMonkeyComponents | RSP-12907 |
C++Builder 10 Seattle – Hint function will fail | FireMonkey, FireMonkeyComponents | RSP-13065 |
Hint is not shown if there is no Maximize button in form frame | FireMonkey, FireMonkeyComponents | RSP-13218 |
classes.dex contains superfluous gingerbread dialog classes | FireMonkey, FireMonkeyRuntime | RSP-13159 |
TApplicationEvent.WillBecomeInactive is called after TApplicationEvent.EnteredBackground for the Android platform | FireMonkey, FireMonkeyRuntime | RSP-18686 |
provider_paths.xml is missing entries | FireMonkey, FireMonkeyRuntime | RSP-26950 |
Performance optimizations – TStyledControl.FindStyleResource | FireMonkey, FireMonkeyStyles | RSP-10814 |
LongTap ​gesture event in Android has no TInteractiveGestureFlag.gfEnd​ | FireMonkey, IDE | RSP-23806 |
BannerAd header error on Windows targeted android project | FireMonkey, Install | RSP-20929 |
TNotificationCenter.PresentNotification not working on iOS10 devices (for R104) | FireMonkey, RTL | RSP-16762 |
Multi-platform App crashes on OSX when Abort is called and ‘posix.stdlib’ is in ‘uses’ section | FireMonkey, RTL, RTLDelphi | RSP-19307 |
GLHasAnyErrors is a little useless as it’s not show the error code | FireMonkey, RTL, RTLDelphi | RSP-21577 |
The iOS framework interface for NSNotification is missing ‘object’ property | FireMonkey, RTL, RTLDelphi | RSP-24206 |
Light and dark theme flag for VCL and FMX styles | FireMonkey, VCL | RSP-21531 |
Replace Internet Explorer based TWebBrowser with IWebView2 | FireMonkey, VCL | RSP-27543 |
Head over and check out the full list of updates for Delphi 10.4 Firemonkey.
All good except now you can’t select where to install it. It goes to default installation folder in Program Files without having the possibility like before to select your custom folder. I hate that.