Commit Graph

65 Commits

Author SHA1 Message Date
Jamie Dale
9a1de2b5fe Fixed a crash when an IME was active when the editor was started
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]
2014-08-11 12:45:31 -04:00
Max Preussner
2e68c2bd86 Core: Renamed FCOMPtr to TComPtr
#CodeReview: saul.abreu

[CL 2239369 by Max Preussner in Main branch]
2014-07-31 23:20:15 -04:00
Marcus Wassmer
07fd4b83b0 Non monolithic projects will load AutoSDK environment properly.
#codereview Josh.Adams, dmitry.rekman, michael.trepka, ben.marsh

[CL 2227662 by Marcus Wassmer in Main branch]
2014-07-22 17:59:23 -04:00
James Moran
7879e0f2e1 Adding IsMouseAttached function to Applicatoin base class.
Added function to detect connected mice on Win64/Win32
Fixes ttp #339741

[CL 2223850 by James Moran in Main branch]
2014-07-18 16:14:21 -04:00
Jaroslaw Surowiec
f0b9bf883b CrashDebugHelper
- 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]
2014-07-14 06:53:12 -04:00
Justin Sargent
4f1b7f7dc7 Moved the Launcher's taskbar button code into a windows specific class. Refactored the application to allow platforms to inject special behavior easier.
[CL 2206734 by Justin Sargent in Main branch]
2014-07-13 13:24:29 -04:00
Justin Sargent
988cea32f5 Fixed the taskbarlist progress indicator to properly show indeterminate state.
[CL 2192437 by Justin Sargent in Main branch]
2014-07-11 16:14:34 -04:00
Justin Sargent
ede844edcf The Windows Application now has minimal TaskbarList support. Currently, the only feature implemented is the ability to present some sort of progress bar with the taskbar button.
[CL 2192336 by Justin Sargent in Main branch]
2014-07-11 15:44:16 -04:00
Steve Robb
53cce1b09f Variadic template support enabled in VS2013.
#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]
2014-07-04 12:17:56 -04:00
Marc Audy
cd44aa5816 Disable Windows accessibility features while game is running - more or less a port of the UE3 implementation
[CL 2131021 by Marc Audy in Main branch]
2014-07-03 13:29:50 -04:00
Jaroslaw Palczynski
f07554e084 Compiler pre-setup includes clean-up.
#codereview Robert.Manuszewski

[CL 2130311 by Jaroslaw Palczynski in Main branch]
2014-07-03 07:23:05 -04:00
Matthew Griffin
7b37c1507d Preventing full data from being cooked in streaming sounds
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]
2014-07-03 06:07:49 -04:00
Dmitry Rekman
a8a3b2e2fe Support from reading binary streams from pipes.
External contribution by SRombauts (Sebastien.Rombauts), PR 203 (with changes): https://github.com/EpicGames/UnrealEngine/pull/203

#codereview Josh.Adams, Michael.Trepka, Mark.Satterthwaite

[CL 2123296 by Dmitry Rekman in Main branch]
2014-07-01 10:18:20 -04:00
Jamie Dale
9865de0eef Implemented multi-line editable text IME support
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]
2014-06-27 14:33:03 -04:00
Jamie Dale
11049aa02e Added a custom icu::CharacterIterator implementation, which will attempt to interface with FText/FString as efficiently as it can based on the native platform string format.
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]
2014-06-25 06:42:38 -04:00
Marcus Wassmer
786a32da03 Upgrade Morpheus to support latest prototype and SDK. Older prototypes are deprecated.
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]
2014-06-24 14:17:18 -04:00
Jamie Dale
0da4c45a14 The editor now sends a Machine ID and the last used Epic Account ID when started
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]
2014-06-23 05:11:34 -04:00
Ben Marsh
8ffc82bbd0 Add concept of an 'API version' for modules, which is used for determining compatibility of DLLs. By default, the API version is the current changelist number, but can be set to previous changelists when making hotfixes. The API version number is stored in a special resource section for DLLs on Windows, and in the current-version field for dylibs on Mac.
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]
2014-06-20 13:02:34 -04:00
Marc Audy
813c29188b Add utility function in Platform Math to get the min or max out of an array
Expose BP functions to find the Min/Max int, float, or byte from an array

[CL 2110432 by Marc Audy in Main branch]
2014-06-19 10:27:31 -04:00
Ben Marsh
54a0743a08 Include stdint.h on Windows for consistency with other platforms. Fixes build issue with ICU disabled.
[CL 2110385 by Ben Marsh in Main branch]
2014-06-19 09:32:24 -04:00
Andrew Copland
0f9b0f6c75 Add method to check if we're running on battery and lock to VSync accordingly
#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]
2014-06-18 09:15:58 -04:00
Jaroslaw Palczynski
3a35a8dd0e Deprecate and remove checkAtCompileTime.
#ttp 337754
#codereview Robert.Manuszewski

[CL 2106862 by Jaroslaw Palczynski in Main branch]
2014-06-16 08:04:54 -04:00
Ryan Gerleve
60a1d21a17 Fix or suppress VS2013 static analysis warnings in the Core module.
#codereview mike.fricker

[CL 2104834 by Ryan Gerleve in Main branch]
2014-06-13 14:35:35 -04:00
Jaroslaw Palczynski
ce0aa1be23 UE4 Refactoring. Changed OVERRIDE and FINAL macros to keywords override and final.
Some missing changes from last submit plus deprecated message when using macros.

[CL 2104460 by Jaroslaw Palczynski in Main branch]
2014-06-13 08:09:04 -04:00
Jaroslaw Palczynski
ebce413232 UE4 Refactoring. Changed OVERRIDE and FINAL macros to keywords override and final.
[CL 2104397 by Jaroslaw Palczynski in Main branch]
2014-06-13 06:14:46 -04:00