summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Duerr <chrisduerr@users.noreply.github.com>2019-04-28 22:36:02 +0000
committerGitHub <noreply@github.com>2019-04-28 22:36:02 +0000
commit21a97c1ef266fcb979991d76315985ebf4d57798 (patch)
tree3c792d8d10e22d66e23cbb0c03529faed2d497b3
parent2c462c7d03e57166c4d11e809777d7c8ad4832b7 (diff)
Fix mouse mode generate events without cell change
-rw-r--r--CHANGELOG.md1
-rw-r--r--alacritty_terminal/src/input.rs19
2 files changed, 11 insertions, 9 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8fe27442..458cbc92 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -30,6 +30,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- PTY size not getting updated when message bar is shown
- Text Cursor disappearing
- Incorrect positioning of zero-width characters over double-width characters
+- Mouse mode generating events when the cell has not changed
## Version 0.3.2
diff --git a/alacritty_terminal/src/input.rs b/alacritty_terminal/src/input.rs
index 79c57669..ddc71473 100644
--- a/alacritty_terminal/src/input.rs
+++ b/alacritty_terminal/src/input.rs
@@ -422,22 +422,22 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> {
let motion_mode = TermMode::MOUSE_MOTION | TermMode::MOUSE_DRAG;
let report_mode = TermMode::MOUSE_REPORT_CLICK | motion_mode;
- let mouse_moved = prev_line != self.ctx.mouse().line
- || prev_col != self.ctx.mouse().column
- || prev_side != cell_side;
-
- // Don't launch URLs if mouse has moved
- if mouse_moved {
- self.ctx.mouse_mut().block_url_launcher = true;
- }
+ let cell_changed =
+ prev_line != self.ctx.mouse().line || prev_col != self.ctx.mouse().column;
+ let mouse_moved = cell_changed || prev_side != cell_side;
// Only report motions when cell changed and mouse is not over the message bar
if self.message_at_point(Some(point)).is_some() || !mouse_moved {
return;
}
+ // Don't launch URLs if mouse has moved
+ self.ctx.mouse_mut().block_url_launcher = true;
+
// Underline URLs and change cursor on hover
- self.update_url_highlight(point, modifiers);
+ if cell_changed {
+ self.update_url_highlight(point, modifiers);
+ }
if self.ctx.mouse().left_button_state == ElementState::Pressed
&& (modifiers.shift || !self.ctx.terminal().mode().intersects(report_mode))
@@ -445,6 +445,7 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> {
self.ctx.update_selection(Point { line: point.line, col: point.col }, cell_side);
} else if self.ctx.terminal().mode().intersects(motion_mode)
&& size_info.contains_point(x, y, false)
+ && cell_changed
{
if self.ctx.mouse().left_button_state == ElementState::Pressed {
self.mouse_report(32, ElementState::Pressed, modifiers);