summaryrefslogtreecommitdiff
path: root/src/input_handler.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2018-12-22 17:14:46 +1100
committerMaxime Coste <mawww@kakoune.org>2018-12-22 17:14:46 +1100
commita577e80092c95963df5b705f91c48f6a3bb3424e (patch)
tree0f272c6000d4a556a2b4ca8b98a93e530fcb25c9 /src/input_handler.cc
parent6f9e297deffc0780ef48ab242186392047868e1c (diff)
parentb1f5639d8cbc9b0a8525e1fcc76a4000f7852ded (diff)
Merge remote-tracking branch 'lenormf/right-click-support'
Diffstat (limited to 'src/input_handler.cc')
-rw-r--r--src/input_handler.cc18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/input_handler.cc b/src/input_handler.cc
index ade87d04..0d9710dd 100644
--- a/src/input_handler.cc
+++ b/src/input_handler.cc
@@ -92,9 +92,20 @@ struct MouseHandler
Buffer& buffer = context.buffer();
BufferCoord cursor;
auto& selections = context.selections();
- switch ((Key::Modifiers)(key.modifiers & Key::Modifiers::MouseEvent))
+ const auto key_modifier = (Key::Modifiers)(key.modifiers & Key::Modifiers::MouseEvent);
+ switch (key_modifier)
{
- case Key::Modifiers::MousePress:
+ case Key::Modifiers::MousePressRight:
+ m_dragging = false;
+ cursor = context.window().buffer_coord(key.coord());
+ if (key.modifiers & Key::Modifiers::Control)
+ selections = {{selections.begin()->anchor(), cursor}};
+ else
+ selections.main() = {selections.main().anchor(), cursor};
+ selections.sort_and_merge_overlapping();
+ return true;
+
+ case Key::Modifiers::MousePressLeft:
m_dragging = true;
m_anchor = context.window().buffer_coord(key.coord());
if (not (key.modifiers & Key::Modifiers::Control))
@@ -108,7 +119,8 @@ struct MouseHandler
}
return true;
- case Key::Modifiers::MouseRelease:
+ case Key::Modifiers::MouseReleaseLeft:
+ case Key::Modifiers::MouseReleaseRight:
if (not m_dragging)
return true;
m_dragging = false;