… | |
… | |
2744 | */ |
2744 | */ |
2745 | |
2745 | |
2746 | static void |
2746 | static void |
2747 | selection_cb (char *data, unsigned int len, rxvt_selection *rs, void *ptr) |
2747 | selection_cb (char *data, unsigned int len, rxvt_selection *rs, void *ptr) |
2748 | { |
2748 | { |
|
|
2749 | rxvt_term *term = (rxvt_term *)ptr; |
|
|
2750 | |
2749 | if (data) |
2751 | if (data) |
2750 | { |
|
|
2751 | rxvt_term *term = (rxvt_term *)ptr; |
|
|
2752 | term->paste (data, len); |
2752 | term->paste (data, len); |
2753 | } |
|
|
2754 | delete rs; |
2753 | delete rs; |
|
|
2754 | term->selection_req = 0; |
2755 | } |
2755 | } |
2756 | |
2756 | |
2757 | void |
2757 | void |
2758 | rxvt_term::selection_request (Time tm, int selnum) NOTHROW |
2758 | rxvt_term::selection_request (Time tm, int selnum) NOTHROW |
2759 | { |
2759 | { |
… | |
… | |
2763 | char *str = rxvt_wcstombs (selection.text, selection.len); |
2763 | char *str = rxvt_wcstombs (selection.text, selection.len); |
2764 | paste (str, strlen (str)); |
2764 | paste (str, strlen (str)); |
2765 | free (str); |
2765 | free (str); |
2766 | return; |
2766 | return; |
2767 | } |
2767 | } |
2768 | else |
2768 | else if (!selection_req) |
2769 | { |
2769 | { |
2770 | new rxvt_selection (display, selnum, tm, vt, xa[XA_VT_SELECTION], selection_cb, this); |
2770 | selection_req = new rxvt_selection (display, selnum, tm, vt, xa[XA_VT_SELECTION], selection_cb, this); |
|
|
2771 | selection_req->run (); |
2771 | } |
2772 | } |
2772 | } |
2773 | } |
2773 | |
2774 | |
2774 | /* ------------------------------------------------------------------------- */ |
2775 | /* ------------------------------------------------------------------------- */ |
2775 | /* |
2776 | /* |