Bladeren bron

Enable --parent-window on linux

Daniele Bartolini 11 jaren geleden
bovenliggende
commit
68e121a7e0
3 gewijzigde bestanden met toevoegingen van 12 en 6 verwijderingen
  1. 7 0
      engine/crown.cpp
  2. 1 0
      engine/crown.h
  3. 4 6
      engine/main/main_linux.cpp

+ 7 - 0
engine/crown.cpp

@@ -85,6 +85,7 @@ CommandLineSettings parse_command_line(int argc, char** argv)
 	cls.wait_console = false;
 	cls.do_compile = false;
 	cls.do_continue = false;
+	cls.parent_window = 0;
 
 	CommandLine cmd(argc, argv);
 
@@ -120,6 +121,12 @@ CommandLineSettings parse_command_line(int argc, char** argv)
 	cls.do_compile = cmd.has_argument("compile");
 	cls.do_continue = cmd.has_argument("continue");
 
+	const char* parent = cmd.get_parameter("parent-window");
+	if (parent)
+	{
+		cls.parent_window = string::parse_uint(parent);
+	}
+
 	return cls;
 }
 

+ 1 - 0
engine/crown.h

@@ -47,6 +47,7 @@ namespace crown
 		bool wait_console;
 		bool do_compile;
 		bool do_continue;
+		uint32_t parent_window;
 	};
 
 	CommandLineSettings parse_command_line(int argc, char** argv);

+ 4 - 6
engine/main/main_linux.cpp

@@ -217,11 +217,10 @@ struct LinuxDevice
 		, m_x11_parent_window(None)
 		, m_x11_hidden_cursor(None)
 		, m_screen_config(NULL)
-		, m_parent_window_handle(0)
 	{
 	}
 
-	int32_t run(Filesystem* fs, ConfigSettings* cs)
+	int32_t run(Filesystem* fs, ConfigSettings* cs, CommandLineSettings* cls)
 	{
 		// Create main window
 		XInitThreads();
@@ -234,8 +233,8 @@ struct LinuxDevice
 		int depth = DefaultDepth(m_x11_display, screen);
 		Visual* visual = DefaultVisual(m_x11_display, screen);
 
-		m_x11_parent_window = (m_parent_window_handle == 0) ? RootWindow(m_x11_display, screen) :
-			(Window) m_parent_window_handle;
+		m_x11_parent_window = (cls->parent_window == 0) ? RootWindow(m_x11_display, screen) :
+			(Window) cls->parent_window;
 
 		// Create main window
 		XSetWindowAttributes win_attribs;
@@ -420,7 +419,6 @@ public:
 	Atom m_wm_delete_message;
 	XRRScreenConfiguration* m_screen_config;
 	bool m_x11_detectable_autorepeat;
-	uint32_t m_parent_window_handle;
 	OsEventQueue m_queue;
 };
 
@@ -456,7 +454,7 @@ int main(int argc, char** argv)
 	if (do_continue)
 	{
 		DiskFilesystem dst_fs(cls.bundle_dir);
-		exitcode = crown::s_ldvc.run(&dst_fs, &cs);
+		exitcode = crown::s_ldvc.run(&dst_fs, &cs, &cls);
 	}
 
 	bundle_compiler_globals::shutdown();