diff --git a/src/mouse.c b/src/mouse.c
index 40c2159..25e65ed 100644
--- a/src/mouse.c
+++ b/src/mouse.c
@@ -179,18 +179,6 @@
 }
 #endif
 
-static int	mouse_got_click = FALSE;	// got a click some time back
-
-/*
- * Reset the flag that a mouse click was seen.  To be called when switching tab
- * page.
- */
-    void
-reset_mouse_got_click(void)
-{
-    mouse_got_click = FALSE;
-}
-
 /*
  * Do the appropriate action for the current mouse click in the current mode.
  * Not used for Command-line mode.
@@ -236,6 +224,7 @@
     int		fixindent)	// PUT_FIXINDENT if fixing indent necessary
 {
     static int	do_always = FALSE;	// ignore 'mouse' setting next time
+    static int	got_click = FALSE;	// got a click some time back
 
     int		which_button;	// MOUSE_LEFT, _MIDDLE or _RIGHT
     int		is_click = FALSE; // If FALSE it's a drag or release event
@@ -347,14 +336,14 @@
 
     // Ignore drag and release events if we didn't get a click.
     if (is_click)
-	mouse_got_click = TRUE;
+	got_click = TRUE;
     else
     {
-	if (!mouse_got_click)			// didn't get click, ignore
+	if (!got_click)			// didn't get click, ignore
 	    return FALSE;
-	if (!is_drag)			// release, reset mouse_got_click
+	if (!is_drag)			// release, reset got_click
 	{
-	    mouse_got_click = FALSE;
+	    got_click = FALSE;
 	    if (in_tab_line)
 	    {
 		in_tab_line = FALSE;
@@ -371,7 +360,7 @@
 	if (count > 1)
 	    stuffnumReadbuff(count);
 	stuffcharReadbuff(Ctrl_T);
-	mouse_got_click = FALSE;		// ignore drag&release now
+	got_click = FALSE;		// ignore drag&release now
 	return FALSE;
     }
 
@@ -652,7 +641,7 @@
 	    }
 # ifdef FEAT_MENU
 	    show_popupmenu();
-	    mouse_got_click = FALSE;	// ignore release events
+	    got_click = FALSE;	// ignore release events
 # endif
 	    return (jump_flags & CURSOR_MOVED) != 0;
 #else
@@ -709,7 +698,7 @@
     // next mouse click.
     if (!is_drag && oap != NULL && oap->op_type != OP_NOP)
     {
-	mouse_got_click = FALSE;
+	got_click = FALSE;
 	oap->motion_type = MCHAR;
     }
 
@@ -908,7 +897,7 @@
 	    do_cmdline_cmd((char_u *)".cc");
 	else					// location list window
 	    do_cmdline_cmd((char_u *)".ll");
-	mouse_got_click = FALSE;		// ignore drag&release now
+	got_click = FALSE;		// ignore drag&release now
     }
 #endif
 
@@ -920,7 +909,7 @@
 	if (State & MODE_INSERT)
 	    stuffcharReadbuff(Ctrl_O);
 	stuffcharReadbuff(Ctrl_RSB);
-	mouse_got_click = FALSE;		// ignore drag&release now
+	got_click = FALSE;		// ignore drag&release now
     }
 
     // Shift-Mouse click searches for the next occurrence of the word under
@@ -1513,6 +1502,17 @@
     return (p_mousem[0] == 'p');
 }
 
+static win_T *dragwin = NULL;	// window being dragged
+
+/*
+ * Reset the window being dragged.  To be called when switching tab page.
+ */
+    void
+reset_dragwin(void)
+{
+    dragwin = NULL;
+}
+
 /*
  * Move the cursor to the specified row and column on the screen.
  * Change current window if necessary.	Returns an integer with the
@@ -1556,7 +1556,6 @@
 #endif
     static int	prev_row = -1;
     static int	prev_col = -1;
-    static win_T *dragwin = NULL;	// window being dragged
     static int	did_drag = FALSE;	// drag was noticed
 
     win_T	*wp, *old_curwin;
