|
@@ -3405,8 +3405,8 @@ void DisplayServerMacOS::set_icon(const Ref<Image> &p_icon) {
|
|
|
[NSApp setApplicationIconImage:nsimg];
|
|
|
}
|
|
|
|
|
|
-DisplayServer *DisplayServerMacOS::create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
|
|
- DisplayServer *ds = memnew(DisplayServerMacOS(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_resolution, r_error));
|
|
|
+DisplayServer *DisplayServerMacOS::create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
|
|
+ DisplayServer *ds = memnew(DisplayServerMacOS(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_position, p_resolution, r_error));
|
|
|
if (r_error != OK) {
|
|
|
if (p_rendering_driver == "vulkan") {
|
|
|
String executable_command;
|
|
@@ -3575,7 +3575,7 @@ bool DisplayServerMacOS::mouse_process_popups(bool p_close) {
|
|
|
return closed;
|
|
|
}
|
|
|
|
|
|
-DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
|
|
|
+DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, Error &r_error) {
|
|
|
Input::get_singleton()->set_event_dispatch_function(_dispatch_input_events);
|
|
|
|
|
|
r_error = OK;
|
|
@@ -3684,6 +3684,11 @@ DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowM
|
|
|
Point2i window_position(
|
|
|
screen_get_position(0).x + (screen_get_size(0).width - p_resolution.width) / 2,
|
|
|
screen_get_position(0).y + (screen_get_size(0).height - p_resolution.height) / 2);
|
|
|
+
|
|
|
+ if (p_position != nullptr) {
|
|
|
+ window_position = *p_position;
|
|
|
+ }
|
|
|
+
|
|
|
WindowID main_window = _create_window(p_mode, p_vsync_mode, Rect2i(window_position, p_resolution));
|
|
|
ERR_FAIL_COND(main_window == INVALID_WINDOW_ID);
|
|
|
for (int i = 0; i < WINDOW_FLAG_MAX; i++) {
|