mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 22:09:52 +08:00
vim-mode: amend cursor position after mouse release
This commit is contained in:
parent
0976d65923
commit
2373a0326e
@ -120,6 +120,8 @@ VVim::VVim(VEditor *p_editor)
|
|||||||
this, &VVim::handleMousePressed);
|
this, &VVim::handleMousePressed);
|
||||||
connect(m_editor->object(), &VEditorObject::mouseMoved,
|
connect(m_editor->object(), &VEditorObject::mouseMoved,
|
||||||
this, &VVim::handleMouseMoved);
|
this, &VVim::handleMouseMoved);
|
||||||
|
connect(m_editor->object(), &VEditorObject::mouseReleased,
|
||||||
|
this, &VVim::handleMouseReleased);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set @p_cursor's position specified by @p_positionInBlock.
|
// Set @p_cursor's position specified by @p_positionInBlock.
|
||||||
@ -6231,6 +6233,20 @@ void VVim::handleMouseMoved(QMouseEvent *p_event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VVim::handleMouseReleased(QMouseEvent *p_event)
|
||||||
|
{
|
||||||
|
Q_UNUSED(p_event);
|
||||||
|
|
||||||
|
if (checkMode(VimMode::Normal)) {
|
||||||
|
QTextCursor cursor = m_editor->textCursorW();
|
||||||
|
if (cursor.hasSelection()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
amendCursorPosition();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void VVim::setCursorBlockMode(VEditor *p_cursor, CursorBlock p_mode)
|
void VVim::setCursorBlockMode(VEditor *p_cursor, CursorBlock p_mode)
|
||||||
{
|
{
|
||||||
p_cursor->setCursorBlockModeW(p_mode);
|
p_cursor->setCursorBlockModeW(p_mode);
|
||||||
|
@ -223,6 +223,8 @@ private slots:
|
|||||||
|
|
||||||
void handleMouseMoved(QMouseEvent *p_event);
|
void handleMouseMoved(QMouseEvent *p_event);
|
||||||
|
|
||||||
|
void handleMouseReleased(QMouseEvent *p_event);
|
||||||
|
|
||||||
// When we display cursor as block, it makes no sense to put cursor at the
|
// When we display cursor as block, it makes no sense to put cursor at the
|
||||||
// end of line.
|
// end of line.
|
||||||
void amendCursorPosition();
|
void amendCursorPosition();
|
||||||
|
@ -344,6 +344,8 @@ signals:
|
|||||||
|
|
||||||
void mousePressed(QMouseEvent *p_event);
|
void mousePressed(QMouseEvent *p_event);
|
||||||
|
|
||||||
|
void mouseReleased(QMouseEvent *p_event);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
// Timer for find-wrap label.
|
// Timer for find-wrap label.
|
||||||
void labelTimerTimeout()
|
void labelTimerTimeout()
|
||||||
|
@ -315,6 +315,8 @@ void VMdEditor::mouseReleaseEvent(QMouseEvent *p_event)
|
|||||||
}
|
}
|
||||||
|
|
||||||
VTextEdit::mouseReleaseEvent(p_event);
|
VTextEdit::mouseReleaseEvent(p_event);
|
||||||
|
|
||||||
|
emit m_object->mouseReleased(p_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VMdEditor::mouseMoveEvent(QMouseEvent *p_event)
|
void VMdEditor::mouseMoveEvent(QMouseEvent *p_event)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user