1 | /*---------------------------------------------------------------------------* |
1 | /*---------------------------------------------------------------------------* |
2 | * File: screen.C |
2 | * File: screen.C |
3 | *---------------------------------------------------------------------------* |
3 | *---------------------------------------------------------------------------* |
4 | * |
4 | * |
5 | * Copyright (c) 1997-2001 Geoff Wing <gcw@pobox.com> |
5 | * Copyright (c) 1997-2001 Geoff Wing <gcw@pobox.com> |
6 | * Copyright (c) 2003-2007 Marc Lehmann <pcg@goof.com> |
6 | * Copyright (c) 2003-2007 Marc Lehmann <schmorp@schmorp.de> |
7 | * |
7 | * |
8 | * This program is free software; you can redistribute it and/or modify |
8 | * This program is free software; you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License as published by |
9 | * it under the terms of the GNU General Public License as published by |
10 | * the Free Software Foundation; either version 2 of the License, or |
10 | * the Free Software Foundation; either version 2 of the License, or |
11 | * (at your option) any later version. |
11 | * (at your option) any later version. |
… | |
… | |
2740 | * > CUT_BUFFER0 |
2740 | * > CUT_BUFFER0 |
2741 | * (+) if ownership is claimed but property is empty, rxvt_selection_paste () |
2741 | * (+) if ownership is claimed but property is empty, rxvt_selection_paste () |
2742 | * will auto fallback to CUT_BUFFER0 |
2742 | * will auto fallback to CUT_BUFFER0 |
2743 | * EXT: button 2 release |
2743 | * EXT: button 2 release |
2744 | */ |
2744 | */ |
2745 | |
|
|
2746 | static void |
|
|
2747 | selection_cb (char *data, unsigned int len, rxvt_selection *rs, void *ptr) |
|
|
2748 | { |
|
|
2749 | rxvt_term *term = (rxvt_term *)ptr; |
|
|
2750 | |
|
|
2751 | if (data) |
|
|
2752 | term->paste (data, len); |
|
|
2753 | delete rs; |
|
|
2754 | term->selection_req = 0; |
|
|
2755 | } |
|
|
2756 | |
|
|
2757 | void |
2745 | void |
2758 | rxvt_term::selection_request (Time tm, int selnum) NOTHROW |
2746 | rxvt_term::selection_request (Time tm, int selnum) NOTHROW |
2759 | { |
2747 | { |
2760 | if (selection.text && selnum == Sel_Primary) |
2748 | if (selection.text && selnum == Sel_Primary) |
2761 | { |
2749 | { |
… | |
… | |
2765 | free (str); |
2753 | free (str); |
2766 | return; |
2754 | return; |
2767 | } |
2755 | } |
2768 | else if (!selection_req) |
2756 | else if (!selection_req) |
2769 | { |
2757 | { |
2770 | selection_req = new rxvt_selection (display, selnum, tm, vt, xa[XA_VT_SELECTION], selection_cb, this); |
2758 | selection_req = new rxvt_selection (display, selnum, tm, vt, xa[XA_VT_SELECTION], this); |
2771 | selection_req->run (); |
2759 | selection_req->run (); |
2772 | } |
2760 | } |
2773 | } |
2761 | } |
2774 | |
2762 | |
2775 | /* ------------------------------------------------------------------------- */ |
2763 | /* ------------------------------------------------------------------------- */ |