diff options
-rw-r--r-- | core/io/marshalls.cpp | 7 | ||||
-rw-r--r-- | platform/osx/os_osx.mm | 11 |
2 files changed, 14 insertions, 4 deletions
diff --git a/core/io/marshalls.cpp b/core/io/marshalls.cpp index c5d59f786d..e701a89c78 100644 --- a/core/io/marshalls.cpp +++ b/core/io/marshalls.cpp @@ -807,11 +807,16 @@ static void _encode_string(const String &p_string, uint8_t *&buf, int &r_len) { encode_uint32(utf8.length(), buf); buf += 4; copymem(buf, utf8.get_data(), utf8.length()); + buf += utf8.length(); } r_len += 4 + utf8.length(); - while (r_len % 4) + while (r_len % 4) { r_len++; //pad + if (buf) { + buf++; + } + } } Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bool p_object_as_id) { diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index 6d8a6eca66..33b1e64dd4 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -1514,9 +1514,14 @@ Point2 OS_OSX::get_window_position() const { void OS_OSX::set_window_position(const Point2 &p_position) { - Point2 size = p_position; - size /= display_scale; - [window_object setFrame:NSMakeRect(size.x, size.y, [window_object frame].size.width, [window_object frame].size.height) display:YES]; + Size2 scr = get_screen_size(); + NSPoint pos; + + pos.x = p_position.x / display_scale; + // For OS X the y starts at the bottom + pos.y = (scr.height - p_position.y) / display_scale; + + [window_object setFrameTopLeftPoint:pos]; _update_window(); }; |