瀏覽代碼

Merge pull request #3493 from Hinsbart/wm_class

x11: use different strings for WM_CLASS depending on context
Rémi Verschelde 9 年之前
父節點
當前提交
c0aade4ba4
共有 5 個文件被更改,包括 31 次插入0 次删除
  1. 4 0
      core/os/os.cpp
  2. 7 0
      core/os/os.h
  3. 2 0
      main/main.cpp
  4. 16 0
      platform/x11/os_x11.cpp
  5. 2 0
      platform/x11/os_x11.h

+ 4 - 0
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;

+ 7 - 0
core/os/os.h

@@ -404,6 +404,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();
 

+ 2 - 0
main/main.cpp

@@ -1321,6 +1321,7 @@ bool Main::start() {
 						}
 					}
 				}
+				OS::get_singleton()->set_context(OS::CONTEXT_EDITOR);
 
 				//editor_node->set_edited_scene(game);
 			} else {
@@ -1465,6 +1466,7 @@ bool Main::start() {
 
 			ProjectManager *pmanager = memnew( ProjectManager );
 			sml->get_root()->add_child(pmanager);
+			OS::get_singleton()->set_context(OS::CONTEXT_PROJECTMAN);
 		}
 
 #endif

+ 16 - 0
platform/x11/os_x11.cpp

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

+ 2 - 0
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();