void processpaste(Display *dpy, Window window, Atom atom) { Atom type; int actualformat; unsigned long items; unsigned long bytes, tmp; unsigned char * value = NULL; XGetWindowProperty(dpy, window, atom, 0, 0, 0, XA_STRING, &type, &actualformat, &items, &bytes, &value); XFree(value); // From the XGetWindowProperty man page: // *) The length parameter is in 32 bit units, so we can divide // bytes by four (rounding up // *) It always allocates one extra byte and sets it to zero, so // using value as a zero-terminated string should be safe XGetWindowProperty(dpy, window, atom, 0, (bytes+3)/4, 1, XA_STRING, &type, &actualformat, &items, &tmp, &value); if(type == XA_STRING) { if (paste_to_widget == NULL) { do_paste(value); // copy to input line } else { do_paste_to_text_field(paste_to_widget, (const char*) value); paste_to_widget = NULL; } } /* XGetWindowProperty allocated this, so we have to free it */ if(value) { XFree(value); } }
void start_paste(widget_list *widget) { if (OpenClipboard(NULL)) { HANDLE hText = GetClipboardData (CF_TEXT); char* text = GlobalLock (hText); if (widget == NULL) do_paste(text); else do_paste_to_text_field(widget, text); GlobalUnlock (hText); CloseClipboard (); } }
void start_paste(text_field *tf) { if (OpenClipboard(NULL)) { HANDLE hText = GetClipboardData (CF_TEXT); char* text = GlobalLock (hText); if (!tf) do_paste(text); else do_paste_to_text_field(tf, text); GlobalUnlock (hText); CloseClipboard (); } }
void start_paste(widget_list *widget) { OSStatus err = noErr; PasteboardRef gClipboard; PasteboardItemID itemID; CFDataRef flavorData; char* flavorText; err = PasteboardCreate( kPasteboardClipboard, &gClipboard ); //require_noerr( err, CantCreateClipboard ); err = PasteboardGetItemIdentifier( gClipboard, 1, &itemID ); err = PasteboardCopyItemFlavorData( gClipboard, itemID, CFSTR("com.apple.traditional-mac-plain-text"), &flavorData ); int flavorDataSize = CFDataGetLength(flavorData); flavorText=(char*)malloc(flavorDataSize+1); short dataIndex; for(dataIndex = 0; dataIndex <= flavorDataSize; dataIndex++ ) { char byte = *(CFDataGetBytePtr( flavorData ) + dataIndex); flavorText[dataIndex] = (byte>32) ? byte : ' '; } flavorText[flavorDataSize] = '\0'; CFRelease(flavorData); if (widget == NULL) { do_paste (flavorText); } else { do_paste_to_text_field(widget, flavorText); } free(flavorText); CFRelease( gClipboard ); }