فهرست منبع

[x11] Use "application/config/name" for WM_CLASS

Guilherme Felipe 7 سال پیش
والد
کامیت
f402253939
3فایلهای تغییر یافته به همراه13 افزوده شده و 1 حذف شده
  1. 1 0
      core/os/os.h
  2. 3 0
      main/main.cpp
  3. 9 1
      platform/x11/os_x11.cpp

+ 1 - 0
core/os/os.h

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

+ 3 - 0
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

+ 9 - 1
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);
 	}