Save grid settings for variant tabs (#7869)

This commit is contained in:
D8H
2025-10-02 14:15:41 +02:00
committed by GitHub
parent a85668c8d9
commit 64cc788d43
7 changed files with 40 additions and 11 deletions

View File

@@ -37,6 +37,7 @@ void EventsBasedObjectVariant::SerializeTo(SerializerElement &element) const {
layers.SerializeLayersTo(element.AddChild("layers"));
initialInstances.SerializeTo(element.AddChild("instances"));
editorSettings.SerializeTo(element.AddChild("editionSettings"));
}
void EventsBasedObjectVariant::UnserializeFrom(
@@ -66,6 +67,7 @@ void EventsBasedObjectVariant::UnserializeFrom(
layers.Reset();
}
initialInstances.UnserializeFrom(element.GetChild("instances"));
editorSettings.UnserializeFrom(element.GetChild("editionSettings"));
}
} // namespace gd

View File

@@ -5,6 +5,7 @@
*/
#pragma once
#include "GDCore/IDE/Dialogs/LayoutEditorCanvas/EditorSettings.h"
#include "GDCore/Project/InitialInstancesContainer.h"
#include "GDCore/Project/LayersContainer.h"
#include "GDCore/Project/ObjectsContainer.h"
@@ -199,6 +200,19 @@ public:
const gd::String &GetAssetStoreOriginalName() const {
return assetStoreOriginalName;
};
/**
*
* \brief Get the user settings for the IDE.
*/
const gd::EditorSettings& GetAssociatedEditorSettings() const {
return editorSettings;
}
/**
* \brief Get the user settings for the IDE.
*/
gd::EditorSettings& GetAssociatedEditorSettings() { return editorSettings; }
void SerializeTo(SerializerElement &element) const;
@@ -224,6 +238,7 @@ private:
* store.
*/
gd::String assetStoreOriginalName;
gd::EditorSettings editorSettings;
};
} // namespace gd

View File

@@ -3251,6 +3251,8 @@ interface EventsBasedObjectVariant {
void SetAssetStoreOriginalName([Const] DOMString assetStoreOriginalName);
[Const, Ref] DOMString GetAssetStoreOriginalName();
[Ref] EditorSettings GetAssociatedEditorSettings();
void SerializeTo([Ref] SerializerElement element);
void UnserializeFrom([Ref] Project project, [Const, Ref] SerializerElement element);
};

View File

@@ -2363,6 +2363,7 @@ export class EventsBasedObjectVariant extends EmscriptenObject {
getAssetStoreAssetId(): string;
setAssetStoreOriginalName(assetStoreOriginalName: string): void;
getAssetStoreOriginalName(): string;
getAssociatedEditorSettings(): EditorSettings;
serializeTo(element: SerializerElement): void;
unserializeFrom(project: Project, element: SerializerElement): void;
}

View File

@@ -22,6 +22,7 @@ declare class gdEventsBasedObjectVariant {
getAssetStoreAssetId(): string;
setAssetStoreOriginalName(assetStoreOriginalName: string): void;
getAssetStoreOriginalName(): string;
getAssociatedEditorSettings(): gdEditorSettings;
serializeTo(element: gdSerializerElement): void;
unserializeFrom(project: gdProject, element: gdSerializerElement): void;
delete(): void;

View File

@@ -14,6 +14,10 @@ import {
import SceneEditor from '../../SceneEditor';
import { ProjectScopedContainersAccessor } from '../../InstructionOrExpression/EventsScope';
import { type ObjectWithContext } from '../../ObjectsList/EnumerateObjects';
import {
serializeToJSObject,
unserializeFromJSObject,
} from '../../Utils/Serializer';
const gd: libGDevelop = global.gd;
@@ -121,14 +125,14 @@ export class CustomObjectEditorContainer extends React.Component<RenderEditorCon
}
saveUiSettings = () => {
// const layout = this.getCustomObject();
// const editor = this.editor;
// if (editor && layout) {
// unserializeFromJSObject(
// layout.getAssociatedEditorSettings(),
// editor.getInstancesEditorSettings()
// );
// }
const variant = this.getVariant();
const editor = this.editor;
if (editor && variant) {
unserializeFromJSObject(
variant.getAssociatedEditorSettings(),
editor.getInstancesEditorSettings()
);
}
};
getEventsFunctionsExtension(): ?gdEventsFunctionsExtension {
@@ -235,8 +239,11 @@ export class CustomObjectEditorContainer extends React.Component<RenderEditorCon
initialInstances={variant.getInitialInstances()}
getInitialInstancesEditorSettings={() =>
prepareInstancesEditorSettings(
{}, // TODO
1024 // TODO
serializeToJSObject(variant.getAssociatedEditorSettings()),
Math.max(
variant.getAreaMaxX() - variant.getAreaMinX(),
variant.getAreaMaxY() - variant.getAreaMinY()
)
)
}
onOpenEvents={() =>

View File

@@ -343,7 +343,8 @@ export const saveUiSettings = (state: EditorTabsState) => {
if (
editorTab.editorRef &&
(editorTab.editorRef instanceof SceneEditorContainer ||
editorTab.editorRef instanceof ExternalLayoutEditorContainer)
editorTab.editorRef instanceof ExternalLayoutEditorContainer ||
editorTab.editorRef instanceof CustomObjectEditorContainer)
) {
editorTab.editorRef.saveUiSettings();
}