aboutsummaryrefslogtreecommitdiff
path: root/window-copy.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2008-06-20 17:31:48 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2008-06-20 17:31:48 +0000
commit4e4f71febb506fc83abb75ca163eca250ca4ac2a (patch)
tree0b8f32021f4f9df9cad773d456d1fd24e48bfb87 /window-copy.c
parent9798dcd4dfa481eb28096a637f5b555a12354ad8 (diff)
downloadrtmux-4e4f71febb506fc83abb75ca163eca250ca4ac2a.tar.gz
rtmux-4e4f71febb506fc83abb75ca163eca250ca4ac2a.tar.bz2
rtmux-4e4f71febb506fc83abb75ca163eca250ca4ac2a.zip
Swap in new paste buffer code and add a couple more commands.
Diffstat (limited to 'window-copy.c')
-rw-r--r--window-copy.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/window-copy.c b/window-copy.c
index 2115f10f..39f3bb6e 100644
--- a/window-copy.c
+++ b/window-copy.c
@@ -1,4 +1,4 @@
-/* $Id: window-copy.c,v 1.19 2008-06-19 19:40:35 nicm Exp $ */
+/* $Id: window-copy.c,v 1.20 2008-06-20 17:31:48 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -25,7 +25,7 @@
struct screen *window_copy_init(struct window *);
void window_copy_free(struct window *);
void window_copy_resize(struct window *, u_int, u_int);
-void window_copy_key(struct window *, int);
+void window_copy_key(struct window *, struct client *, int);
void window_copy_redraw_lines(struct window *, u_int, u_int);
void window_copy_redraw_screen(struct window *);
@@ -41,7 +41,7 @@ void window_copy_write_columns(
void window_copy_update_cursor(struct window *);
void window_copy_start_selection(struct window *);
int window_copy_update_selection(struct window *);
-void window_copy_copy_selection(struct window *);
+void window_copy_copy_selection(struct window *, struct client *);
void window_copy_copy_line(
struct window *, char **, size_t *, size_t *, u_int, u_int, u_int);
u_int window_copy_find_length(struct window *, u_int);
@@ -126,7 +126,7 @@ window_copy_resize(struct window *w, u_int sx, u_int sy)
}
void
-window_copy_key(struct window *w, int key)
+window_copy_key(struct window *w, struct client *c, int key)
{
struct window_copy_mode_data *data = w->modedata;
struct screen *s = &data->screen;
@@ -181,8 +181,10 @@ window_copy_key(struct window *w, int key)
break;
case '\027': /* C-w */
case '\r': /* enter */
- window_copy_copy_selection(w);
- window_reset_mode(w);
+ if (c != NULL && c->session != NULL) {
+ window_copy_copy_selection(w, c);
+ window_reset_mode(w);
+ }
break;
case '0':
case '\001': /* C-a */
@@ -354,7 +356,7 @@ window_copy_update_selection(struct window *w)
}
void
-window_copy_copy_selection(struct window *w)
+window_copy_copy_selection(struct window *w, struct client *c)
{
struct window_copy_mode_data *data = w->modedata;
struct screen *s = &data->screen;
@@ -412,9 +414,9 @@ window_copy_copy_selection(struct window *w)
if (off != 0)
buf[off - 1] = '\0';
- if (paste_buffer != NULL)
- xfree(paste_buffer);
- paste_buffer = buf;
+ /* Add the buffer to the stack. */
+ paste_add(&c->session->buffers, buf);
+ xfree(buf);
}
void