Big pastes on Mac

master
Allen Webster 2017-11-27 12:14:59 -05:00
parent c7b6948195
commit ede9083e71
2 changed files with 13 additions and 5 deletions

View File

@ -185,10 +185,17 @@ static i32 did_update_for_clipboard = true;
if (data != nil){ if (data != nil){
u32 copy_length = data.length; u32 copy_length = data.length;
if (copy_length > 0){ if (copy_length > 0){
// TODO(allen): Grow clipboard memory if needed. if (copy_length + 1 >= osx_objc.clipboard_max){
if (copy_length+1 < osx_objc.clipboard_max){ osx_free(osx_objc.clipboard_data, osx_objc.clipboard_max);
osx_objc.clipboard_max = l_round_up_u32(copy_length + 1, KB(4));
osx_objc.clipboard_data = osx_allocate(osx_objc.clipboard_max);
}
if (copy_length + 1 < osx_objc.clipboard_max){
osx_objc.clipboard_size = copy_length; osx_objc.clipboard_size = copy_length;
[data getBytes: osx_objc.clipboard_data length: copy_length]; [data
getBytes: osx_objc.clipboard_data
length: copy_length];
((char*)osx_objc.clipboard_data)[copy_length] = 0; ((char*)osx_objc.clipboard_data)[copy_length] = 0;
osx_objc.has_clipboard_item = true; osx_objc.has_clipboard_item = true;
} }
@ -828,7 +835,7 @@ int
main(int argc, char **argv){ main(int argc, char **argv){
memset(&osx_objc, 0, sizeof(osx_objc)); memset(&osx_objc, 0, sizeof(osx_objc));
umem clipboard_size = MB(4); u32 clipboard_size = KB(16);
osx_objc.clipboard_data = osx_allocate(clipboard_size); osx_objc.clipboard_data = osx_allocate(clipboard_size);
osx_objc.clipboard_max = clipboard_size; osx_objc.clipboard_max = clipboard_size;
osx_objc.argc = argc; osx_objc.argc = argc;

View File

@ -43,7 +43,8 @@ typedef struct OSX_Objective_C_Vars{
u32 prev_clipboard_change_count; u32 prev_clipboard_change_count;
b32 has_clipboard_item; b32 has_clipboard_item;
void *clipboard_data; void *clipboard_data;
umem clipboard_size, clipboard_max; u32 clipboard_size;
u32 clipboard_max;
b32 just_posted_to_clipboard; b32 just_posted_to_clipboard;
char *clipboard_space; char *clipboard_space;