# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 1b2751f5c24ca06afbb68e41e73fc9fce6c6b521
    parent 0851f2be2ab48ee3a67ef2287c09bd67622dcd8e
    Author: Christoph Lohmann <20h@r-36.net>
    Date:   Thu, 25 Apr 2013 06:28:11 +0200

    Fixing the selection handling to allow one char selection.

    Thanks Alexander Sedov <alex0player@gmail.com> for suggesting the fix!

    Diffstat:
    Mst.c | 19+++++++++----------

    1 file changed, 9 insertions(+), 10 deletions(-)
    diff --git a/st.c b/st.c
    @@ -785,11 +785,8 @@ bpress(XEvent *e) {
     		sel.ey = sel.by = y2row(e->xbutton.y);

     		/*
    -		 * Snap handling.
    -		 * If user clicks are fasst enough (e.g. below timeouts),
    -		 * we ignore if his hand slipped left or down and accidentally
    -		 * selected more; we are just snapping to whatever we're
    -		 * snapping.
    +		 * If the user clicks below predefined timeouts specific
    +		 * snapping behaviour is exposed.
     		 */
     		if(TIMEDIFF(now, sel.tclick2) <= tripleclicktimeout) {
     			sel.snap = SNAP_LINE;
    @@ -809,7 +806,8 @@ bpress(XEvent *e) {
     		 * Draw selection, unless it's regular and we don't want to
     		 * make clicks visible
     		 */
    -		if (sel.snap != 0) {
    +		if(sel.snap != 0) {
    +			sel.mode++;
     			tsetdirt(sel.b.y, sel.e.y);
     			draw();
     		}
    @@ -987,14 +985,14 @@ brelease(XEvent *e) {
     	if(e->xbutton.button == Button2) {
     		selpaste(NULL);
     	} else if(e->xbutton.button == Button1) {
    -		sel.mode = 0;
    -		getbuttoninfo(e);
    -		term.dirty[sel.ey] = 1;
    -		if(sel.bx == sel.ex && sel.by == sel.ey) {
    +		if(sel.mode < 2) {
     			sel.bx = -1;
     		} else {
    +			getbuttoninfo(e);
     			selcopy();
     		}
    +		sel.mode = 0;
    +		term.dirty[sel.ey] = 1;
     	}
     }

    @@ -1010,6 +1008,7 @@ bmotion(XEvent *e) {
     	if(!sel.mode)
     		return;

    +	sel.mode++;
     	oldey = sel.ey;
     	oldex = sel.ex;
     	oldsby = sel.b.y;