… | |
… | |
2802 | * (+) if ownership is claimed but property is empty, rxvt_selection_paste () |
2802 | * (+) if ownership is claimed but property is empty, rxvt_selection_paste () |
2803 | * will auto fallback to CUT_BUFFER0 |
2803 | * will auto fallback to CUT_BUFFER0 |
2804 | * EXT: button 2 release |
2804 | * EXT: button 2 release |
2805 | */ |
2805 | */ |
2806 | void |
2806 | void |
2807 | rxvt_term::selection_request (Time tm) |
2807 | rxvt_term::selection_request (Time tm, int selnum) |
2808 | { |
2808 | { |
|
|
2809 | /* After making a selection with selection_make this function will always |
|
|
2810 | * return the internal selection, which is not correct IMO, now much more since |
|
|
2811 | * I added the selnum parameter. |
|
|
2812 | */ |
|
|
2813 | #if 0 |
2809 | if (selection.text) |
2814 | if (selection.text) |
2810 | { /* internal selection */ |
2815 | { /* internal selection */ |
2811 | char *str = rxvt_wcstombs (selection.text, selection.len); |
2816 | char *str = rxvt_wcstombs (selection.text, selection.len); |
2812 | paste (str, strlen (str)); |
2817 | paste (str, strlen (str)); |
2813 | free (str); |
2818 | free (str); |
2814 | return; |
2819 | return; |
2815 | } |
2820 | } |
2816 | else |
2821 | else |
|
|
2822 | #endif |
2817 | { |
2823 | { |
2818 | int i; |
|
|
2819 | |
|
|
2820 | selection_request_time = tm; |
2824 | selection_request_time = tm; |
2821 | selection_wait = Sel_normal; |
2825 | selection_wait = Sel_normal; |
2822 | |
2826 | |
2823 | for (i = Sel_Primary; i <= Sel_Clipboard; i++) |
|
|
2824 | { |
|
|
2825 | #if X_HAVE_UTF8_STRING |
2827 | #if X_HAVE_UTF8_STRING |
2826 | selection_type = Sel_UTF8String; |
2828 | selection_type = Sel_UTF8String; |
2827 | if (selection_request_other (xa[XA_UTF8_STRING], i)) |
2829 | if (selection_request_other (xa[XA_UTF8_STRING], selnum)) |
2828 | return; |
2830 | return; |
2829 | #else |
2831 | #else |
2830 | selection_type = Sel_CompoundText; |
2832 | selection_type = Sel_CompoundText; |
2831 | if (selection_request_other (xa[XA_COMPOUND_TEXT], i)) |
2833 | if (selection_request_other (xa[XA_COMPOUND_TEXT], selnum)) |
2832 | return; |
2834 | return; |
2833 | #endif |
2835 | #endif |
2834 | } |
|
|
2835 | } |
2836 | } |
2836 | |
2837 | |
2837 | selection_wait = Sel_none; /* don't loop in selection_paste () */ |
2838 | selection_wait = Sel_none; /* don't loop in selection_paste () */ |
2838 | selection_paste (display->root, XA_CUT_BUFFER0, false); |
2839 | selection_paste (display->root, XA_CUT_BUFFER0, false); |
2839 | } |
2840 | } |