TTP# 340272 - IME crash when typing Korean in the Description TextBlock of SSourceControlSubmitWidget
- FWindowsTextInputMethodSystem::Initialize now checks if an IME is active when it's called, and will update the active IME state appropriately.
- Changed TSF to use AssociateFocus rather than SetFocus to fix some issues where the IME would become active incorrectly when the window focus was changed.
- Some belt-and-braces fixes for the IMM based code path (which was what was showing the crash, even though a TSF based IME was active).
#codereview Saul.Abreu, Max.Preussner
[CL 2251530 by Jamie Dale in Main branch]
- Minidump diagnostics run from the crash processor will always use the PDB cache and the MDD from the main branch
- Reimplemented PDB cache to support UE4 releases that are stored on the network drive
- Cleaned up a bit code, removed old or obsolete functionality
- PDB Cache is disabled by default, can be only enabled through the command line (should fix issues related to "\\Device\\Harddisk3\\DR3", somehow caused by the bad flash device driver when F:\\ is a generic flash reader?)
#codereview Bob.Tellez, James.Hopkin, Robert.Manuszewski
[CL 2212226 by Jaroslaw Surowiec in Main branch]
#change Platform macro changed to enable variadics for 2013.
#fix TUniqueObj 'multiple default constructors' compilation error fixed.
#add TUniqueObj supports the same number of forwarded arguments as TUniquePtr for the non-variadic case.
#codereview robert.manuszewski,james.hopkin
[CL 2138412 by Steve Robb in Main branch]
Added platform feature/property for audio streaming so that it's not used on platforms that don't support it yet
Prevent full data from being cooked if sound is streaming AND streaming is supported on the cooked platform
Prevent streaming chunks from being cooked if cooked platform doesn't support streaming
Prevent the Resource data from being initialized and full data size being added to stats if sound is streaming
[CL 2130171 by Matthew Griffin in Main branch]
TTP# 336464 - Editor: Finish the Multiline Editable Text Block
This is essentially the same as the version for SEditableText, but it also has to deal with converting the FTextLocation points used within a text layout, into a int32 as used by the IME interface (as the IME always works with the document as a single flat string).
To make this easier, there's now a FTextLayout::FTextOffsetLocations helper class which provides functions to let you convert between the two coordiante spaces. A FTextOffsetLocations can either be generated as an optional parameter to FTextLayout::GetAsText, or, via GetTextOffsetLocations if you don't need the string itself.
This also fixes some general IME issues that were affecting both the multi-line and single-line editable text:
1) TSF based IMEs no longer allow you to move the cursor outside of the composition range (this is consistent with how the other IME backends work).
2) IMM based IMEs will now remove the composition text from the document if you choose to cancel your composition.
3) All IMEs will now finish their current composition and start a new one if you move the cursor via the mouse.
ReviewedBy Justin.Sargent
[CL 2119729 by Jamie Dale in Main branch]
TTP# 336464 - Editor: Finish the Multiline Editable Text Block
There are two versions of this, which are typedef'd to FICUTextCharacterIterator based on the current platform string traits.
FICUTextCharacterIterator_NativeUTF16 is used on platforms where TCHAR is already in a native UTF-16 format (as used by ICU), so performs no conversion and just passes the internal string data through to an icu::UCharCharacterIterator. Windows, Xbox One, and PS4 use this iterator.
FICUTextCharacterIterator_ConvertToUnicodeString is used on platforms where TCHAR is not in a native UTF-16 format, and performs a conversion to an icu::UnicodeString which is then passed into an icu::StringCharacterIterator - this has the same behaviour and cost as every platforms had prior to this change. OS X, iOS, Android, and Linux use this iterator.
Other changes:
- Renamed the Convert functions in ICUUtilities to either ConvertString or ConvertChar32 to make it clearer what they were doing.
- Removed the ConvertChar32 functions which were attempting to convert a UChar32 back to a TCHAR (as this is neither safe or sane).
- Added IsUnicodeEncoded to FGenericPlatformString. This is used along with the sizeof(TCHAR) at compile time to work out if the platform is using UTF-16.
ReviewedBy Justin.Sargent
[CL 2116572 by Jamie Dale in Main branch]
Incorporate fixes from CCP.
Add full contrller support through HMDServer for PC emulation.
#codereview Nick.Whiting,JJ.Hoesing
[CL 2115560 by Marcus Wassmer in Main branch]
TTP# 337511 - ANALYTICS: Store Epic Account ID and Machine Unique GUIDs on Users Machine. Send with Every Event.
This works differently to what the TTP originally asked for, but I've checked with MaxP/MattK/WesH and we're okay with the way this works, as it avoids an annoyingly tight dependency between the analytics and the editor.
On the request of MattK, I also changed FPlatformMisc::GetRegistryString to be FPlatformMisc::GetStoredValue and added a corresponding FPlatformMisc::SetStoredValue. These will store generic key->value pairs using a platform specific store (the registry on Windows, and an INI file on other platforms).
DesktopPlatform uses these to provide access to the Machine ID and Epic Account ID (the Epic Account ID is set when the user logs into the Launcher).
The Editor sends an "Editor.ProgramStarted" event containing this data. This can then be tied to the current analytics session via the analytics session ID.
Tested on Windows and OS X.
ReviewedBy Thomas.Sarkanen, Max.Preussner
[CL 2113818 by Jamie Dale in Main branch]
In contrast to the previous system, this does not require special-casing for Rocket builds and will work correctly for nightlies and other out-of-band releases. It also removes the requirement for games to adhere to a strict format of version string on Windows for the editor to be able to load them, since the new data is injected indepdendently of the default resource by UBT.
#codereview Robert.Manuszewski, Michael.Trepka
[CL 2111949 by Ben Marsh in Main branch]
#ttp 337189 Laptops should throttle to 60 hz in editor to reduce battery drain
#doc added "r.DontLimitOnBattery" CVar, 0==Limit performance on device with battery, 1== Do not limit performance.
reviewers Thomas.Sarkanen, Mark.Satterthwaite
[CL 2109182 by Andrew Copland in Main branch]