Skip to content
This repository has been archived by the owner on Nov 24, 2024. It is now read-only.

Commit

Permalink
Fix a bug that cause the crash when exiting editor.
Browse files Browse the repository at this point in the history
  • Loading branch information
Jack-Myth committed Aug 28, 2018
1 parent f7fdf2a commit b359851
Show file tree
Hide file tree
Showing 4 changed files with 129 additions and 9 deletions.
80 changes: 80 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Visual Studio 2015 user specific files
.vs/

# Visual Studio 2015 database file
*.VC.db

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app
*.ipa

# These project files can be generated by the engine
*.xcodeproj
*.xcworkspace
*.sln
*.suo
*.opensdf
*.sdf
*.VC.db
*.VC.opendb

# Precompiled Assets
SourceArt/**/*.png
SourceArt/**/*.tga

# Binary Files
Binaries/*
Plugins/*/Binaries/*

# Builds
Build/*

# Whitelist PakBlacklist-<BuildConfiguration>.txt files
!Build/*/
Build/*/**
!Build/*/PakBlacklist*.txt

# Don't ignore icon files in Build
!Build/**/*.ico

# Built data for maps
*_BuiltData.uasset

# Configuration files generated by the Editor
Saved/*

# Compiled source files for the engine to use
Intermediate/*
Plugins/*/Intermediate/*

# Cache files for the editor to use
DerivedDataCache/*

# Content shouldn't be included
Content
48 changes: 43 additions & 5 deletions Source/UE4EditorCustomize/Private/UE4EditorCustomize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -639,9 +639,42 @@ FString FUE4EditorCustomizeModule::Uint8ToExtension(uint8 Extension)
}
}

void FUE4EditorCustomizeModule::CacheOriginalBrushes()
{
FSlateStyleSet* EditorStyles = (FSlateStyleSet*)&FEditorStyle::Get();
const FName BrushesName[]=
{
"Graph.Panel.SolidBackground",
"ToolPanel.GroupBorder",
"ToolPanel.DarkGroupBorder",
"SCSEditor.TreePanel",
"SettingsEditor.CheckoutWarningBorder",
"DetailsView.CategoryTop_Hovered",
"DetailsView.CategoryTop",
"DetailsView.CategoryMiddle_Hovered",
"DetailsView.CategoryMiddle",
"DetailsView.CategoryMiddle_Highlighted",
"DetailsView.CollapsedCategory_Hovered",
"DetailsView.CollapsedCategory",
"DetailsView.CategoryBottom",
"DetailsView.AdvancedDropdownBorder",
"Toolbar.Background"
};
for (const FName& CurName : BrushesName)
{
const FSlateBrush* tmpCachedBrush = EditorStyles->GetBrush(CurName);
CachedOriginalBrushes.FindOrAdd(CurName) = tmpCachedBrush;
}
}

void FUE4EditorCustomizeModule::StartupModule()
{
// This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module

//Cache Original Brushes first.
//Prepare for ShutdownModule()
CacheOriginalBrushes();

UEditorCustomizeSetting* StyleSettings = GetMutableDefault<UEditorCustomizeSetting>();
GetMutableDefault<UEditorStyleSettings>()->bUseGrid = StyleSettings->EditorUseGrid;
ApplyCoreStyle(StyleSettings);
Expand All @@ -667,8 +700,10 @@ void FUE4EditorCustomizeModule::StartupModule()

void FUE4EditorCustomizeModule::ShutdownModule()
{
FEditorStyle::ResetToDefault();
FCoreStyle::ResetToDefault();
//Restore Cached Brush
//Editor will delete all editor brushes when exit.
//So if the brushes didn't restore, It will cause Editor Crash.
RestoreCachedBrush();
FModuleManager::LoadModuleChecked<ISettingsModule>("Settings").UnregisterSettings("Project", "Plugins", "UE4EditorCustomize");
}

Expand Down Expand Up @@ -1029,10 +1064,13 @@ void FUE4EditorCustomizeModule::ResetTextStyle()
GConfig->Flush(false);
}

void FUE4EditorCustomizeModule::ResetAllImmediately()
void FUE4EditorCustomizeModule::RestoreCachedBrush()
{
FEditorStyle::ResetToDefault();
FCoreStyle::ResetToDefault();
FSlateStyleSet* EditorStyles = (FSlateStyleSet*)&FEditorStyle::Get();
for (auto it=CachedOriginalBrushes.CreateConstIterator();it;++it)
{
EditorStyles->Set(it->Key, (FSlateBrush*)it->Value);
}
}

#undef LOCTEXT_NAMESPACE
Expand Down
4 changes: 3 additions & 1 deletion Source/UE4EditorCustomize/Public/UE4EditorCustomize.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class FUE4EditorCustomizeModule : public IModuleInterface
};

TSharedPtr<ISettingsSection> SettingS;
TMap<FName, const FSlateBrush*> CachedOriginalBrushes;
TArray<UObject*> FindReferencedAsset();
FString GetAssetAbsolutePath(FString PackageName);
bool _Internal_ImportUTheme_v0(TArray<uint8>& FileData, FText* ErrorMsg=nullptr);
Expand All @@ -48,6 +49,7 @@ class FUE4EditorCustomizeModule : public IModuleInterface
bool _Internal_AskUThemeInfo(FUThemeInfo_v0* OutInfo);
uint8 ExtensionToUint8(FString FileExtension);
FString Uint8ToExtension(uint8 Extension);
void CacheOriginalBrushes();
public:
/** IModuleInterface implementation */
virtual void StartupModule() override;
Expand All @@ -65,5 +67,5 @@ class FUE4EditorCustomizeModule : public IModuleInterface
void ResetEditorStyle();
void ResetCoreStyle();
void ResetTextStyle();
void ResetAllImmediately();
void RestoreCachedBrush();
};
6 changes: 3 additions & 3 deletions UE4EditorCustomize.uplugin
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"FileVersion": 3,
"Version": 6,
"VersionName": "1.3",
"Version": 7,
"VersionName": "1.31",
"FriendlyName": "UE4Editor Customize",
"Description": "Change UE4Editor To a New Style.",
"Category": "Editor",
Expand All @@ -11,7 +11,7 @@
"MarketplaceURL": "com.epicgames.launcher://ue/marketplace/content/0d22d9af59624886a6fccd9573fefa90",
"SupportURL": "https://github.com/Jack-Myth/UE4EditorCustomize/issues",
"CanContainContent": true,
"IsBetaVersion": true,
"IsBetaVersion": false,
"Installed": false,
"Modules": [
{
Expand Down

0 comments on commit b359851

Please sign in to comment.