diff options
| author | Maxime Coste <mawww@kakoune.org> | 2018-12-22 17:14:46 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2018-12-22 17:14:46 +1100 |
| commit | a577e80092c95963df5b705f91c48f6a3bb3424e (patch) | |
| tree | 0f272c6000d4a556a2b4ca8b98a93e530fcb25c9 /src/input_handler.cc | |
| parent | 6f9e297deffc0780ef48ab242186392047868e1c (diff) | |
| parent | b1f5639d8cbc9b0a8525e1fcc76a4000f7852ded (diff) | |
Merge remote-tracking branch 'lenormf/right-click-support'
Diffstat (limited to 'src/input_handler.cc')
| -rw-r--r-- | src/input_handler.cc | 18 |
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; |
