mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-04-26 15:22:09 -05:00
Split off copy and paste functionality from term_mouse.c so it can be used from
menu items without faking up a term_mouse call. [originally from svn r109]
This commit is contained in:
parent
f5741e4364
commit
b3a06b30ae
24
terminal.c
24
terminal.c
@ -325,7 +325,7 @@ static void update_sbar(void) {
|
||||
|
||||
/*
|
||||
* Check whether the region bounded by the two pointers intersects
|
||||
* the scroll region, and de-select the on-screen selection if so.
|
||||
* the selection, and de-select the on-screen selection if so.
|
||||
*/
|
||||
static void check_selection (unsigned long *from, unsigned long *to) {
|
||||
if (from < selend && selstart < to)
|
||||
@ -1425,12 +1425,22 @@ void term_mouse (Mouse_Button b, Mouse_Action a, int x, int y) {
|
||||
selend = selpoint + 1;
|
||||
}
|
||||
sel_spread();
|
||||
} else if ((b == MB_SELECT || b == MB_EXTEND) && a == MA_RELEASE) {
|
||||
} else if ((b == MB_SELECT || b == MB_EXTEND) && a == MA_RELEASE)
|
||||
if (selstate == DRAGGING) {
|
||||
term_copy();
|
||||
selstate = SELECTED;
|
||||
} else
|
||||
selstate = NO_SELECTION;
|
||||
else if (b == MB_PASTE && (a==MA_CLICK || a==MA_2CLK || a==MA_3CLK))
|
||||
term_paste();
|
||||
term_update();
|
||||
}
|
||||
|
||||
/*
|
||||
* We've completed a selection. We now transfer the
|
||||
* data to the clipboard.
|
||||
*/
|
||||
void term_copy() {
|
||||
unsigned char *p = selspace;
|
||||
unsigned long *q = selstart;
|
||||
|
||||
@ -1455,10 +1465,9 @@ void term_mouse (Mouse_Button b, Mouse_Action a, int x, int y) {
|
||||
q = lineend + 1; /* start of next line */
|
||||
}
|
||||
write_clip (selspace, p - selspace);
|
||||
selstate = SELECTED;
|
||||
} else
|
||||
selstate = NO_SELECTION;
|
||||
} else if (b == MB_PASTE && (a==MA_CLICK || a==MA_2CLK || a==MA_3CLK)) {
|
||||
}
|
||||
|
||||
void term_paste() {
|
||||
char *data;
|
||||
int len;
|
||||
|
||||
@ -1483,9 +1492,6 @@ void term_mouse (Mouse_Button b, Mouse_Action a, int x, int y) {
|
||||
get_clip(NULL, NULL);
|
||||
}
|
||||
|
||||
term_update();
|
||||
}
|
||||
|
||||
static void deselect (void) {
|
||||
selstate = NO_SELECTION;
|
||||
selstart = selend = scrtop;
|
||||
|
Loading…
x
Reference in New Issue
Block a user