From cc309a3a55c3f7153b25426e3ec3d8ae8ee1bed8 Mon Sep 17 00:00:00 2001
From: Thomas Goyne <plorkyeran@aegisub.org>
Date: Fri, 8 Feb 2013 20:37:43 -0800
Subject: [PATCH] Release mouse capture from the visual tools when the zoom is
 changed

---
 aegisub/src/visual_tool.cpp | 9 ++++-----
 aegisub/src/visual_tool.h   | 2 --
 2 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/aegisub/src/visual_tool.cpp b/aegisub/src/visual_tool.cpp
index 3d0f34240..3f7f5000a 100644
--- a/aegisub/src/visual_tool.cpp
+++ b/aegisub/src/visual_tool.cpp
@@ -60,8 +60,6 @@ VisualToolBase::VisualToolBase(VideoDisplay *parent, agi::Context *context)
 , active_line(0)
 , dragging(false)
 , frame_number(c->videoController->GetFrameN())
-, left_click(false)
-, left_double(false)
 , shift_down(false)
 , ctrl_down(false)
 , alt_down(false)
@@ -115,7 +113,6 @@ void VisualToolBase::OnSeek(int new_frame) {
 void VisualToolBase::OnMouseCaptureLost(wxMouseCaptureLostEvent &) {
 	holding = false;
 	dragging = false;
-	left_click = false;
 }
 
 void VisualToolBase::OnActiveLineChanged(AssDialogue *new_line) {
@@ -163,6 +160,8 @@ void VisualToolBase::SetDisplayArea(int x, int y, int w, int h) {
 
 	holding = false;
 	dragging = false;
+	if (parent->HasCapture())
+		parent->ReleaseMouse();
 	OnCoordinateSystemsChanged();
 }
 
@@ -184,8 +183,8 @@ VisualTool<FeatureType>::VisualTool(VideoDisplay *parent, agi::Context *context)
 
 template<class FeatureType>
 void VisualTool<FeatureType>::OnMouseEvent(wxMouseEvent &event) {
-	left_click = event.LeftDown();
-	left_double = event.LeftDClick();
+	bool left_click = event.LeftDown();
+	bool left_double = event.LeftDClick();
 	shift_down = event.ShiftDown();
 	ctrl_down = event.CmdDown();
 	alt_down = event.AltDown();
diff --git a/aegisub/src/visual_tool.h b/aegisub/src/visual_tool.h
index 6dc565557..04aa6f533 100644
--- a/aegisub/src/visual_tool.h
+++ b/aegisub/src/visual_tool.h
@@ -108,8 +108,6 @@ protected:
 
 	int frame_number; ///< Current frame number
 
-	bool left_click; ///< Is a left click event currently being processed?
-	bool left_double; ///< Is a left double click event currently being processed?
 	bool shift_down; ///< Is shift down?
 	bool ctrl_down; ///< Is ctrl down?
 	bool alt_down; ///< Is alt down?
-- 
GitLab