Commit Graph

356 Commits

Author SHA1 Message Date
Rémi Verschelde
768f9422bc Convert uses of DirAccess * to DirAccessRef to prevent memleaks
`DirAccess *` needs to be deleted manually, and this is often forgotten
especially when doing early returns with `ERR_FAIL_COND`.
`DirAccessRef` is deleted automatically when it goes out of scope.

Co-authored-by: bruvzg <7645683+bruvzg@users.noreply.github.com>
2022-03-11 09:13:11 +01:00
Priyansh Rathi
d5b8a25195
fix same project opening mutliple times from project manager 2022-03-06 18:24:06 +05:30
Michael Alexsander
a811ebf699 Make TabContainer use TabBar internally 2022-03-03 21:49:58 -03:00
Jakob Bouchard
6553f5c242
Convert _notification methods to switch - Chunk C 2022-02-16 13:03:05 -05:00
Hugo Locurcio
8c06318722
Tweak the default project icon
This only affects newly created projects.

- Use a 128×128 resolution to make the icon look crisp on hiDPI displays.
- Darken the icon's outside area and remove the border, as the
  contrast rate between the icon and its background is now sufficient.

This different design also allows distinguishing projects that
were made with Godot 3.x from projects made with Godot 4.0.
2022-02-15 20:23:12 +01:00
TechnicalSoup
f3b7419790 Center initial position project manager window
Ensure that the project manager window is centered on the screen if any resizing is performed due to DPI scaling.
Resizing and repositioning code has been moved to after the initialisation of the window contents to improve UI response/presentation.
2022-02-13 19:48:53 +11:00
bruvzg
9739a2038a
Fix Project Manager crash on exit.
Fix editor settings loading / saving by Project Manager.
2022-02-12 21:55:11 +02:00
Hendrik Brucker
77fb65debf Use EditorFileDialog instead of FileDialog in the project manager 2022-02-12 12:06:51 +01:00
Hendrik Brucker
b396fd4eef Improve compilation speed (forward declarations/includes cleanup) 2022-02-12 02:46:22 +01:00
Rémi Verschelde
90162851a7
Core: Move generated VERSION_HASH to a .cpp file
This lets us have its definition in `core/version.h` and avoid
rebuilding a handful of files every time the commit hash changes.
2022-02-09 09:20:17 +01:00
Rémi Verschelde
fc076ece3d
Revert "Add missing SNAME macro optimization to all theme methods call"
This reverts commit a988fad9a0.

As discussed in #57725 and clarified in #57788, `SNAME` is not meant to be used
everywhere but only in critical code paths. For theme methods specifically, it
was by design that only getters use `SNAME` and not setters.
2022-02-08 10:17:25 +01:00
jmb462
a988fad9a0 Add missing SNAME macro optimization to all theme methods call 2022-02-06 23:06:11 +01:00
jmb462
1ce81dc5f2 Add missing SNAME macro optimization in some function calls 2022-02-06 15:54:04 +01:00
Anilforextra
adbe948bda String: Add contains(). 2022-02-04 01:28:02 +05:45
bruvzg
d2573c1636
Fix decoding UTF-8 filenames on unzipping. 2022-01-05 14:31:20 +02:00
Rémi Verschelde
fe52458154
Update copyright statements to 2022
Happy new year to the wonderful Godot community!
2022-01-03 21:27:34 +01:00
Rémi Verschelde
1032c2c434
Merge pull request #55487 from YeldhamDev/scroll_bikeshedding 2022-01-03 14:10:41 +01:00
Nathan Franke
49403cbfa0
Replace String comparisons with "", String() to is_empty()
Also:
- Adds two stress tests to test_string.h
- Changes to .empty() on std::strings
2021-12-09 04:48:38 -06:00
Nathan Franke
41a20171eb
align to horizontal_alignment, valign to vertical_alignment, related 2021-12-09 01:38:46 -06:00
kobewi
841a9ef820 ScrollContainer's scrollbar visibility is now enum 2021-12-07 18:27:12 +01:00
Rémi Verschelde
8bb0f2aff1
Merge pull request #52916 from aaronfranke/no-default-env
Remove `default_env.tres` from generating in new projects
2021-12-02 21:12:12 +01:00
Michael Alexsander
ec4f4c6cda Rename all methods that return ScrollBar nodes to get_*_scroll_bar() 2021-11-30 13:46:36 -03:00
kobewi
30df260810 Improve language lists in localization editor 2021-11-30 15:29:41 +01:00
Aaron Franke
7a096b216e
Remove default_env.tres from generating in new projects 2021-11-26 14:37:27 -06:00
Aaron Franke
9851d3c5b2
Move logic for saving project features to ProjectSettings save_custom 2021-11-25 03:08:05 -06:00
Aaron Franke
e81c689592
Project feature warning system 2021-11-24 10:32:07 -06:00
Lightning_A
e078f970db Rename remove() to remove_at() when removing by index 2021-11-23 18:58:57 -07:00
Rémi Verschelde
c5ab537617
Merge pull request #42447 from aaronfranke/gitignore-create 2021-11-23 15:21:31 +01:00
Rémi Verschelde
bef20f53cf
Merge pull request #54422 from ibrahn/project-manager-nophys 2021-11-16 11:06:46 +01:00
Aaron Franke
ed9c7bf450
Allow creating .gitignore and .gitattributes when creating a new project
Also allow creating these files later, and also allow disabling creating the default environment in editor settings.
2021-11-12 21:27:31 -06:00
Aaron Franke
3c0fdcc8ac
Use "enum class" for input enums 2021-11-12 15:37:54 -06:00
Hugo Locurcio
7cc33b14c9
Use Enter instead of F2 as an editor renaming shortcut on macOS 2021-11-12 20:50:23 +01:00
Aaron Record
259fdaf48e Make "Last Modified" the default sorting order for the Project Manager 2021-11-07 15:23:35 -07:00
Hugo Locurcio
665d29c16d
Fix new projects always being created with OpenGL
Only Vulkan is fully implemented for now, so OpenGL isn't available
in the project manager yet.

This also makes the rendering driver checks use lowercase names
everywhere for consistency.
2021-11-01 22:04:36 +01:00
bruvzg
0b6b8427c8 [macOS] Add create_instance function to spawn editor copies.
[macOS] Modify `create_project` function to detect and run app bundles using NSWorkspace to ensure app window is registered and activated correctly.
2021-11-01 11:48:23 +02:00
Clay John
8a10bb7d0d
Use OpenGL 3.3 core profile instead of compatibility profile
- Rename OpenGL to GLES3 in the source code per community feedback.
  - The renderer is still exposed as "OpenGL 3" to the user.
- Hide renderer selection dropdown until OpenGL support is more mature.
  - The renderer can still be changed in the Project Settings or using
    the `--rendering-driver opengl` command line argument.
- Remove commented out exporter code.
- Remove some OpenGL/DisplayServer-related debugging prints.
2021-10-31 15:56:45 +01:00
Ibrahn Sahir
27a6ab457b Turn off physics and 3d navigation servers in the Project Manager.
Copying the editor behaviour of deactivating these servers we're not
using, to reduce CPU load.
2021-10-30 15:15:00 +01:00
Hugo Locurcio
ce97ddbcb1
Rename GLES2 driver to OpenGL to prepare for the upgrade to GLES3
- Use lowercase driver names for the `--rendering-driver`
  command line argument.
2021-10-30 02:05:49 +02:00
lawnjelly
e3491a3744
Add GLES2 2D renderer + Linux display manager
First implementation with Linux display manager.

- Add single-threaded mode for EditorResourcePreview (needed for OpenGL).

Co-authored-by: clayjohn <claynjohn@gmail.com>
Co-authored-by: Fabio Alessandrelli <fabio.alessandrelli@gmail.com>
2021-10-30 02:05:48 +02:00
Rémi Verschelde
a7ba227631
Merge pull request #52711 from m4gr3d/provide_getter_for_project_data_dir_master 2021-10-05 21:02:27 +02:00
ne0fhyk
69f890ff11 Provide a getter for the project data directory. 2021-09-15 12:52:03 -07:00
Jacob Edie
2b292a1a2a
--single-window is passed through project manager.
This means you can start godot with --single-window
2021-09-15 10:20:50 +02:00
reduz
5cecdfa8af Entirely removes BIND_VMETHOD in favor of GDVIRTUAL
* `_gui_input`, `_input`, `_unhandled_input` and `_unhandled_key_input` are now regular C++ virutal functions.
* Everything else converted to GDVIRTUAL
* BIND_VMETHOD is gone, always use the new syntax from now on.

Creating `_gui_input` method and using the binder to register events will no longer work, simply override the virtual function now.
2021-08-23 08:10:13 -03:00
Hugo Locurcio
d2b65c69e9
Expose Vulkan's clustered and mobile backends in the project manager
Since OpenGL will not be available in Godot 4.0, this exposes a
choice between Vulkan clustered and Vulkan mobile in the project manager.

Despite the name, Vulkan mobile has many benefits on desktop platforms.
It provides better performance on simple scenes, and ensures that you
won't accidentally use unsupported features while testing your project
on desktop platforms.

The Vulkan backend setting was made into a "basic" setting so that
it can be changed without having to enable the Advanced Settings toggle.

This also improves list formatting to use bullet points and tweaks
the property hint to be more descriptive.
2021-07-30 19:36:17 +02:00
Rémi Verschelde
ac3322b0af
Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
Aaron Franke
4e6efd1b07
Use C++ iterators for Lists in many situations 2021-07-23 17:38:28 -04:00
reduz
75755beeee
Implement textual ext/subresource IDs.
* Friendlier with version control.
* Generates pseudo unique IDs, to minimize conflicts when merging, but still
  user readable (so, not UUID).
* Eventually will also allow to have more precisely named sub-resources in
  imported files.
* This will allow better reloading on changes (including resources already
  loaded) as well as better keeping track of changes on the DCC.
* Keeps backward compatibility with the old formats.
* Binary and text format version incremented to mark breakage in forward
  compatibility.
2021-07-22 19:37:47 +02:00
reduz
6631f66c2a Optimize StringName usage
* Added a new macro SNAME() that constructs and caches a local stringname.
* Subsequent usages use the cached version.
* Since these use a global static variable, a second refcounter of static usages need to be kept for cleanup time.
* Replaced all theme usages by this new macro.
* Replace all signal emission usages by this new macro.
* Replace all call_deferred usages by this new macro.

This is part of ongoing work to optimize GUI and the editor.
2021-07-18 21:20:02 -03:00
Lightning_A
e28fd07b2b Rename instance()->instantiate() when it's a verb 2021-06-19 20:49:18 -06:00
Rémi Verschelde
82eb4cfc00
Merge pull request #47894 from Calinou/project-manager-add-keyboard-shortcuts
Add keyboard shortcuts to the project manager
2021-06-17 12:41:47 +02:00
Rémi Verschelde
f862f9a056
EditorSettings: Factor code to compute auto display scale
Also fixes typo introduced in https://github.com/godotengine/godot/pull/48597/files#r652636544.
2021-06-16 14:36:09 +02:00
Rémi Verschelde
3f01b38185
Merge pull request #48597 from Calinou/editor-scale-auto-portrait
Handle portrait mode monitors in the automatic editor scale detection
2021-06-15 18:27:48 +02:00
Rémi Verschelde
9e328bb5b7
Core: Move DirAccess and FileAccess to core/io
File handling APIs are typically considered part of I/O, and we did have most
`FileAccess` implementations in `core/io` already.
2021-06-11 14:52:39 +02:00
Andrii Doroshenko (Xrayez)
293550f56a Separate version hash from version number in editor and project manager
When copy-pasting the version from About dialog to bug reports at GitHub,
this makes the version hash linkable to commits at GitHub.
2021-06-08 17:30:37 +03:00
Aaron Franke
7813167196
Rename tabs in the project manager 2021-06-03 20:02:02 -04:00
Rémi Verschelde
4c1d555b9a
Merge pull request #48770 from LightningAA/scrollcontainer-ensure-item-visible-4.0
ScrollContainer: Expose `_ensure_focused_visible` to the scripting API and rename it to `ensure_control_visible`
2021-06-01 11:01:40 +02:00
Lightning_A
6d5b5ba89f ScrollContainer: Expose _ensure_focused_visible to the API
Was renamed to `ensure_control_visible`
2021-05-31 17:14:57 -10:00
Tomasz Chabora
b1859510ab Change behavior of String.right 2021-05-20 23:07:57 +02:00
Ev1lbl0w
056deefa55
Fix zip_root not being defined when importing by drag&drop 2021-05-19 22:43:54 +01:00
Hugo Locurcio
728fa3ff71
Handle portrait mode monitors in the automatic editor scale detection
Using the smallest dimension of the width and height makes it possible
to support both landscape and portrait monitors.
2021-05-09 23:35:24 +02:00
Lightning_A
97fecd1b69 Rename "Control" key to "Ctrl" and add "_pressed" suffix to all InputEventWithModifiers properties/methods 2021-05-07 14:00:50 -06:00
Rémi Verschelde
4e7ca279fc
Merge pull request #47855 from aaronfranke/doubleclick
Rename `doubleclick` to `double_click`
2021-05-04 13:12:17 +02:00
Aaron Franke
0de9a7d803
Rename doubleclick to double_click 2021-05-04 04:38:08 -04:00
Hugo Locurcio
be01025376
Make it possible to copy the Godot version identifier by clicking it
This closes #24317.
2021-04-28 17:35:57 +02:00
Hugo Locurcio
76722b5108
Add the About dialog to the project manager
The About button is located in the bottom-right corner of the
project manager.

This allows removing the copyright notice from the window title
(which looked a bit ugly in comparison to other applications).
2021-04-16 17:14:05 +02:00
Hugo Locurcio
86455d0c58
Strip leading/trailing whitespace for project name in the project manager
This affects creating projects and renaming them.
2021-04-14 20:25:44 +02:00
Hugo Locurcio
9bda49e030
Add keyboard shortcuts to the project manager
- Ctrl + N: New Project
- Ctrl + I: Import Project
- Ctrl + S: Scan for Projects
- Ctrl + E: Edit Project
- Ctrl + R: Run Project
- F2: Rename Project
- Delete: Remove Project
  - Already implemented previously, but moved to use `ED_SHORTCUT()`.

Note that depsite using `ED_SHORTCUT()`, these shortcuts won't appear
in the Editor Settings' Shortcuts dialog and won't be remappable since
the project manager code isn't run in the editor.
2021-04-14 20:07:22 +02:00
Rémi Verschelde
45f0b5db28
Merge pull request #47200 from LightningAA/delete-from-project-manager-4.0
Add the ability to remove project contents from the remove project dialog
2021-04-06 11:30:14 +02:00
Rémi Verschelde
77dc4c3cb6
Merge pull request #47636 from qarmin/input
Fix crashes in *_input functions
2021-04-05 11:54:08 +02:00
Rafał Mikrut
504bc5cc67 Fix crashes in *_input functions 2021-04-05 08:52:21 +02:00
Hugo Locurcio
d89d00ac7e
Automatically focus the Search field when displaying asset library
- Focus the project search box when switching from the Templates tab
  back to the Projects tab in the project manager.
- Add a context-specific placeholder for the asset library search box.
- Rename "Search" project filter box placeholder to the more
  descriptive "Filter projects". When performing a search on an
  existing selection, "Filter" is more accurate than "Search".
2021-04-05 01:45:39 +02:00
Rémi Verschelde
36c11a5b93
Merge pull request #42890 from Ev1lbl0w/bugfix-import-zip
Allow Godot to import .ZIP files with non-regular structure
2021-04-01 00:18:19 +02:00
Kyle
918f50c04c Fixes project manager window size scaling
This is a workaround fix for a Vector2i multiplication regression issue that prevents the project manager window size from scaling correctly. This calculates the new window size x and y values separately.
2021-03-26 21:27:43 -04:00
Aaron Franke
10d7fccb54
Rename ButtonList enum and members to MouseButton 2021-03-23 07:13:23 -04:00
Lightning_A
93f944b070 Add the ability to remove project contents from the remove project dialog 2021-03-20 15:34:37 -06:00
Haoyu Qiu
30842b2efe Fix project icon size in Project Manager 2021-03-20 17:32:38 +08:00
reduz
64140eaf42 Reorganize Project Settings
-Advanced Settings toggle also hides advanced properties when disabled
-Simplified Advanced Bar (errors were just plain redundant)
-Reorganized rendering quality settings.
-Reorganized miscelaneous settings for clean up.
2021-02-18 11:23:34 -03:00
Rémi Verschelde
b21f854b7f
Merge pull request #45910 from Ansraer/default-scale-highres-monitor
Adjust auto scale on 4k monitors to 150%
2021-02-14 12:54:04 +01:00
Ansraer
466cf0b466 Adjust auto scale on high res displays 2021-02-12 01:12:25 +01:00
Hugo Locurcio
8be51252f6
Display loading text while the project manager is loading
This hints the user that the project manager is currently busy
loading the project. This is important for the HTML5 editor as the
current feedback isn't very obvious.

This also removes the unused `_exit_dialog` function.
2021-02-07 02:04:10 +01:00
Fabio Alessandrelli
9db7e07d5a Import zip via drag and drop in project manager.
Dropping a single ZIP file in the project manager will now prompt the
import dialog.
2021-02-03 18:59:54 +01:00
Rémi Verschelde
ea1e26f312
Merge pull request #45648 from Kanabenki/check-project-manager-dirs
Check default project and autoscan directories exist on project manager startup
2021-02-02 13:12:12 +01:00
Kanabenki
58be3c069a Check default project and autoscan directories exist on project manager startup 2021-02-02 12:55:11 +01:00
Hugo Locurcio
04cbfbe6b2
Make the Open Project Folder button more visible in the project manager
This closes https://github.com/godotengine/godot-proposals/issues/619.
2021-02-01 20:04:01 +01:00
Hugo Locurcio
57654508c9
Tweak the "Auto" editor setting hints to be more indicative
This affects the editor scale and font hinting settings which will now
display their automatically chosen value in parentheses.
2021-01-18 16:29:04 +01:00
Marcel Admiraal
2a74b388d0 Split OS::execute into two methods
1. execute(): Executes a command and returns the results.
2. create_process(): Creates a new process and returns the new process' id.
2021-01-09 10:03:23 +00:00
Rémi Verschelde
b5334d14f7
Update copyright statements to 2021
Happy new year to the wonderful Godot community!

2020 has been a tough year for most of us personally, but a good year for
Godot development nonetheless with a huge amount of work done towards Godot
4.0 and great improvements backported to the long-lived 3.2 branch.

We've had close to 400 contributors to engine code this year, authoring near
7,000 commit! (And that's only for the `master` branch and for the engine code,
there's a lot more when counting docs, demos and other first-party repos.)

Here's to a great year 2021 for all Godot users 🎆
2021-01-01 20:19:21 +01:00
Marcel Admiraal
5b937d493f Rename empty() to is_empty() 2020-12-28 10:39:56 +00:00
Marcel Admiraal
4b8b803931 Rename Control margin to offset 2020-12-23 06:25:56 +00:00
Marcel Admiraal
8509c8c8fc Rename AcceptDialog get_ok() to get_ok_button()
Also renames:
- AcceptDialog add_cancel() to add_cancel_button()
- ConfirmationDiaglog get_cancel() to get_cancel_button()
2020-12-14 18:43:52 +00:00
Rafał Mikrut
e1811b689b Initialize class/struct variables with default values in platform/ and editor/ 2020-12-02 16:09:11 +01:00
Rémi Verschelde
a09846e015
Merge pull request #42109 from EricEzaM/PR/input-and-shortcuts-rework
Shortcuts rework - fixed issues with input propagation and triggering of unwanted shortcuts.
2020-11-28 09:04:25 +01:00
bruvzg
99666de00f
[Complex Text Layouts] Refactor Font class, default themes and controls to use Text Server interface.
Implement interface mirroring.
Add TextLine and TextParagraph classes.
Handle UTF-16 input on macOS and Windows.
2020-11-26 14:25:48 +02:00
Eric M
efe5c250d5 Implement new shortcuts system.
unhandled_key_input changed to unhandled_button_input. Controls can set a 'shortcut_context' which they can then use to determine if their shortcuts should be triggered or not, based on if the viewport's focused GUI control is a child of their 'shortcut context'.
2020-11-23 21:14:26 +10:00
Rafał Mikrut
b20c20a6f7 Allow to open multiple projects when some are not imported or without main scene. 2020-11-18 21:24:27 +01:00
Rémi Verschelde
d191ffe647
Merge pull request #43479 from Calinou/use-low-editor-scale-auto
Use 75% editor scale on small displays automatically
2020-11-16 16:36:10 +01:00
Hugo Locurcio
c1a65e5289
Use 75% editor scale on small displays automatically
This also makes borders always display in the editor theme,
even if the editor scale is below 100%. Otherwise, "focus" outlines
would vanish when using an editor scale below 100%,
which harms usability.
2020-11-16 16:23:15 +01:00
Aaron Franke
46fdca4fae
Allow creating projects in non-empty folders with a confirmation popup 2020-11-10 00:12:07 -05:00
reduz
127458ed17 Reorganized core/ directory, it was too fatty already
-Removed FuncRef, since Callable makes it obsolete
-Removed int_types.h as its obsolete in c++11+
-Changed color names code
2020-11-07 20:17:12 -03:00
Ev1lbl0w
9b1db715fd
Allow Godot to import .ZIP files with non-regular structure 2020-10-19 09:37:04 +01:00