diff options
| author | Thaddeus Crews <repiteo@outlook.com> | 2026-08-12 17:13:24 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-12 17:13:24 -0500 |
| commit | c5198ffd37a4d14120aa32fac918f21ed1eba4f6 (patch) | |
| tree | 8793ddacfa44343ad3def89b3417048ba37f0890 | |
| parent | d94b85934640afe312081114636267c9efbef3e3 (diff) | |
| parent | af99bf93d3bf2d7a487946d4c8375f76163db08b (diff) | |
Merge pull request #122344 from Repiteo/4.7.2-cherry-picks-3
[4.7] Cherry-picks for the 4.7 branch (future 4.7.2) - 3rd batch
| -rw-r--r-- | .github/actions/godot-cache-save/action.yml | 11 | ||||
| -rw-r--r-- | core/object/class_db.cpp | 2 | ||||
| -rw-r--r-- | doc/classes/DisplayServer.xml | 7 | ||||
| -rw-r--r-- | editor/docks/scene_tree_dock.cpp | 1 | ||||
| -rw-r--r-- | platform/android/java/build.gradle | 12 | ||||
| -rw-r--r-- | platform/android/java/editor/build.gradle | 5 | ||||
| -rw-r--r-- | platform/web/web_main.cpp | 1 | ||||
| -rw-r--r-- | platform/windows/display_server_windows.cpp | 1 |
8 files changed, 34 insertions, 6 deletions
diff --git a/.github/actions/godot-cache-save/action.yml b/.github/actions/godot-cache-save/action.yml index f2d4455310..507a12d794 100644 --- a/.github/actions/godot-cache-save/action.yml +++ b/.github/actions/godot-cache-save/action.yml @@ -20,3 +20,14 @@ runs: with: path: ${{ inputs.scons-cache }} key: ${{ inputs.cache-name }}|${{ github.ref_name }}|${{ github.sha }} + + # This is done after saving the new cache so that the base cache remains more relevant, to reduce + # the risk of the cache being purged when multiple large PRs are pushed/merged at the same time. + - name: Ping default cache + uses: actions/cache/restore@v6 + if: github.ref_name != github.event.repository.default_branch + with: + path: ${{ inputs.scons-cache }} + key: ${{ inputs.cache-name }}|${{ github.event.repository.default_branch }}|${{ github.sha }} + restore-keys: ${{ inputs.cache-name }}|${{ github.event.repository.default_branch }} + lookup-only: true diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp index d232fcdca0..855ced0a9c 100644 --- a/core/object/class_db.cpp +++ b/core/object/class_db.cpp @@ -2278,7 +2278,7 @@ void ClassDB::register_extension_class(ObjectGDExtension *p_extension) { // The parent classes should be exposed if it has an exposed child class. while (parent && !parent->exposed) { parent->exposed = true; - parent = classes.getptr(parent->gdtype->get_name()); + parent = classes.getptr(parent->gdtype->get_super_type_name()); } } c.reloadable = p_extension->reloadable; diff --git a/doc/classes/DisplayServer.xml b/doc/classes/DisplayServer.xml index 367d42ad43..52657f7fb6 100644 --- a/doc/classes/DisplayServer.xml +++ b/doc/classes/DisplayServer.xml @@ -1785,9 +1785,8 @@ <method name="screen_get_max_scale" qualifiers="const"> <return type="float" /> <description> - Returns the greatest scale factor of all screens. - [b]Note:[/b] On macOS returned value is [code]2.0[/code] if there is at least one hiDPI (Retina) screen in the system, and [code]1.0[/code] in all other cases. - [b]Note:[/b] This method is implemented only on macOS. + Returns the greatest scale factor of all screens. See also [method screen_get_scale]. + [b]Note:[/b] On macOS, the returned value is [code]2.0[/code] if there is at least one hiDPI (Retina) screen in the system, and [code]1.0[/code] in all other cases. </description> </method> <method name="screen_get_orientation" qualifiers="const"> @@ -1844,7 +1843,7 @@ <return type="float" /> <param index="0" name="screen" type="int" default="-1" /> <description> - Returns the scale factor of the specified screen by index. Returns [code]1.0[/code] if [param screen] is invalid. + Returns the scale factor of the specified screen by index. Returns [code]1.0[/code] if [param screen] is invalid. See also [method screen_get_max_scale]. [b]Note:[/b] One of the following constants can be used as [param screen]: [constant SCREEN_OF_MAIN_WINDOW], [constant SCREEN_PRIMARY], [constant SCREEN_WITH_MOUSE_FOCUS], or [constant SCREEN_WITH_KEYBOARD_FOCUS]. [b]Note:[/b] On macOS, the returned value is [code]2.0[/code] for hiDPI (Retina) screens, and [code]1.0[/code] for all other cases. [b]Note:[/b] On Linux (Wayland), the returned value is accurate only when [param screen] is [constant SCREEN_OF_MAIN_WINDOW]. Due to API limitations, passing a direct index will return a rounded-up integer, if the screen has a fractional scale (e.g. [code]1.25[/code] would get rounded up to [code]2.0[/code]). diff --git a/editor/docks/scene_tree_dock.cpp b/editor/docks/scene_tree_dock.cpp index 74432fb92f..72f0165cfb 100644 --- a/editor/docks/scene_tree_dock.cpp +++ b/editor/docks/scene_tree_dock.cpp @@ -1760,6 +1760,7 @@ void SceneTreeDock::_notification(int p_what) { button_ui->connect(SceneStringName(pressed), callable_mp(this, &SceneTreeDock::_tool_selected).bind(TOOL_CREATE_USER_INTERFACE, false)); favorite_node_shortcuts = memnew(VBoxContainer); + favorite_node_shortcuts->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); node_shortcuts->add_child(favorite_node_shortcuts); button_custom = memnew(Button); diff --git a/platform/android/java/build.gradle b/platform/android/java/build.gradle index bf04ffb43a..3d90410dc5 100644 --- a/platform/android/java/build.gradle +++ b/platform/android/java/build.gradle @@ -42,6 +42,9 @@ ext { rootDir = "../../.." binDir = "$rootDir/bin/" androidEditorBuildsDir = "$binDir/android_editor_builds/" + + // Used by the editor module to set abiFilters. + detectedAbis = [] } def getSconsTaskName(String flavor, String buildType, String abi) { @@ -120,9 +123,18 @@ def generateBuildTasks(String flavor = "template", String edition = "standard", boolean excludeSconsBuildTasks = excludeSconsBuildTasks() boolean isTemplate = flavor == "template" String libsDir = isTemplate ? "lib/libs/" : "lib/libs/tools/" + def validAbis = ["arm64-v8a", "armeabi-v7a", "x86_64", "x86"] for (String target : supportedFlavorsBuildTypes[flavor]) { File targetLibs = new File(libsDir + target) + if (targetLibs != null && targetLibs.isDirectory()) { + targetLibs.listFiles()?.each { abiDir -> + if (abiDir.isDirectory() && validAbis.contains(abiDir.name) && abiDir.listFiles()?.length > 0) { + detectedAbis.add(abiDir.name) + } + } + } + String targetSuffix = target if (!excludeSconsBuildTasks || (targetLibs != null diff --git a/platform/android/java/editor/build.gradle b/platform/android/java/editor/build.gradle index ab2d17aa31..fcbb102851 100644 --- a/platform/android/java/editor/build.gradle +++ b/platform/android/java/editor/build.gradle @@ -166,6 +166,11 @@ android { android { dimension "android_distribution" missingDimensionStrategy 'products', 'editor' + ndk { + if (!detectedAbis.isEmpty()) { + abiFilters += detectedAbis + } + } } horizonos { dimension "android_distribution" diff --git a/platform/web/web_main.cpp b/platform/web/web_main.cpp index 0ca3bc01c4..6b57b0712e 100644 --- a/platform/web/web_main.cpp +++ b/platform/web/web_main.cpp @@ -70,7 +70,6 @@ void exit_callback() { delete os; // We used a normal new, so it needs a normal delete. os = nullptr; godot_cleanup_profiler(); - emscripten_cancel_main_loop(); // We are exiting in this iteration. emscripten_force_exit(exit_code); // Exit runtime. } diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp index f75a3f7bed..e821786166 100644 --- a/platform/windows/display_server_windows.cpp +++ b/platform/windows/display_server_windows.cpp @@ -7468,6 +7468,7 @@ void DisplayServerWindows::_destroy_window(DisplayServerEnums::WindowID p_window if (has_winrt_queue) { WinRTUtils::destroy_wd(wd.wrt_wd); + wd.wrt_wd = nullptr; } DestroyWindow(wd.hWnd); windows.erase(p_window_id); |
