Commit Graph

81 Commits

Author SHA1 Message Date
Andrew Rodham
5194f5cfc0 Fixed some windows not gaining focus when opened
On mac, window activation is not guaranteed syncronously when a window is created, thus any code that opened a window, then immediately opened some focus-sensitive operation, may fail.

I've fixed up three of the most common cases (SAssetView::ItemScrolledIntoView, STextEntryPopup and STextComboPopup) so they register an active tick to focus the widget when the window gains focus (optionally controllable from the .AutoFocus() argument)

This addresses UE-12929.

[CL 2521062 by Andrew Rodham in Main branch]
2015-04-22 10:34:02 -04:00
Andrew Rodham
8ff0d8b98b Added config migration path for newer versions of the engine.
Newly installed versions of the engine will now attempt to copy the project-agnostic config settings from a previous engine installation. This happens by way of a versioned manifest that copies old versions when the manifest does not exist, or is a different version. This code path is benign for non-installed versions of the engine (or FPaths::ShouldSaveToUserDir() is false).

EditorGameAgnosticSettings and EditorUserSettings ini paths have been renamed to EditorSettings and EditorPerProjectUserSettings respectively to better convey their purpose. In general, most settings should be saved in EditorSettings (project-agnostic) so that they apply regardless of which project is open. We have some way to go migrating existing settings for this to be the case, however.

Some previously per-project configuration files are now project-agnostic (such as Editor.ini, EditorKeyBindings.ini, and EditorLayout.ini)

GEditor->Access...Settings and GEditor->Get...Settings have been removed in favor of direct access of the CDO through GetMutableDefault<> and GetDefault<> respectively. Global config ini filenames that are not set up are now neither loaded nor saved on build machines, to handle the problem of indeterminate state more generically.

This addresses UETOOL-270 (Most editor preferences should be project-agnostic)

[CL 2517558 by Andrew Rodham in Main branch]
2015-04-20 10:12:55 -04:00
Jamie Dale
48b7de223f Backing out changelist 2498725 as this is now handled by SHeaderRow rather than SSplitter
[CL 2510181 by Jamie Dale in Main branch]
2015-04-13 07:24:13 -04:00
Dan Oconnor
ff8f481e10 Modified fixes for PVS-Studio warnings, mostly adding comments to warnings that were disabled. A few reworked fixes where needed.
[CL 2507311 by Dan Oconnor in Main branch]
2015-04-09 16:42:44 -04:00
Jamie Dale
e6bd050b0e Added some test cases for the ManualSize splitter slot type
Renamed the slot type from AbsoluteSize to ManualSize to avoid overloading the term "absolute".

Fixed some resizing issues when a ManualSize slot was used alongside the other slot types.

Improved the validation used when deciding whether a drag handle cursor should be shown, as this wasn't working correctly for ManualSize slots.

#codereview Nick.Atamas

[CL 2498725 by Jamie Dale in Main branch]
2015-04-01 12:09:44 -04:00
Mike Fricker
114458bf0f Clang warning fixes: Fixed missing 'override' specifiers
- Also removed some unreferenced functions that adding 'override' revealed

PR #1002 -- Thank you, Omar007!

[CL 2498415 by Mike Fricker in Main branch]
2015-04-01 07:20:55 -04:00
PaulEremeeff
3d878d5a79 PR #996: Fixing PVS-Studio warnings (Contributed by PaulEremeeff)
I have reviewed each change carefully, but it is a large change and I could have missed something! Here is a summary of the types of changes in this CL:
 * Made nullptr checks consistent (the plurality of the changes are of this type)
 * Completed switch statements (IE, switch did not explicitly handle default case, but had unhandled enum entries - this is the second most popular type of fix)
 * Removed unused variables
 * Removed redundant initializations
 * WidgetNavigationCustomization.cpp was fixed by the owner
 * integers converted to floats where result was stored in a float
 * Removed redundent null checks (e.g. before delete statements)
 * Renamed variables to prevent non-obvious shadowing
 * Fixed use of bitwise & when checking for equality to an enum entry (which is often 0)
 * Fixes for some copy paste errors (e.g. FoliageEdMode.cpp)

[CL 2498053 by Dan Oconnor in Main branch]
2015-03-31 20:12:31 -04:00
Jamie Dale
4f94ab55b0 Changed some text input boxes to be numeric input boxes, and fixed a crash when testing an invalid item index
[CL 2484556 by Jamie Dale in Main branch]
2015-03-19 11:12:28 -04:00
Jamie Dale
d7834e7c30 Added test case for multi-line editable hint text
[CL 2481717 by Jamie Dale in Main branch]
2015-03-17 12:08:28 -04:00
Marc Audy
a425eba9ed Unify Slate's FInputGesture and Engine's FInputChord as FInputChord defined in Slate
[CL 2481648 by Marc Audy in Main branch]
2015-03-17 11:36:28 -04:00
Jamie Dale
1d8a24641d Converted Slate, SlateCore, and SlateViewer to exclusively use FText with Slate
UETOOL-213 - Minimize Slate FString -> FText conversion (remove SLATE_TEXT_ATTRIBUTE)

[CL 2458202 by Jamie Dale in Main branch]
2015-02-24 05:57:41 -05:00
Michael Noland
53c0c33afa Slate: Improve SWizard styling compatibility (now obeys text style on Next/Back buttons, and uses the success style on Next)
[CL 2458003 by Michael Noland in Main branch]
2015-02-24 01:28:52 -05:00
Marc Audy
e5ba044eb0 Fix shadowed variables
[CL 2451810 by Marc Audy in Main branch]
2015-02-19 12:13:52 -05:00
Michael Trepka
3bbe467008 Fixed Clang compile error in SWizard.h
#codereview Matthew.Griffin, Nick.Darnell

[CL 2447075 by Michael Trepka in Main branch]
2015-02-16 09:59:44 -05:00
Matthew Griffin
fa2d63dbdd [INTEGRATE] Change 2438554 by Nick.Darnell@Nick.Darnell_Dev on 2015/02/09 14:45:00
Editor - Exposing more customization options for the SWizard to allow a slew of new styling options for the buttons.

[CL 2447009 by Matthew Griffin in Main branch]
2015-02-16 09:19:33 -05:00
Ben Marsh
8907c93c99 [INTEGRATE] Change 2420282 by Mike.Fricker@MFRICKER_G3686_Alpha on 2015/01/27 09:38:23
Fix very slow compile times in Slate widgets (~75% faster compile times in Development Win64)
	- Important:  BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION only works at global scope on MSVC, not within classes (it silently does nothing)
	#codereview nick.atamas

[CL 2425715 by Ben Marsh in Main branch]
2015-01-30 10:13:53 -05:00
Richard TalbotWatkin
355fd1b234 Fixed small bug in Color Picker where original color isn't correctly restored upon pressing Cancel.
#jira UE-8185 - Clicking cancel in the level broswer color picker results in the color resetting

[CL 2421831 by Richard TalbotWatkin in Main branch]
2015-01-28 03:07:26 -05:00
Jamie Dale
55c3728d11 Added support for showing game and engine classes in the Content Browser
UE-7184 - Show game c++ classes and engine c++ classes in the content browser

The Content Browser now has extra entries for "Game C++ Classes" and "Engine C++ Classes" (with "Game" and "Engine" being renamed to "Game Content" and "Engine Content" respectively). These new folders serve as hosts for the list of available C++ modules, with each module internally mirroring the folder structure on disk.

For example:
- Game C++ Classes
    - ShooterGame
        - Classes
            - Bots
                - ShooterBot
                - ShooterAIController
                - [...]
            - [...]

The Content Browser allows you to navigate and search these classes like you can with assets, and provides convenient access to either edit an existing class, or create a new class (either within a selected folder, or derived from a selected class).

As the Content Browser only shows you known UClass types, any new classes need to be compiled into a loaded module before they will appear. This means that adding a new class will now automatically hot-reload your target module. Should you prefer to handle building and loading your modules manually, you can disable the automatic hot-reload via "Editor Settings" -> "Miscellaneous" -> "Hot Reload" -> "Automatically Hot Reload New Classes" (see UEditorUserSettings::bAutomaticallyHotReloadNewClasses).

[CL 2409386 by Jamie Dale in Main branch]
2015-01-16 15:39:47 -05:00
Nick Atamas
f5e19bef14 Slate : RelativeLayoutScale is now computed in the SlatePrepass(). ComputeDesiredSize() now takes a float parameter. API-breaking change!
[CL 2406629 by Nick Atamas in Main branch]
2015-01-14 19:04:45 -05:00
Steve Robb
0756ef15b9 Delegate comparisons deprecated, lots of other associated code deprecated, and lots of warning fixups:
* Multicast delegate Add* calls now return FDelegateHandles, and Remove* calls are now all deprecated, except for a new Remove function which takes a FDelegateHandle.
* New FConsoleManager::RegisterConsoleVariableSink_Handle and UnregisterConsoleVariableSink_Handle functions which work in terms of FConsoleVariableSinkHandle.
* Timer calls which don't take FTimerHandles are deprecated.
* FTicker::AddTicker now returns an FDelegateHandle and is removed by an overloaded Remove function.
* DEFINE_ONLINE_DELEGATE* macros now define _Handle variants of the Add/Remove functions which return/take handles.
* Various other handle-based registration changes.
* Some unity build fixes.
* Some simplification of delegate code.
* Fixes for lots of existing code to use handle-based registration and unregistration.

#codereview robert.manuszewski

[CL 2400883 by Steve Robb in Main branch]
2015-01-08 09:29:27 -05:00
Dan Hertzka
1ce19a5ffa Full rename of the Slate "active tick" system to "active timer"
[CL 2394301 by Dan Hertzka in Main branch]
2014-12-19 17:44:49 -05:00
Nick Atamas
8f53ab7b93 Slate : Added a simple test for synthetic mouse moves.
[CL 2392752 by Nick Atamas in Main branch]
2014-12-18 12:52:43 -05:00
Dan Hertzka
c042ddcb94 ---- Merging with SlateDev branch ----
Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI.

While asleep, Slate will skip the Tick & Paint pass for that frame entirely.
- There are TWO ways to "wake" Slate and cause a Tick/Paint pass:
    1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active.
        - Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick.
    2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked.

- The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action.
    - Examples include animation, async operations that update periodically, progress updates, loading bars, etc.

- An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before.

- An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick()
    - There are THREE ways to unregister an active tick:
        1. Return EActiveTickReturnType::StopTicking from the active tick function
        2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick()
        3. Destroy the widget responsible for the active tick

- Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar
- There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed.
    - The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f)

- The FCurveSequence API has been updated to work with the active tick system
    - Playing a curve sequence now requires that you pass the widget being animated by the sequence
    - The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete
    - GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end.

[CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
Nick Atamas
7ab9c67d11 Slate Test Suite : WidgetGallery is now the face of of the test suite; it is a nomad tab and comes up first.
[CL 2389802 by Nick Atamas in Main branch]
2014-12-16 07:36:00 -05:00
Nick Darnell
90e793745c Slate - ESlateCheckBoxState has been renamed to ECheckBoxState.
[CL 2384008 by Nick Darnell in Main branch]
2014-12-10 14:24:09 -05:00