Skip to content

Conversation

@anasiez
Copy link

@anasiez anasiez commented Jan 23, 2026

Our student group has made the folders to organize scenes, so you can make folders, put the scenes in it and help to organize the game production better.

@anasiez anasiez requested a review from 4ian as a code owner January 23, 2026 16:47

this.props.expandFolders([this.getId()]);

setTimeout(() => {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There were two comments associated to this setTimeout and the value. Can you please add them back? Moving code should not have their comments lost.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@anasiez You marked this GitHub comment as resolved but I still don't see any comment added back. This is taking a bit of time to review the PR so I need GitHub comments to stay open if they are not resolved.

Copy link
Owner

@4ian 4ian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi!

First, thanks for opening this, appreciate your work on this.

To have this considered for a potential inclusion in GDevelop, we need some attention to quality and details in the code and in the app, here is a quick list from what I've seen just looking quickly:

  • You've added some comments in German. All the code of GDevelop is commented in English. For each comment you added, consider if:
    • 1 (better): remove it if it does not add any information to the exist code.
    • 2 (otherwise): translate it in english
  • On the contrary, you've sometimes removed existing comments. Can you put them back? Any comment in the existing code must be preserved, especially those explaining hacks or things to know. For example, a setTimeout is something that we should in theory never use. If there is one, you must absolutely keep the comments.
  • I've tried it and it works for scenes (great! :)) but external layouts and external events don't have 1) the menu item to add folders and 2) they have an extra triple dot menu that is useful.
    • Can you fix this and confirm you've tried/tested this manually?
      See, nothing here:
      Image
      While it works here:
      Image

Take a careful look at all my comments, ensure the external layout/events and scenes folders can be used from the UI and ensure the code is as clean as possible (without losing existing information) and this would be then a great addition :) Looking forward to your changes! Thanks again! :)

@anasiez
Copy link
Author

anasiez commented Jan 26, 2026

Hi @4ian ,

thank you for your feedback! We have fixed the comments you have written.
We confirm that it looks the same like you have posted on your screenshots. We didn't make the whole feature and didn't touch the folders for events and layouts, we have made it only for the scenes. :) I hope it is okay that we did it just for scenes. We will appreciate if it will be merged, it was making fun to contribute to your project!

Looking forward to your feedback!

Copy link
Owner

@4ian 4ian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the update! I made another pass. To continue I would need you to make a global check on your PR, as this is a long PR:

  • Ensure all existing code that was removed still have comments and same features. Notably, I'm very concerned about MemoizedProjectManager -> this is something that was removed without anything in the PR description and I could have missed this.
  • No german comments :)
  • If functions are duplicated, factor them.
  • Make sure there is no dead code (unused functions)

I know this is long but this is only by having a PR as minimal as possible that we will be able to get this in the codebase and then maintained over the course of multiple years :) For this, I need to ensure every single comments I made is also addressed. Otherwise I have to re-read everything again and will have to space out my reviews as it's taking a lot of time. This is a long PR so I appreciate your work! Good luck!

Comment on lines 6 to 8
* @template TFolderOrItem - Der C++ FolderOrItem Typ (z.B. gdObjectFolderOrObject)
* @param selectedFolderOrItem - Das aktuell ausgewählte Folder oder Item
* @returns {{ folder: TFolderOrItem, position: number }} - Parent und Position zum Einfügen
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We usually don't use JSDoc for template/param/returns because Flow types are already doing the job and often the parameter name is self explanatory. You can remove this.

@@ -1532,19 +1868,7 @@ const ProjectManager = React.forwardRef<Props, ProjectManagerInterface>(
}
);

const arePropsEqual = (prevProps: Props, nextProps: Props): boolean =>
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You've removed this MemoizedProjectManager implementation but:

  • you did not tell about this in the PR description
  • you kept the name "MemoizedProjectManager", which gives the false impression that it's memoized while it's not.

Can you either revert this change or explain why it was needed? This is where I need you to be extra careful because the comment was explaining why it was needed.

Please do the same for the whole PR: inspect every line and ensure you've not removed already existing things - unless you explain why :) Thank you!

treeViewRef.current.openItems([scenesRootFolderId]);
}

setTimeout(() => {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I made the comment already but there is still the same issue :/ Comments have disappeared between your version and the old one:

Image

These comments are important and I need to be 100% sure you've not removed anything important.


this.props.expandFolders([this.getId()]);

setTimeout(() => {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@anasiez You marked this GitHub comment as resolved but I still don't see any comment added back. This is taking a bit of time to review the PR so I need GitHub comments to stay open if they are not resolved.

}


export function collectAllItems<TFolder, TFolderOrItem, TItem>(
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you explain why is this function useful?

return false;
}

_collectFoldersAndPaths(
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see this function both here and in newIDE/app/src/ProjectManager/SceneTreeViewItemContent.js and innewIDE/app/src/ProjectManager/SceneTreeViewHelpers.js

Can you factor them?

@4ian
Copy link
Owner

4ian commented Jan 26, 2026

We didn't make the whole feature and didn't touch the folders for events and layouts, we have made it only for the scenes. :) I hope it is okay that we did it just for scenes.

Sure no problem. Your PR title indicates "external events and external layouts" => clean the title of the PR so that it's faithful to what's inside. Thanks!

@anasiez anasiez changed the title Folders to organize scenes, external events, and external layouts #7777 and Folders to organize scenes #7777 Jan 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants