You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			78 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Diff
		
	
			
		
		
	
	
			78 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Diff
		
	
diff -up fltk-1.3.3/src/Fl_cocoa.mm.clip fltk-1.3.3/src/Fl_cocoa.mm
 | 
						|
--- fltk-1.3.3/src/Fl_cocoa.mm.clip	2014-11-02 22:06:07.000000000 +0100
 | 
						|
+++ fltk-1.3.3/src/Fl_cocoa.mm	2015-04-20 13:45:03.526688921 +0200
 | 
						|
@@ -3061,6 +3061,14 @@ static void clipboard_check(void)
 | 
						|
   fl_trigger_clipboard_notify(1);
 | 
						|
 }
 | 
						|
 
 | 
						|
+static void resize_selection_buffer(int len, int clipboard) {
 | 
						|
+  if (len <= fl_selection_buffer_length[clipboard])
 | 
						|
+    return;
 | 
						|
+  delete[] fl_selection_buffer[clipboard];
 | 
						|
+  fl_selection_buffer[clipboard] = new char[len+100];
 | 
						|
+  fl_selection_buffer_length[clipboard] = len+100;
 | 
						|
+}
 | 
						|
+
 | 
						|
 /*
 | 
						|
  * create a selection
 | 
						|
  * stuff: pointer to selected data
 | 
						|
@@ -3069,11 +3077,7 @@ static void clipboard_check(void)
 | 
						|
  */
 | 
						|
 void Fl::copy(const char *stuff, int len, int clipboard, const char *type) {
 | 
						|
   if (!stuff || len<0) return;
 | 
						|
-  if (len+1 > fl_selection_buffer_length[clipboard]) {
 | 
						|
-    delete[] fl_selection_buffer[clipboard];
 | 
						|
-    fl_selection_buffer[clipboard] = new char[len+100];
 | 
						|
-    fl_selection_buffer_length[clipboard] = len+100;
 | 
						|
-  }
 | 
						|
+  resize_selection_buffer(len+1, clipboard);
 | 
						|
   memcpy(fl_selection_buffer[clipboard], stuff, len);
 | 
						|
   fl_selection_buffer[clipboard][len] = 0; // needed for direct paste
 | 
						|
   fl_selection_length[clipboard] = len;
 | 
						|
@@ -3087,7 +3091,7 @@ void Fl::copy(const char *stuff, int len
 | 
						|
   }
 | 
						|
 }
 | 
						|
 
 | 
						|
-static int get_plain_text_from_clipboard(char **buffer, int previous_length)
 | 
						|
+static int get_plain_text_from_clipboard(int clipboard)
 | 
						|
 {
 | 
						|
   NSInteger length = 0;
 | 
						|
   NSPasteboard *clip = [NSPasteboard generalPasteboard];
 | 
						|
@@ -3109,21 +3113,17 @@ static int get_plain_text_from_clipboard
 | 
						|
 	len = strlen(aux_c) + 1;
 | 
						|
       }
 | 
						|
       else len = [data length] + 1;
 | 
						|
-      if ( len >= previous_length ) {
 | 
						|
-	length = len;
 | 
						|
-	delete[] *buffer;
 | 
						|
-	*buffer = new char[len];
 | 
						|
-      }
 | 
						|
+      resize_selection_buffer(len, clipboard);
 | 
						|
       if (![found isEqualToString:utf8_format]) {
 | 
						|
-	strcpy(*buffer, aux_c);
 | 
						|
-	free(aux_c);
 | 
						|
+        strcpy(fl_selection_buffer[clipboard], aux_c);
 | 
						|
+        free(aux_c);
 | 
						|
       }
 | 
						|
       else {
 | 
						|
-	[data getBytes:*buffer];
 | 
						|
+        [data getBytes:fl_selection_buffer[clipboard]];
 | 
						|
       }
 | 
						|
-      (*buffer)[len - 1] = 0;
 | 
						|
+      fl_selection_buffer[clipboard][len - 1] = 0;
 | 
						|
       length = len - 1;
 | 
						|
-      convert_crlf(*buffer, len - 1); // turn all \r characters into \n:
 | 
						|
+      convert_crlf(fl_selection_buffer[clipboard], len - 1); // turn all \r characters into \n:
 | 
						|
       Fl::e_clipboard_type = Fl::clipboard_plain_text;
 | 
						|
     }
 | 
						|
   }    
 | 
						|
@@ -3218,7 +3218,7 @@ void Fl::paste(Fl_Widget &receiver, int
 | 
						|
   if (clipboard) {
 | 
						|
     Fl::e_clipboard_type = "";
 | 
						|
    if (strcmp(type, Fl::clipboard_plain_text) == 0) {
 | 
						|
-      fl_selection_length[1] = get_plain_text_from_clipboard( &fl_selection_buffer[1],  fl_selection_length[1]);   
 | 
						|
+      fl_selection_length[1] = get_plain_text_from_clipboard(1);
 | 
						|
       }
 | 
						|
     else if (strcmp(type, Fl::clipboard_image) == 0) {
 | 
						|
       Fl::e_clipboard_data = get_image_from_clipboard( );
 |