Merge pull request #22733 from guilhermefelipecgs/fix_wm_class

[x11] Use "application/config/name" for WM_CLASS
This commit is contained in:
Rémi Verschelde 2018-12-07 22:35:17 +01:00 committed by GitHub
commit dc2fadc14d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 1 deletions

View file

@ -480,6 +480,7 @@ public:
enum EngineContext {
CONTEXT_EDITOR,
CONTEXT_PROJECTMAN,
CONTEXT_ENGINE,
};
virtual void set_context(int p_context);

View file

@ -1705,6 +1705,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

View file

@ -2853,11 +2853,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);
}