From 3d5e94560d62fc11ee614d4a9fd0713063f09bd1 Mon Sep 17 00:00:00 2001
From: David Lawrence Ramsey <pooka109@gmail.com>
Date: Mon, 25 Jul 2005 19:04:20 +0000
Subject: [PATCH] in do_mouse(), avoid redundant screen updates by using
 edit_redraw() instead of edit_refresh(), and remove now-erroneous code that
 disables setting the mark while in view mode

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2928 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog  |  4 ++++
 src/nano.c | 19 +++++++------------
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 44d1ef1c..213019f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -141,6 +141,10 @@ CVS code -
   do_next_word()
 	- Rework to be more like do_prev_word(), to avoid a potential
 	  problem if we start at the end of a line. (DLR)
+  do_mouse()
+	- Avoid redundant screen updates by using edit_redraw() instead
+	  of edit_refresh(), and remove now-erroneous code that disables
+	  setting the mark while in view mode. (DLR)
   do_output()
 	- When adding a character, just add its length in bytes to
 	  current_x instead of calling do_right(), and set placewewant
diff --git a/src/nano.c b/src/nano.c
index d9e5d5ff..41c2d193 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -1728,8 +1728,9 @@ bool do_mouse(void)
 	    bool sameline;
 		/* Did they click on the line with the cursor?  If they
 		 * clicked on the cursor, we set the mark. */
-	    size_t xcur;
-		/* The character they clicked on. */
+	    const filestruct *current_save = openfile->current;
+	    size_t current_x_save = openfile->current_x;
+	    size_t pww_save = openfile->placewewant;
 
 	    /* Subtract out the size of topwin. */
 	    mouse_y -= 2 - no_more_space();
@@ -1744,25 +1745,19 @@ bool do_mouse(void)
 		openfile->current->prev != NULL; openfile->current_y--)
 		openfile->current = openfile->current->prev;
 
-	    xcur = actual_x(openfile->current->data,
+	    openfile->current_x = actual_x(openfile->current->data,
 		get_page_start(xplustabs()) + mouse_x);
+	    openfile->placewewant = xplustabs();
 
 #ifndef NANO_SMALL
 	    /* Clicking where the cursor is toggles the mark, as does
 	     * clicking beyond the line length with the cursor at the
 	     * end of the line. */
-	    if (sameline && xcur == openfile->current_x) {
-		if (ISSET(VIEW_MODE)) {
-		    print_view_warning();
-		    return retval;
-		}
+	    if (sameline && openfile->current_x == current_x_save)
 		do_mark();
-	    }
 #endif
 
-	    openfile->current_x = xcur;
-	    openfile->placewewant = xplustabs();
-	    edit_refresh();
+	    edit_redraw(current_save, pww_save);
 	}
     }
 
-- 
GitLab