diff options
-rw-r--r-- | core/os/os.cpp | 4 | ||||
-rw-r--r-- | core/os/os.h | 7 | ||||
-rw-r--r-- | main/main.cpp | 2 | ||||
-rw-r--r-- | platform/x11/os_x11.cpp | 16 | ||||
-rw-r--r-- | platform/x11/os_x11.h | 2 |
5 files changed, 31 insertions, 0 deletions
diff --git a/core/os/os.cpp b/core/os/os.cpp index e93038f854..0bc06c8375 100644 --- a/core/os/os.cpp +++ b/core/os/os.cpp @@ -523,6 +523,10 @@ String OS::get_joy_guid(int p_device) const { return "Default Joystick"; } +void OS::set_context(int p_context) { + +} + OS::OS() { last_error=NULL; frames_drawn=0; diff --git a/core/os/os.h b/core/os/os.h index e53980a8fe..dd1cf2ded2 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -402,6 +402,13 @@ public: virtual bool is_joy_known(int p_device); virtual String get_joy_guid(int p_device)const; + enum EngineContext { + CONTEXT_EDITOR, + CONTEXT_PROJECTMAN, + }; + + virtual void set_context(int p_context); + OS(); virtual ~OS(); diff --git a/main/main.cpp b/main/main.cpp index 19fe037613..023d8d49a2 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1319,6 +1319,7 @@ bool Main::start() { } } } + OS::get_singleton()->set_context(OS::CONTEXT_EDITOR); //editor_node->set_edited_scene(game); } else { @@ -1463,6 +1464,7 @@ bool Main::start() { ProjectManager *pmanager = memnew( ProjectManager ); sml->get_root()->add_child(pmanager); + OS::get_singleton()->set_context(OS::CONTEXT_PROJECTMAN); } #endif diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index f42e93b93f..89c674d537 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -1782,6 +1782,22 @@ String OS_X11::get_joy_guid(int p_device) const { return input->get_joy_guid_remapped(p_device); } +void OS_X11::set_context(int p_context) { + + XClassHint* classHint = NULL; + classHint = XAllocClassHint(); + if (classHint) { + + if (p_context == CONTEXT_EDITOR) + classHint->res_name = (char *)"Godot_Editor"; + if (p_context == CONTEXT_PROJECTMAN) + classHint->res_name = (char *)"Godot_ProjectList"; + classHint->res_class = (char *)"Godot"; + XSetClassHint(x11_display, x11_window, classHint); + XFree(classHint); + } +} + OS_X11::OS_X11() { #ifdef RTAUDIO_ENABLED diff --git a/platform/x11/os_x11.h b/platform/x11/os_x11.h index 91dbeac284..0891e4b8eb 100644 --- a/platform/x11/os_x11.h +++ b/platform/x11/os_x11.h @@ -226,6 +226,8 @@ public: virtual bool is_joy_known(int p_device); virtual String get_joy_guid(int p_device) const; + virtual void set_context(int p_context); + void run(); OS_X11(); |