summaryrefslogtreecommitdiff
path: root/platform/javascript
diff options
context:
space:
mode:
authormuiroc <ian.mario.dev@gmail.com>2020-02-07 01:18:11 +0100
committermuiroc <ian.mario.dev@gmail.com>2020-02-10 14:27:30 +0100
commite51c6a0d286a9a6a4a9989738b544bbbb9b41eeb (patch)
treed4f228395122e4e3ea8b64ea21d724fc46c4b598 /platform/javascript
parent74a12ad95cf2276ad0e79df475a30eee880c8a3a (diff)
Allow per pixel transparency in javascript platform
Diffstat (limited to 'platform/javascript')
-rw-r--r--platform/javascript/os_javascript.cpp21
-rw-r--r--platform/javascript/os_javascript.h4
2 files changed, 24 insertions, 1 deletions
diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp
index 34dce90b6b..13615de65b 100644
--- a/platform/javascript/os_javascript.cpp
+++ b/platform/javascript/os_javascript.cpp
@@ -220,6 +220,20 @@ void OS_JavaScript::get_fullscreen_mode_list(List<VideoMode> *p_list, int p_scre
p_list->push_back(OS::VideoMode(screen.width, screen.height, true));
}
+bool OS_JavaScript::get_window_per_pixel_transparency_enabled() const {
+ if (!is_layered_allowed()) {
+ return false;
+ }
+ return transparency_enabled;
+}
+
+void OS_JavaScript::set_window_per_pixel_transparency_enabled(bool p_enabled) {
+ if (!is_layered_allowed()) {
+ return;
+ }
+ transparency_enabled = p_enabled;
+}
+
// Keys
template <typename T>
@@ -886,10 +900,14 @@ Error OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver,
EmscriptenWebGLContextAttributes attributes;
emscripten_webgl_init_context_attributes(&attributes);
- attributes.alpha = false;
+ attributes.alpha = GLOBAL_GET("display/window/per_pixel_transparency/allowed");
attributes.antialias = false;
ERR_FAIL_INDEX_V(p_video_driver, VIDEO_DRIVER_MAX, ERR_INVALID_PARAMETER);
+ if (p_desired.layered) {
+ set_window_per_pixel_transparency_enabled(true);
+ }
+
bool gles3 = true;
if (p_video_driver == VIDEO_DRIVER_GLES2) {
gles3 = false;
@@ -1315,6 +1333,7 @@ OS_JavaScript::OS_JavaScript(int p_argc, char *p_argv[]) {
window_maximized = false;
entering_fullscreen = false;
just_exited_fullscreen = false;
+ transparency_enabled = false;
main_loop = NULL;
diff --git a/platform/javascript/os_javascript.h b/platform/javascript/os_javascript.h
index 5c02a292ee..65a18830ed 100644
--- a/platform/javascript/os_javascript.h
+++ b/platform/javascript/os_javascript.h
@@ -46,6 +46,7 @@ class OS_JavaScript : public OS_Unix {
bool window_maximized;
bool entering_fullscreen;
bool just_exited_fullscreen;
+ bool transparency_enabled;
InputDefault *input;
Ref<InputEventKey> deferred_key_event;
@@ -123,6 +124,9 @@ public:
virtual void set_mouse_mode(MouseMode p_mode);
virtual MouseMode get_mouse_mode() const;
+ virtual bool get_window_per_pixel_transparency_enabled() const;
+ virtual void set_window_per_pixel_transparency_enabled(bool p_enabled);
+
virtual bool has_touchscreen_ui_hint() const;
virtual bool is_joy_known(int p_device);