aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--screen.c23
-rw-r--r--window-copy.c4
2 files changed, 21 insertions, 6 deletions
diff --git a/screen.c b/screen.c
index c829d062..b9ddf319 100644
--- a/screen.c
+++ b/screen.c
@@ -1,4 +1,4 @@
-/* $Id: screen.c,v 1.38 2007-11-22 19:17:01 nicm Exp $ */
+/* $Id: screen.c,v 1.39 2007-11-22 19:26:20 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -126,7 +126,10 @@ screen_resize(struct screen *s, u_int sx, u_int sy)
* X dimension.
*/
if (sx != ox) {
- /* If getting smaller, nuke any data in lines over the new size. */
+ /*
+ * If getting smaller, nuke any data in lines over the new
+ * size.
+ */
if (sx < ox) {
for (i = s->hsize; i < s->hsize + oy; i++) {
if (s->grid_size[i] > sx)
@@ -305,11 +308,23 @@ screen_check_selection(struct screen_draw_ctx *ctx, u_int px, u_int py)
sel->ex = xx;
sel->ey = yy;
}
+ if (sel->sy == sel->ey && sel->ex < sel->sx) {
+ xx = sel->sx;
+ sel->sx = sel->ex;
+ sel->ex = xx;
+ }
if (py < sel->sy || py > sel->ey)
return (0);
- if ((py == sel->sy && px < sel->sx) || (py == sel->ey && px > sel->ex))
- return (0);
+ if (py == sel->sy && py == sel->ey) {
+ if (px < sel->sx || px > sel->ex)
+ return (0);
+ } else {
+ if (py == sel->sy && px < sel->sx)
+ return (0);
+ if (py == sel->ey && px > sel->ex)
+ return (0);
+ }
return (1);
}
diff --git a/window-copy.c b/window-copy.c
index 983bbac2..98bf7223 100644
--- a/window-copy.c
+++ b/window-copy.c
@@ -1,4 +1,4 @@
-/* $Id: window-copy.c,v 1.2 2007-11-22 19:17:01 nicm Exp $ */
+/* $Id: window-copy.c,v 1.3 2007-11-22 19:26:20 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -184,7 +184,7 @@ window_copy_key(struct window *w, int key)
data->oy -= sy;
break;
case '\000': /* C-space */
- data->sel.flag = 1;
+ data->sel.flag = !data->sel.flag;
data->sel.sx = data->cx + data->ox;
data->sel.sy = data->size + data->cy - data->oy;
oy = -1; /* XXX */