vnote/src/utils/vimnavigationforwidget.cpp
Le Tan 6ac33d2bd0 support snippets
Shortcuts are not supported yet.
2017-11-11 08:09:22 +08:00

70 lines
1.7 KiB
C++

#include "vimnavigationforwidget.h"
#include <QWidget>
#include <QCoreApplication>
#include <QKeyEvent>
#include <QDebug>
#include "vutils.h"
VimNavigationForWidget::VimNavigationForWidget()
{
}
bool VimNavigationForWidget::injectKeyPressEventForVim(QWidget *p_widget,
QKeyEvent *p_event,
QWidget *p_escWidget)
{
Q_ASSERT(p_widget);
bool ret = false;
int key = p_event->key();
int modifiers = p_event->modifiers();
if (!p_escWidget) {
p_escWidget = p_widget;
}
switch (key) {
case Qt::Key_BracketLeft:
{
if (VUtils::isControlModifierForVim(modifiers)) {
QKeyEvent *escEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_Escape,
Qt::NoModifier);
QCoreApplication::postEvent(p_escWidget, escEvent);
ret = true;
}
break;
}
case Qt::Key_J:
{
if (VUtils::isControlModifierForVim(modifiers)) {
QKeyEvent *downEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_Down,
Qt::NoModifier);
QCoreApplication::postEvent(p_widget, downEvent);
ret = true;
}
break;
}
case Qt::Key_K:
{
if (VUtils::isControlModifierForVim(modifiers)) {
QKeyEvent *upEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_Up,
Qt::NoModifier);
QCoreApplication::postEvent(p_widget, upEvent);
ret = true;
}
break;
}
default:
break;
}
return ret;
}