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]
- Partially based on PR #306 submission, corrected for cross-compiling.
- Each platform is now able to set up output devices for logging according to its own needs.
#codereview Josh.Adams, Michael.Trepka
[CL 2249193 by Dmitry Rekman in Main branch]
TTP#322500 - UX: Add wrapping of Asset Names based on CamelCase and Underscores, not just spaces
- Refactored the existing break iterators to share the same interface so that they could be swapped out at runtime.
- Made the iterators recyclable (so you can change the string rather than have to allocate a new iterator).
- Removed the public interfaces for the different break iterator types - they're all now accessed via IBreakIterator and are created via the relevant function in FBreakIterator.
- Removed a load of duplication in the ICU break iterators.
- Made FTextLayout accept a custom line break iterator (as used by its wrapping cache).
- Fixed a crash where the legacy line or word break iterators could underflow/overflow the string range.
ReviewedBy Justin.Sargent
[CL 2248547 by Jamie Dale in Main branch]
Allocator traits for FDefaultBitArrayAllocator fixed, which properly enables TSparseArray, TSet, TMap etc. move semantics.
Other missing allocator traits added.
TPair made move-aware.
#codereview robert.manuszewski
[CL 2248406 by Steve Robb in Main branch]
TTP# 336464 - Editor: Finish the Multiline Editable Text Block
Abstracted away the SetEditableText and GetEditableText functions from SMultiLineEditableText into "text marshallers" which handle converting text to and from a TextLayout.
There are three types of text marshallers currently implemented:
* Plain-text
* Rich-text
* Syntax highlighting
Text marshallers also have the ability to inject formatting "live" (as the text changes), which is how the syntax highlighting marshaller works.
Added the ability for a run to query the information it was created with. This allows the rich-text marshaller to reconstruct the original rich-text from the styled runs.
To test this out, I've implemented a simple WYSIWYG rich-text editor demo with the following features:
* Two SMultiLineEditableText widgets showing the same source text, one using a rich-text marshaller, and one using a syntax highlighter marshaller.
* A toolbar to allow you to control the style of the selected text.
* A button to allow you to insert a hyperlink into the document.
The demo also makes use of the meta-data stored in the runs (the same information used to reconstruct the original rich-text) to read the text style of whatever is currently under the cursor, live, as the cursor is moved.
Miscellaneous fixes:
* Fixed an issue where deleting text that spanned multiple runs could leave the remaining runs in a bad state, leading to phantom text appearing (see FTextLayout::RemoveAt).
* Fixed an issue where new-lines at the end of a rich-text document would be lost (see CalculateLineRanges).
* Fixed an issue where \\r\\n line endings werenÆt being handled correctly by the rich-text parser (see CalculateLineRanges).
* Fixed an issue where the rich-text parser would treat an empty run as plain-text (see FRichTextMarkupProcessing::ParseLineRanges).
* Fixed an issue where inserting a line break when the cursor was at the end of a line containing multiple runs could sometimes fail (see FTextLayout::SplitLineAt).
* Fixed mouse cursor movement not working correctly with a FSlateHyperlinkRun (see FSlateHyperlinkRun::GetTextIndexAt).
ReviewedBy Justin.Sargent
[CL 2246838 by Jamie Dale in Main branch]
Unshelved this merge from Stephan and then completed the merge with additional fixes and testing.
Hand fixed some WorldExp compile issues due to changes to OnPaint() signature.
#Integration
[CL 2245992 by Daniel Broder in Main branch]