summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/android_builds.yml72
-rw-r--r--.github/workflows/linux_builds.yml121
-rw-r--r--.github/workflows/macos_builds.yml96
-rw-r--r--.github/workflows/main.yml322
-rw-r--r--.github/workflows/static_checks.yml (renamed from .github/workflows/static-checks.yml)2
-rw-r--r--.github/workflows/windows_builds.yml118
-rw-r--r--editor/editor_node.cpp10
-rw-r--r--methods.py2
-rw-r--r--platform/android/export/export.cpp153
-rw-r--r--scene/gui/line_edit.cpp38
-rw-r--r--scene/gui/line_edit.h4
11 files changed, 544 insertions, 394 deletions
diff --git a/.github/workflows/android_builds.yml b/.github/workflows/android_builds.yml
new file mode 100644
index 0000000000..1b3071028a
--- /dev/null
+++ b/.github/workflows/android_builds.yml
@@ -0,0 +1,72 @@
+name: Android Builds
+on: [push, pull_request]
+
+# Global Cache Settings
+env:
+ SCONS_CACHE_LIMIT: 8192
+
+jobs:
+ android-template:
+ runs-on: "ubuntu-20.04"
+
+ name: Android Template (target=release, tools=no)
+
+ steps:
+ - uses: actions/checkout@v2
+
+ # Azure repositories are not reliable, we need to prevent azure giving us packages.
+ - name: Make apt sources.list use the default Ubuntu repositories
+ run: |
+ sudo cp -f misc/ci/sources.list /etc/apt/sources.list
+ sudo apt-get update
+
+ # install all packages (except scons)
+ - name: Configure dependencies
+ run: |
+ sudo apt-get install openjdk-8-jdk
+ echo "::set-env name=JAVA_HOME::usr/lib/jvm/java-8-openjdk-amd64"
+
+ - name: Install Android Sdk and Ndk
+ run: |
+ echo "::set-env name=PATH::/usr/lib/jvm/java-8-openjdk-amd64/jre/bin:${PATH}"
+ java -version
+ echo "::set-env name=ANDROID_HOME::$(pwd)/godot-dev/build-tools/android-sdk"
+ echo "::set-env name=ANDROID_NDK_ROOT::$(pwd)/godot-dev/build-tools/android-ndk"
+ misc/ci/android-tools-linux.sh
+ source ~/.bashrc
+
+ # Upload cache on completion and check it out now
+ # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache.
+ # Linux with this will work reliably, so not as bad to edit for Linux.
+ - name: Load .scons_cache directory
+ id: android-template-cache
+ uses: actions/cache@v2
+ with:
+ path: ${{github.workspace}}/.scons_cache/
+ key: ${{runner.os}}-template-${{github.sha}}
+ restore-keys: |
+ ${{runner.os}}-template-${{github.sha}}
+ ${{runner.os}}-template
+ ${{runner.os}}
+
+ # Use python 3.x release (works cross platform)
+ - name: Set up Python 3.x
+ uses: actions/setup-python@v2
+ with:
+ # Semantic version range syntax or exact version of a Python version
+ python-version: '3.x'
+ # Optional - x64 or x86 architecture, defaults to x64
+ architecture: 'x64'
+
+ # You can test your matrix by printing the current Python version
+ - name: Configuring Python packages
+ run: |
+ python -c "import sys; print(sys.version)"
+ python -m pip install scons
+ python --version
+ scons --version
+ - name: Compilation
+ env:
+ SCONS_CACHE: ${{github.workspace}}/.scons_cache/
+ run: |
+ scons -j2 verbose=yes warnings=all werror=yes platform=android target=release tools=no
diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/linux_builds.yml
new file mode 100644
index 0000000000..17d2820b41
--- /dev/null
+++ b/.github/workflows/linux_builds.yml
@@ -0,0 +1,121 @@
+name: Linux Builds
+on: [push, pull_request]
+
+# Global Cache Settings
+env:
+ SCONS_CACHE_LIMIT: 8192
+
+jobs:
+ linux-editor:
+ runs-on: "ubuntu-20.04"
+
+ # Windows Editor - checkout with the plugin
+ name: Editor (target=release_debug, tools=yes)
+
+ steps:
+ - uses: actions/checkout@v2
+
+ # Azure repositories are not reliable, we need to prevent azure giving us packages.
+ - name: Make apt sources.list use the default Ubuntu repositories
+ run: |
+ sudo cp -f misc/ci/sources.list /etc/apt/sources.list
+ sudo apt-get update
+
+ # Install all packages (except scons)
+ - name: Configure dependencies
+ run: |
+ sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \
+ libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev yasm
+
+ # Upload cache on completion and check it out now
+ # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache.
+ # Linux with this will work reliably, so not as bad to edit for Linux.
+ - name: Load .scons_cache directory
+ id: linux-editor-cache
+ uses: actions/cache@v2
+ with:
+ path: ${{github.workspace}}/.scons_cache/
+ key: ${{runner.os}}-editor-${{github.sha}}
+ restore-keys: |
+ ${{runner.os}}-editor-${{github.sha}}
+ ${{runner.os}}-editor
+ ${{runner.os}}
+
+ # Use python 3.x release (works cross platform; best to keep self contained in it's own step)
+ - name: Set up Python 3.x
+ uses: actions/setup-python@v2
+ with:
+ # Semantic version range syntax or exact version of a Python version
+ python-version: '3.x'
+ # Optional - x64 or x86 architecture, defaults to x64
+ architecture: 'x64'
+
+ # Setup scons, print python version and scons version info, so if anything is broken it won't run the build.
+ - name: Configuring Python packages
+ run: |
+ python -c "import sys; print(sys.version)"
+ python -m pip install scons
+ python --version
+ scons --version
+
+ # We should always be explicit with our flags usage here since it's gonna be sure to always set those flags
+ - name: Compilation
+ env:
+ SCONS_CACHE: ${{github.workspace}}/.scons_cache/
+ run: |
+ scons -j2 verbose=yes warnings=all werror=yes platform=linuxbsd tools=yes target=release_debug
+
+ linux-template:
+ runs-on: "ubuntu-20.04"
+ name: Template (target=release, tools=no)
+
+ steps:
+ - uses: actions/checkout@v2
+
+ # Azure repositories are not reliable, we need to prevent azure giving us packages.
+ - name: Make apt sources.list use the default Ubuntu repositories
+ run: |
+ sudo cp -f misc/ci/sources.list /etc/apt/sources.list
+ sudo apt-get update
+
+ # Install all packages (except scons)
+ - name: Configure dependencies
+ run: |
+ sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \
+ libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev yasm
+
+ # Upload cache on completion and check it out now
+ # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache.
+ # Linux with this will work reliably, so not as bad to edit for Linux.
+ - name: Load .scons_cache directory
+ id: linux-template-cache
+ uses: actions/cache@v2
+ with:
+ path: ${{github.workspace}}/.scons_cache/
+ key: ${{runner.os}}-template-${{github.sha}}
+ restore-keys: |
+ ${{runner.os}}-template-${{github.sha}}
+ ${{runner.os}}-template
+ ${{runner.os}}
+
+ # Use python 3.x release (works cross platform)
+ - name: Set up Python 3.x
+ uses: actions/setup-python@v2
+ with:
+ # Semantic version range syntax or exact version of a Python version
+ python-version: '3.x'
+ # Optional - x64 or x86 architecture, defaults to x64
+ architecture: 'x64'
+
+ # You can test your matrix by printing the current Python version
+ - name: Configuring Python packages
+ run: |
+ python -c "import sys; print(sys.version)"
+ python -m pip install scons
+ python --version
+ scons --version
+ - name: Compilation
+ env:
+ SCONS_CACHE: ${{github.workspace}}/.scons_cache/
+ run: |
+ scons -j2 verbose=yes warnings=all werror=yes platform=linuxbsd target=release tools=no
diff --git a/.github/workflows/macos_builds.yml b/.github/workflows/macos_builds.yml
new file mode 100644
index 0000000000..8624178e28
--- /dev/null
+++ b/.github/workflows/macos_builds.yml
@@ -0,0 +1,96 @@
+name: MacOS Builds
+on: [push, pull_request]
+
+# Global Cache Settings
+env:
+ SCONS_CACHE_LIMIT: 8192
+
+jobs:
+ macos-editor:
+ runs-on: "macos-latest"
+
+ name: Editor (target=release_debug, tools=yes)
+
+ steps:
+ - uses: actions/checkout@v2
+
+ # Upload cache on completion and check it out now
+ # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache.
+ # Linux with this will work reliably, so not as bad to edit for Linux.
+ - name: Load .scons_cache directory
+ id: macos-editor-cache
+ uses: actions/cache@v2
+ with:
+ path: ${{github.workspace}}/.scons_cache/
+ key: ${{runner.os}}-editor-${{github.sha}}
+ restore-keys: |
+ ${{runner.os}}-editor-${{github.sha}}
+ ${{runner.os}}-editor
+ ${{runner.os}}
+
+ # Use python 3.x release (works cross platform; best to keep self contained in it's own step)
+ - name: Set up Python 3.x
+ uses: actions/setup-python@v2
+ with:
+ # Semantic version range syntax or exact version of a Python version
+ python-version: '3.x'
+ # Optional - x64 or x86 architecture, defaults to x64
+ architecture: 'x64'
+
+ # Setup scons, print python version and scons version info, so if anything is broken it won't run the build.
+ - name: Configuring Python packages
+ run: |
+ python -c "import sys; print(sys.version)"
+ python -m pip install scons
+ python --version
+ scons --version
+
+ # We should always be explicit with our flags usage here since it's gonna be sure to always set those flags
+ - name: Compilation
+ env:
+ SCONS_CACHE: ${{github.workspace}}/.scons_cache/
+ run: |
+ scons -j2 verbose=yes warnings=all werror=yes platform=osx tools=yes target=release_debug
+
+ macos-template:
+ runs-on: "macos-latest"
+ name: Template (target=release, tools=no)
+
+ steps:
+ - uses: actions/checkout@v2
+
+ # Upload cache on completion and check it out now
+ # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache.
+ # Linux with this will work reliably, so not as bad to edit for Linux.
+ - name: Load .scons_cache directory
+ id: macos-template-cache
+ uses: actions/cache@v2
+ with:
+ path: ${{github.workspace}}/.scons_cache/
+ key: ${{runner.os}}-template-${{github.sha}}
+ restore-keys: |
+ ${{runner.os}}-template-${{github.sha}}
+ ${{runner.os}}-template
+ ${{runner.os}}
+
+ # Use python 3.x release (works cross platform)
+ - name: Set up Python 3.x
+ uses: actions/setup-python@v2
+ with:
+ # Semantic version range syntax or exact version of a Python version
+ python-version: '3.x'
+ # Optional - x64 or x86 architecture, defaults to x64
+ architecture: 'x64'
+
+ # You can test your matrix by printing the current Python version
+ - name: Configuring Python packages
+ run: |
+ python -c "import sys; print(sys.version)"
+ python -m pip install scons
+ python --version
+ scons --version
+ - name: Compilation
+ env:
+ SCONS_CACHE: ${{github.workspace}}/.scons_cache/
+ run: |
+ scons -j2 verbose=yes warnings=all werror=yes platform=osx target=release tools=no
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
deleted file mode 100644
index 77554ea0ef..0000000000
--- a/.github/workflows/main.yml
+++ /dev/null
@@ -1,322 +0,0 @@
-name: Godot
-# events to run the build steps
-on: [push, pull_request]
-
-# Global Cache Settings
-# SCONS_CACHE for windows must be set in the build environment
-env:
- SCONS_CACHE_MSVC_CONFIG: true
- SCONS_CACHE_LIMIT: 8192
-jobs:
- windows-editor:
- # Windows 10 with latest image
- runs-on: "windows-latest"
-
- # Windows Editor - checkout with the plugin
- name: Windows Editor (target=release_debug, tools=yes)
-
- steps:
- - uses: actions/checkout@v2
-
- # Upload cache on completion and check it out now
- # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache.
- # Linux with this will work reliably, so not as bad to edit for Linux.
- - name: Load .scons_cache directory
- id: windows-editor-cache
- uses: RevoluPowered/cache@v2.1
- with:
- path: /.scons_cache/
- key: ${{runner.os}}-editor-${{github.sha}}
- restore-keys: |
- ${{runner.os}}-editor-${{github.sha}}
- ${{runner.os}}-editor
- ${{runner.os}}
-
- # Use python 3.x release (works cross platform; best to keep self contained in it's own step)
- - name: Set up Python 3.x
- uses: actions/setup-python@v2
- with:
- # Semantic version range syntax or exact version of a Python version
- python-version: '3.x'
- # Optional - x64 or x86 architecture, defaults to x64
- architecture: 'x64'
-
- # Setup scons, print python version and scons version info, so if anything is broken it won't run the build.
- - name: Configuring Python packages
- run: |
- python -c "import sys; print(sys.version)"
- python -m pip install scons pywin32
- python --version
- scons --version
-
- # We should always be explicit with our flags usage here since it's gonna be sure to always set those flags
- - name: Compilation
- env:
- SCONS_CACHE: /.scons_cache/
- run: |
- scons -j2 verbose=yes warnings=all werror=yes platform=windows tools=yes target=release_debug
-
-# Build Product Upload (tested and working)
-# sorry this is disabled until github can give us some more space as we would hit our limit very quickly
-# tested this code and it works fine so just enable it to get them back
-# - name: publishing godot windows-editor
-# uses: actions/upload-artifact@v1
-# with:
-# name: windows-editor (x64)
-# path: bin/godot.windows.opt.tools.64.exe
-
-
- windows-template:
- runs-on: "windows-latest"
- name: Windows Template (target=release, tools=no)
-
- steps:
- - uses: actions/checkout@v2
-
- # Upload cache on completion and check it out now
- # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache.
- # Linux with this will work reliably, so not as bad to edit for Linux.
- - name: Load .scons_cache directory
- id: windows-template-cache
- uses: RevoluPowered/cache@v2.1
- with:
- path: /.scons_cache/
- key: ${{runner.os}}-template-${{github.sha}}
- restore-keys: |
- ${{runner.os}}-template-${{github.sha}}
- ${{runner.os}}-template
- ${{runner.os}}
-
- # Use python 3.x release (works cross platform)
- - name: Set up Python 3.x
- uses: actions/setup-python@v2
- with:
- # Semantic version range syntax or exact version of a Python version
- python-version: '3.x'
- # Optional - x64 or x86 architecture, defaults to x64
- architecture: 'x64'
-
- # You can test your matrix by printing the current Python version
- - name: Configuring Python packages
- run: |
- python -c "import sys; print(sys.version)"
- python -m pip install scons pywin32
- python --version
- scons --version
- - name: Compilation
- env:
- SCONS_CACHE: /.scons_cache/
- run: |
- scons -j2 verbose=yes warnings=all werror=yes platform=windows target=release tools=no
-
-# Build Product Upload (tested and working)
-# sorry this is disabled until github can give us some more space as we would hit our limit very quickly
-# tested this code and it works fine so just enable it to get them back
-# - name: publishing godot windows-template
-# uses: actions/upload-artifact@v1
-# with:
-# name: windows-template (x64)
-# path: bin/godot.windows.opt.64.exe
-
- macos-editor:
- runs-on: "macos-latest"
-
- name: MacOS Editor (target=release_debug, tools=yes)
-
- steps:
- - uses: actions/checkout@v2
-
- # Upload cache on completion and check it out now
- # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache.
- # Linux with this will work reliably, so not as bad to edit for Linux.
- - name: Load .scons_cache directory
- id: macos-editor-cache
- uses: actions/cache@v2
- with:
- path: ${{github.workspace}}/.scons_cache/
- key: ${{runner.os}}-editor-${{github.sha}}
- restore-keys: |
- ${{runner.os}}-editor-${{github.sha}}
- ${{runner.os}}-editor
- ${{runner.os}}
-
- # Use python 3.x release (works cross platform; best to keep self contained in it's own step)
- - name: Set up Python 3.x
- uses: actions/setup-python@v2
- with:
- # Semantic version range syntax or exact version of a Python version
- python-version: '3.x'
- # Optional - x64 or x86 architecture, defaults to x64
- architecture: 'x64'
-
- # Setup scons, print python version and scons version info, so if anything is broken it won't run the build.
- - name: Configuring Python packages
- run: |
- python -c "import sys; print(sys.version)"
- python -m pip install scons
- python --version
- scons --version
-
- # We should always be explicit with our flags usage here since it's gonna be sure to always set those flags
- - name: Compilation
- env:
- SCONS_CACHE: ${{github.workspace}}/.scons_cache/
- run: |
- scons -j2 verbose=yes warnings=all werror=yes platform=osx tools=yes target=release_debug
-
- macos-template:
- runs-on: "macos-latest"
- name: MacOS Template (target=release, tools=no)
-
- steps:
- - uses: actions/checkout@v2
-
- # Upload cache on completion and check it out now
- # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache.
- # Linux with this will work reliably, so not as bad to edit for Linux.
- - name: Load .scons_cache directory
- id: macos-template-cache
- uses: actions/cache@v2
- with:
- path: ${{github.workspace}}/.scons_cache/
- key: ${{runner.os}}-template-${{github.sha}}
- restore-keys: |
- ${{runner.os}}-template-${{github.sha}}
- ${{runner.os}}-template
- ${{runner.os}}
-
- # Use python 3.x release (works cross platform)
- - name: Set up Python 3.x
- uses: actions/setup-python@v2
- with:
- # Semantic version range syntax or exact version of a Python version
- python-version: '3.x'
- # Optional - x64 or x86 architecture, defaults to x64
- architecture: 'x64'
-
- # You can test your matrix by printing the current Python version
- - name: Configuring Python packages
- run: |
- python -c "import sys; print(sys.version)"
- python -m pip install scons
- python --version
- scons --version
- - name: Compilation
- env:
- SCONS_CACHE: ${{github.workspace}}/.scons_cache/
- run: |
- scons -j2 verbose=yes warnings=all werror=yes platform=osx target=release tools=no
-
- linux-editor:
- runs-on: "ubuntu-20.04"
-
- # Windows Editor - checkout with the plugin
- name: Linux Editor (target=release_debug, tools=yes)
-
- steps:
- - uses: actions/checkout@v2
-
- # Azure repositories are not reliable, we need to prevent azure giving us packages.
- - name: Make apt sources.list use the default Ubuntu repositories
- run: |
- sudo cp -f misc/ci/sources.list /etc/apt/sources.list
- sudo apt-get update
-
- # Install all packages (except scons)
- - name: Configure dependencies
- run: |
- sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \
- libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev yasm
-
- # Upload cache on completion and check it out now
- # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache.
- # Linux with this will work reliably, so not as bad to edit for Linux.
- - name: Load .scons_cache directory
- id: linux-editor-cache
- uses: actions/cache@v2
- with:
- path: ${{github.workspace}}/.scons_cache/
- key: ${{runner.os}}-editor-${{github.sha}}
- restore-keys: |
- ${{runner.os}}-editor-${{github.sha}}
- ${{runner.os}}-editor
- ${{runner.os}}
-
- # Use python 3.x release (works cross platform; best to keep self contained in it's own step)
- - name: Set up Python 3.x
- uses: actions/setup-python@v2
- with:
- # Semantic version range syntax or exact version of a Python version
- python-version: '3.x'
- # Optional - x64 or x86 architecture, defaults to x64
- architecture: 'x64'
-
- # Setup scons, print python version and scons version info, so if anything is broken it won't run the build.
- - name: Configuring Python packages
- run: |
- python -c "import sys; print(sys.version)"
- python -m pip install scons
- python --version
- scons --version
-
- # We should always be explicit with our flags usage here since it's gonna be sure to always set those flags
- - name: Compilation
- env:
- SCONS_CACHE: ${{github.workspace}}/.scons_cache/
- run: |
- scons -j2 verbose=yes warnings=all werror=yes platform=linuxbsd tools=yes target=release_debug
-
- linux-template:
- runs-on: "ubuntu-20.04"
- name: Linux Template (target=release, tools=no)
-
- steps:
- - uses: actions/checkout@v2
-
- # Azure repositories are not reliable, we need to prevent azure giving us packages.
- - name: Make apt sources.list use the default Ubuntu repositories
- run: |
- sudo cp -f misc/ci/sources.list /etc/apt/sources.list
- sudo apt-get update
-
- # Install all packages (except scons)
- - name: Configure dependencies
- run: |
- sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \
- libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev yasm
-
- # Upload cache on completion and check it out now
- # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache.
- # Linux with this will work reliably, so not as bad to edit for Linux.
- - name: Load .scons_cache directory
- id: linux-template-cache
- uses: actions/cache@v2
- with:
- path: ${{github.workspace}}/.scons_cache/
- key: ${{runner.os}}-template-${{github.sha}}
- restore-keys: |
- ${{runner.os}}-template-${{github.sha}}
- ${{runner.os}}-template
- ${{runner.os}}
-
- # Use python 3.x release (works cross platform)
- - name: Set up Python 3.x
- uses: actions/setup-python@v2
- with:
- # Semantic version range syntax or exact version of a Python version
- python-version: '3.x'
- # Optional - x64 or x86 architecture, defaults to x64
- architecture: 'x64'
-
- # You can test your matrix by printing the current Python version
- - name: Configuring Python packages
- run: |
- python -c "import sys; print(sys.version)"
- python -m pip install scons
- python --version
- scons --version
- - name: Compilation
- env:
- SCONS_CACHE: ${{github.workspace}}/.scons_cache/
- run: |
- scons -j2 verbose=yes warnings=all werror=yes platform=linuxbsd target=release tools=no
diff --git a/.github/workflows/static-checks.yml b/.github/workflows/static_checks.yml
index 095bf32e1f..87339da776 100644
--- a/.github/workflows/static-checks.yml
+++ b/.github/workflows/static_checks.yml
@@ -1,4 +1,4 @@
-name: Godot
+name: Static Checks
on: [push, pull_request]
jobs:
diff --git a/.github/workflows/windows_builds.yml b/.github/workflows/windows_builds.yml
new file mode 100644
index 0000000000..036f11526e
--- /dev/null
+++ b/.github/workflows/windows_builds.yml
@@ -0,0 +1,118 @@
+name: Windows Builds
+on: [push, pull_request]
+
+# Global Cache Settings
+# SCONS_CACHE for windows must be set in the build environment
+env:
+ SCONS_CACHE_MSVC_CONFIG: true
+ SCONS_CACHE_LIMIT: 8192
+
+jobs:
+ windows-editor:
+ # Windows 10 with latest image
+ runs-on: "windows-latest"
+
+ # Windows Editor - checkout with the plugin
+ name: Editor (target=release_debug, tools=yes)
+
+ steps:
+ - uses: actions/checkout@v2
+
+ # Upload cache on completion and check it out now
+ # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache.
+ # Linux with this will work reliably, so not as bad to edit for Linux.
+ - name: Load .scons_cache directory
+ id: windows-editor-cache
+ uses: RevoluPowered/cache@v2.1
+ with:
+ path: /.scons_cache/
+ key: ${{runner.os}}-editor-${{github.sha}}
+ restore-keys: |
+ ${{runner.os}}-editor-${{github.sha}}
+ ${{runner.os}}-editor
+ ${{runner.os}}
+
+ # Use python 3.x release (works cross platform; best to keep self contained in it's own step)
+ - name: Set up Python 3.x
+ uses: actions/setup-python@v2
+ with:
+ # Semantic version range syntax or exact version of a Python version
+ python-version: '3.x'
+ # Optional - x64 or x86 architecture, defaults to x64
+ architecture: 'x64'
+
+ # Setup scons, print python version and scons version info, so if anything is broken it won't run the build.
+ - name: Configuring Python packages
+ run: |
+ python -c "import sys; print(sys.version)"
+ python -m pip install scons pywin32
+ python --version
+ scons --version
+
+ # We should always be explicit with our flags usage here since it's gonna be sure to always set those flags
+ - name: Compilation
+ env:
+ SCONS_CACHE: /.scons_cache/
+ run: |
+ scons -j2 verbose=yes warnings=all werror=yes platform=windows tools=yes target=release_debug
+
+# Build Product Upload (tested and working)
+# sorry this is disabled until github can give us some more space as we would hit our limit very quickly
+# tested this code and it works fine so just enable it to get them back
+# - name: publishing godot windows-editor
+# uses: actions/upload-artifact@v1
+# with:
+# name: windows-editor (x64)
+# path: bin/godot.windows.opt.tools.64.exe
+
+ windows-template:
+ runs-on: "windows-latest"
+ name: Template (target=release, tools=no)
+
+ steps:
+ - uses: actions/checkout@v2
+
+ # Upload cache on completion and check it out now
+ # Editing this is pretty dangerous for windows since it can break and needs properly tested with a fresh cache.
+ # Linux with this will work reliably, so not as bad to edit for Linux.
+ - name: Load .scons_cache directory
+ id: windows-template-cache
+ uses: RevoluPowered/cache@v2.1
+ with:
+ path: /.scons_cache/
+ key: ${{runner.os}}-template-${{github.sha}}
+ restore-keys: |
+ ${{runner.os}}-template-${{github.sha}}
+ ${{runner.os}}-template
+ ${{runner.os}}
+
+ # Use python 3.x release (works cross platform)
+ - name: Set up Python 3.x
+ uses: actions/setup-python@v2
+ with:
+ # Semantic version range syntax or exact version of a Python version
+ python-version: '3.x'
+ # Optional - x64 or x86 architecture, defaults to x64
+ architecture: 'x64'
+
+ # You can test your matrix by printing the current Python version
+ - name: Configuring Python packages
+ run: |
+ python -c "import sys; print(sys.version)"
+ python -m pip install scons pywin32
+ python --version
+ scons --version
+ - name: Compilation
+ env:
+ SCONS_CACHE: /.scons_cache/
+ run: |
+ scons -j2 verbose=yes warnings=all werror=yes platform=windows target=release tools=no
+
+# Build Product Upload (tested and working)
+# sorry this is disabled until github can give us some more space as we would hit our limit very quickly
+# tested this code and it works fine so just enable it to get them back
+# - name: publishing godot windows-template
+# uses: actions/upload-artifact@v1
+# with:
+# name: windows-template (x64)
+# path: bin/godot.windows.opt.64.exe
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 7cff3263f2..263ed9040a 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -2052,7 +2052,7 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
String args;
bool skip_breakpoints;
- if (p_current || (editor_data.get_edited_scene_root() && p_custom == editor_data.get_edited_scene_root()->get_filename())) {
+ if (p_current || (editor_data.get_edited_scene_root() && p_custom != String() && p_custom == editor_data.get_edited_scene_root()->get_filename())) {
Node *scene = editor_data.get_edited_scene_root();
if (!scene) {
@@ -2082,13 +2082,7 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
if (unsaved_cache) {
Node *scene = editor_data.get_edited_scene_root();
- if (scene) { //only autosave if there is a scene obviously
-
- if (scene->get_filename() == "") {
- show_accept(TTR("Current scene was never saved, please save it prior to running."), TTR("OK"));
- return;
- }
-
+ if (scene && scene->get_filename() != "") { // Only autosave if there is a scene and if it has a path.
_save_scene_with_preview(scene->get_filename());
}
}
diff --git a/methods.py b/methods.py
index 7b853b7821..65a460f63d 100644
--- a/methods.py
+++ b/methods.py
@@ -92,7 +92,7 @@ def update_version(module_version_string=""):
gitfolder = module_folder[8:]
if os.path.isfile(os.path.join(gitfolder, "HEAD")):
- head = open(os.path.join(gitfolder, "HEAD"), "r").readline().strip()
+ head = open(os.path.join(gitfolder, "HEAD"), "r", encoding="utf8").readline().strip()
if head.startswith("ref: "):
head = os.path.join(gitfolder, head[5:])
if os.path.isfile(head):
diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp
index ed85256695..0213094c60 100644
--- a/platform/android/export/export.cpp
+++ b/platform/android/export/export.cpp
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "export.h"
+#include "gradle_export_util.h"
#include "core/io/image_loader.h"
#include "core/io/marshalls.h"
@@ -1408,23 +1409,81 @@ class EditorExportPlatformAndroid : public EditorExportPlatform {
//printf("end\n");
}
- void _process_launcher_icons(const String &p_processing_file_name, const Ref<Image> &p_source_image, const LauncherIcon p_icon, Vector<uint8_t> &p_data) {
- if (p_processing_file_name == p_icon.export_path) {
- Ref<Image> working_image = p_source_image;
+ void _process_launcher_icons(const String &p_file_name, const Ref<Image> &p_source_image, int dimension, Vector<uint8_t> &p_data) {
+ Ref<Image> working_image = p_source_image;
- if (p_source_image->get_width() != p_icon.dimensions || p_source_image->get_height() != p_icon.dimensions) {
- working_image = p_source_image->duplicate();
- working_image->resize(p_icon.dimensions, p_icon.dimensions, Image::Interpolation::INTERPOLATE_LANCZOS);
+ if (p_source_image->get_width() != dimension || p_source_image->get_height() != dimension) {
+ working_image = p_source_image->duplicate();
+ working_image->resize(dimension, dimension, Image::Interpolation::INTERPOLATE_LANCZOS);
+ }
+
+ Vector<uint8_t> png_buffer;
+ Error err = PNGDriverCommon::image_to_png(working_image, png_buffer);
+ if (err == OK) {
+ p_data.resize(png_buffer.size());
+ memcpy(p_data.ptrw(), png_buffer.ptr(), p_data.size());
+ } else {
+ String err_str = String("Failed to convert resized icon (") + p_file_name + ") to png.";
+ WARN_PRINT(err_str.utf8().get_data());
+ }
+ }
+
+ void load_icon_refs(const Ref<EditorExportPreset> &p_preset, Ref<Image> &icon, Ref<Image> &foreground, Ref<Image> &background) {
+ String project_icon_path = ProjectSettings::get_singleton()->get("application/config/icon");
+
+ icon.instance();
+ foreground.instance();
+ background.instance();
+
+ // Regular icon: user selection -> project icon -> default.
+ String path = static_cast<String>(p_preset->get(launcher_icon_option)).strip_edges();
+ if (path.empty() || ImageLoader::load_image(path, icon) != OK) {
+ ImageLoader::load_image(project_icon_path, icon);
+ }
+
+ // Adaptive foreground: user selection -> regular icon (user selection -> project icon -> default).
+ path = static_cast<String>(p_preset->get(launcher_adaptive_icon_foreground_option)).strip_edges();
+ if (path.empty() || ImageLoader::load_image(path, foreground) != OK) {
+ foreground = icon;
+ }
+
+ // Adaptive background: user selection -> default.
+ path = static_cast<String>(p_preset->get(launcher_adaptive_icon_background_option)).strip_edges();
+ if (!path.empty()) {
+ ImageLoader::load_image(path, background);
+ }
+ }
+
+ void store_image(const LauncherIcon launcher_icon, const Vector<uint8_t> &data) {
+ String img_path = launcher_icon.export_path;
+ img_path = img_path.insert(0, "res://android/build/");
+ store_file_at_path(img_path, data);
+ }
+
+ void _copy_icons_to_gradle_project(const Ref<EditorExportPreset> &p_preset, const Ref<Image> &main_image,
+ const Ref<Image> &foreground, const Ref<Image> &background) {
+ // Prepare images to be resized for the icons. If some image ends up being uninitialized,
+ // the default image from the export template will be used.
+
+ for (int i = 0; i < icon_densities_count; ++i) {
+ if (main_image.is_valid() && !main_image->empty()) {
+ Vector<uint8_t> data;
+ _process_launcher_icons(launcher_icons[i].export_path, main_image, launcher_icons[i].dimensions, data);
+ store_image(launcher_icons[i], data);
}
- Vector<uint8_t> png_buffer;
- Error err = PNGDriverCommon::image_to_png(working_image, png_buffer);
- if (err == OK) {
- p_data.resize(png_buffer.size());
- memcpy(p_data.ptrw(), png_buffer.ptr(), p_data.size());
- } else {
- String err_str = String("Failed to convert resized icon (") + p_processing_file_name + ") to png.";
- WARN_PRINT(err_str.utf8().get_data());
+ if (foreground.is_valid() && !foreground->empty()) {
+ Vector<uint8_t> data;
+ _process_launcher_icons(launcher_adaptive_icon_foregrounds[i].export_path, foreground,
+ launcher_adaptive_icon_foregrounds[i].dimensions, data);
+ store_image(launcher_adaptive_icon_foregrounds[i], data);
+ }
+
+ if (background.is_valid() && !background->empty()) {
+ Vector<uint8_t> data;
+ _process_launcher_icons(launcher_adaptive_icon_backgrounds[i].export_path, background,
+ launcher_adaptive_icon_backgrounds[i].dimensions, data);
+ store_image(launcher_adaptive_icon_backgrounds[i], data);
}
}
}
@@ -2006,6 +2065,12 @@ public:
bool use_custom_build = bool(p_preset->get("custom_template/use_custom_build"));
+ Ref<Image> main_image;
+ Ref<Image> foreground;
+ Ref<Image> background;
+
+ load_icon_refs(p_preset, main_image, foreground, background);
+
if (use_custom_build) {
//re-generate build.gradle and AndroidManifest.xml
{ //test that installed build version is alright
@@ -2028,6 +2093,9 @@ public:
if (err != OK) {
EditorNode::add_io_error("Unable to overwrite res://android/build/res/*.xml files with project name");
}
+ // Copies the project icon files into the appropriate Gradle project directory
+ _copy_icons_to_gradle_project(p_preset, main_image, foreground, background);
+
//build project if custom build is enabled
String sdk_path = EDITOR_GET("export/android/custom_build_sdk_path");
@@ -2157,34 +2225,7 @@ public:
Vector<String> enabled_abis = get_enabled_abis(p_preset);
- String project_icon_path = ProjectSettings::get_singleton()->get("application/config/icon");
-
// Prepare images to be resized for the icons. If some image ends up being uninitialized, the default image from the export template will be used.
- Ref<Image> launcher_icon_image;
- Ref<Image> launcher_adaptive_icon_foreground_image;
- Ref<Image> launcher_adaptive_icon_background_image;
-
- launcher_icon_image.instance();
- launcher_adaptive_icon_foreground_image.instance();
- launcher_adaptive_icon_background_image.instance();
-
- // Regular icon: user selection -> project icon -> default.
- String path = static_cast<String>(p_preset->get(launcher_icon_option)).strip_edges();
- if (path.empty() || ImageLoader::load_image(path, launcher_icon_image) != OK) {
- ImageLoader::load_image(project_icon_path, launcher_icon_image);
- }
-
- // Adaptive foreground: user selection -> regular icon (user selection -> project icon -> default).
- path = static_cast<String>(p_preset->get(launcher_adaptive_icon_foreground_option)).strip_edges();
- if (path.empty() || ImageLoader::load_image(path, launcher_adaptive_icon_foreground_image) != OK) {
- launcher_adaptive_icon_foreground_image = launcher_icon_image;
- }
-
- // Adaptive background: user selection -> default.
- path = static_cast<String>(p_preset->get(launcher_adaptive_icon_background_option)).strip_edges();
- if (!path.empty()) {
- ImageLoader::load_image(path, launcher_adaptive_icon_background_image);
- }
Vector<String> invalid_abis(enabled_abis);
while (ret == UNZ_OK) {
@@ -2211,21 +2252,27 @@ public:
_fix_manifest(p_preset, data, p_flags & (DEBUG_FLAG_DUMB_CLIENT | DEBUG_FLAG_REMOTE_DEBUG));
}
- if (file == "resources.arsc") {
- if (!use_custom_build) {
+ if (!use_custom_build) {
+ if (file == "resources.arsc") {
_fix_resources(p_preset, data);
}
- }
- for (int i = 0; i < icon_densities_count; ++i) {
- if (launcher_icon_image.is_valid() && !launcher_icon_image->empty()) {
- _process_launcher_icons(file, launcher_icon_image, launcher_icons[i], data);
- }
- if (launcher_adaptive_icon_foreground_image.is_valid() && !launcher_adaptive_icon_foreground_image->empty()) {
- _process_launcher_icons(file, launcher_adaptive_icon_foreground_image, launcher_adaptive_icon_foregrounds[i], data);
- }
- if (launcher_adaptive_icon_background_image.is_valid() && !launcher_adaptive_icon_background_image->empty()) {
- _process_launcher_icons(file, launcher_adaptive_icon_background_image, launcher_adaptive_icon_backgrounds[i], data);
+ for (int i = 0; i < icon_densities_count; ++i) {
+ if (main_image.is_valid() && !main_image->empty()) {
+ if (file == launcher_icons[i].export_path) {
+ _process_launcher_icons(file, main_image, launcher_icons[i].dimensions, data);
+ }
+ }
+ if (foreground.is_valid() && !foreground->empty()) {
+ if (file == launcher_adaptive_icon_foregrounds[i].export_path) {
+ _process_launcher_icons(file, foreground, launcher_adaptive_icon_foregrounds[i].dimensions, data);
+ }
+ }
+ if (background.is_valid() && !background->empty()) {
+ if (file == launcher_adaptive_icon_backgrounds[i].export_path) {
+ _process_launcher_icons(file, background, launcher_adaptive_icon_backgrounds[i].dimensions, data);
+ }
+ }
}
}
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp
index 3a0fbeaac3..646f9f6095 100644
--- a/scene/gui/line_edit.cpp
+++ b/scene/gui/line_edit.cpp
@@ -699,7 +699,7 @@ void LineEdit::_notification(int p_what) {
update();
} break;
case NOTIFICATION_DRAW: {
- if ((!has_focus() && !menu->has_focus()) || !window_has_focus) {
+ if ((!has_focus() && !menu->has_focus() && !caret_force_displayed) || !window_has_focus) {
draw_caret = false;
}
@@ -925,10 +925,14 @@ void LineEdit::_notification(int p_what) {
}
} break;
case NOTIFICATION_FOCUS_ENTER: {
- if (caret_blink_enabled) {
- caret_blink_timer->start();
- } else {
- draw_caret = true;
+ if (!caret_force_displayed) {
+ if (caret_blink_enabled) {
+ if (caret_blink_timer->is_stopped()) {
+ caret_blink_timer->start();
+ }
+ } else {
+ draw_caret = true;
+ }
}
if (get_viewport()->get_window_id() != DisplayServer::INVALID_WINDOW_ID) {
@@ -947,7 +951,7 @@ void LineEdit::_notification(int p_what) {
} break;
case NOTIFICATION_FOCUS_EXIT: {
- if (caret_blink_enabled) {
+ if (caret_blink_enabled && !caret_force_displayed) {
caret_blink_timer->stop();
}
@@ -1167,9 +1171,11 @@ bool LineEdit::cursor_get_blink_enabled() const {
void LineEdit::cursor_set_blink_enabled(const bool p_enabled) {
caret_blink_enabled = p_enabled;
- if (has_focus()) {
+ if (has_focus() || caret_force_displayed) {
if (p_enabled) {
- caret_blink_timer->start();
+ if (caret_blink_timer->is_stopped()) {
+ caret_blink_timer->start();
+ }
} else {
caret_blink_timer->stop();
}
@@ -1178,6 +1184,16 @@ void LineEdit::cursor_set_blink_enabled(const bool p_enabled) {
draw_caret = true;
}
+bool LineEdit::cursor_get_force_displayed() const {
+ return caret_force_displayed;
+}
+
+void LineEdit::cursor_set_force_displayed(const bool p_enabled) {
+ caret_force_displayed = p_enabled;
+ cursor_set_blink_enabled(caret_blink_enabled);
+ update();
+}
+
float LineEdit::cursor_get_blink_speed() const {
return caret_blink_timer->get_wait_time();
}
@@ -1200,7 +1216,7 @@ void LineEdit::_reset_caret_blink_timer() {
void LineEdit::_toggle_draw_caret() {
draw_caret = !draw_caret;
- if (is_visible_in_tree() && has_focus() && window_has_focus) {
+ if (is_visible_in_tree() && ((has_focus() && window_has_focus) || caret_force_displayed)) {
update();
}
}
@@ -1804,6 +1820,8 @@ void LineEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_expand_to_text_length"), &LineEdit::get_expand_to_text_length);
ClassDB::bind_method(D_METHOD("cursor_set_blink_enabled", "enabled"), &LineEdit::cursor_set_blink_enabled);
ClassDB::bind_method(D_METHOD("cursor_get_blink_enabled"), &LineEdit::cursor_get_blink_enabled);
+ ClassDB::bind_method(D_METHOD("cursor_set_force_displayed", "enabled"), &LineEdit::cursor_set_force_displayed);
+ ClassDB::bind_method(D_METHOD("cursor_get_force_displayed"), &LineEdit::cursor_get_force_displayed);
ClassDB::bind_method(D_METHOD("cursor_set_blink_speed", "blink_speed"), &LineEdit::cursor_set_blink_speed);
ClassDB::bind_method(D_METHOD("cursor_get_blink_speed"), &LineEdit::cursor_get_blink_speed);
ClassDB::bind_method(D_METHOD("set_max_length", "chars"), &LineEdit::set_max_length);
@@ -1870,6 +1888,7 @@ void LineEdit::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret_blink"), "cursor_set_blink_enabled", "cursor_get_blink_enabled");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "caret_blink_speed", PROPERTY_HINT_RANGE, "0.1,10,0.01"), "cursor_set_blink_speed", "cursor_get_blink_speed");
ADD_PROPERTY(PropertyInfo(Variant::INT, "caret_position"), "set_cursor_position", "get_cursor_position");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret_force_displayed"), "cursor_set_force_displayed", "cursor_get_force_displayed");
}
LineEdit::LineEdit() {
@@ -1899,6 +1918,7 @@ LineEdit::LineEdit() {
draw_caret = true;
caret_blink_enabled = false;
+ caret_force_displayed = false;
caret_blink_timer = memnew(Timer);
add_child(caret_blink_timer);
caret_blink_timer->set_wait_time(0.65);
diff --git a/scene/gui/line_edit.h b/scene/gui/line_edit.h
index 2ed63e7d50..d6cc1f1f11 100644
--- a/scene/gui/line_edit.h
+++ b/scene/gui/line_edit.h
@@ -136,6 +136,7 @@ private:
void update_placeholder_width();
bool caret_blink_enabled;
+ bool caret_force_displayed;
bool draw_caret;
bool window_has_focus;
@@ -203,6 +204,9 @@ public:
float cursor_get_blink_speed() const;
void cursor_set_blink_speed(const float p_speed);
+ bool cursor_get_force_displayed() const;
+ void cursor_set_force_displayed(const bool p_enabled);
+
void copy_text();
void cut_text();
void paste_text();