From f40225393900885a16591cdb68158ca50e3612fa Mon Sep 17 00:00:00 2001 From: Guilherme Felipe Date: Fri, 5 Oct 2018 17:18:10 -0300 Subject: [PATCH] [x11] Use "application/config/name" for WM_CLASS --- core/os/os.h | 1 + main/main.cpp | 3 +++ platform/x11/os_x11.cpp | 10 +++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/core/os/os.h b/core/os/os.h index 7786ffb26eb..53a5ebde016 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -480,6 +480,7 @@ public: enum EngineContext { CONTEXT_EDITOR, CONTEXT_PROJECTMAN, + CONTEXT_ENGINE, }; virtual void set_context(int p_context); diff --git a/main/main.cpp b/main/main.cpp index 41ae368087e..2463d256641 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1692,6 +1692,9 @@ bool Main::start() { OS::get_singleton()->set_context(OS::CONTEXT_EDITOR); } #endif + if (!editor) { + OS::get_singleton()->set_context(OS::CONTEXT_ENGINE); + } } if (!project_manager && !editor) { // game diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index 5be0b9304a2..9df5daa1bd1 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -2849,11 +2849,19 @@ void OS_X11::set_context(int p_context) { XClassHint *classHint = XAllocClassHint(); if (classHint) { + char *wm_class = (char *)"Godot"; 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"; + + if (p_context == CONTEXT_ENGINE) { + classHint->res_name = (char *)"Godot_Engine"; + wm_class = (char *)((String)GLOBAL_GET("application/config/name")).utf8().ptrw(); + } + + classHint->res_class = wm_class; + XSetClassHint(x11_display, x11_window, classHint); XFree(classHint); }