Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
ArsMasiuk committed Nov 11, 2020
1 parent 4606e9e commit 7dcdff7
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 29 deletions.
8 changes: 2 additions & 6 deletions src/qvge/CEditorScene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2113,11 +2113,10 @@ void CEditorScene::setSceneCursor(const QCursor& c)

void CEditorScene::keyReleaseEvent(QKeyEvent *keyEvent)
{
Super::keyReleaseEvent(keyEvent);

if (m_editController)
{
m_editController->onKeyReleased(*this, keyEvent);
updateCursorState();
return;
}

Expand All @@ -2127,18 +2126,15 @@ void CEditorScene::keyReleaseEvent(QKeyEvent *keyEvent)

void CEditorScene::keyPressEvent(QKeyEvent *keyEvent)
{
Super::keyPressEvent(keyEvent);

if (m_editController)
{
m_editController->onKeyPressed(*this, keyEvent);
updateCursorState();
return;
}


updateCursorState();


bool isCtrl = (keyEvent->modifiers() == Qt::ControlModifier);
bool isAlt = (keyEvent->modifiers() == Qt::AltModifier);
bool isShift = (keyEvent->modifiers() == Qt::ShiftModifier);
Expand Down
7 changes: 4 additions & 3 deletions src/qvge/CEditorScene.h
Original file line number Diff line number Diff line change
Expand Up @@ -354,8 +354,12 @@ protected Q_SLOTS:
QGraphicsItem *m_draggedItem = nullptr;
QSet<IInteractive*> m_acceptedHovers, m_rejectedHovers;
bool m_skipMenuEvent = false;

CItem *m_editItem = nullptr;

// pimpl
class CEditorScene_p* m_pimpl = nullptr;

private:
int m_infoStatus;

Expand Down Expand Up @@ -391,9 +395,6 @@ protected Q_SLOTS:
bool m_labelsEnabled, m_labelsUpdate;

bool m_isFontAntialiased = true;

// pimpl
class CEditorScene_p* m_pimpl = nullptr;
};


Expand Down
28 changes: 27 additions & 1 deletion src/qvge/CNodeEditorScene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "CPolyEdge.h"
#include "CControlPoint.h"
#include "CEditorSceneDefines.h"
#include "CEditorScene_p.h"

#include <qvgeio/CGraphBase.h>

Expand Down Expand Up @@ -468,6 +469,10 @@ bool CNodeEditorScene::startNewConnection(const QPointF& pos)

void CNodeEditorScene::cancel(const QPointF& /*pos*/)
{
// nothing to cancel
if (m_state == IS_None)
return;

// if not cancelling already
if (m_state != IS_Cancelling)
{
Expand Down Expand Up @@ -630,13 +635,34 @@ void CNodeEditorScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
}


void CNodeEditorScene::keyReleaseEvent(QKeyEvent *keyEvent)
{
// forward scene events if in text editor mode
if (m_editItem)
{
bool done = m_pimpl->m_labelEditor.onKeyReleased(*this, keyEvent);
if (done)
updateCursorState();
return;
}

Super::keyReleaseEvent(keyEvent);
}


void CNodeEditorScene::keyPressEvent(QKeyEvent *keyEvent)
{
// forward scene events if in text editor mode
if (m_editItem)
{
m_pimpl->m_labelEditor.onKeyPressed(*this, keyEvent);
return;
}

bool isCtrl = (keyEvent->modifiers() == Qt::ControlModifier);
// bool isAlt = (keyEvent->modifiers() == Qt::AltModifier);
// bool isShift = (keyEvent->modifiers() == Qt::ShiftModifier);


// Ctrl+Up/Down; alter node size by 10%
if (keyEvent->key() == Qt::Key_Up && isCtrl)
{
Expand Down
1 change: 1 addition & 0 deletions src/qvge/CNodeEditorScene.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ protected Q_SLOTS:
//virtual void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent);
virtual void keyPressEvent(QKeyEvent *keyEvent);
virtual void keyReleaseEvent(QKeyEvent *keyEvent);

virtual void onLeftButtonPressed(QGraphicsSceneMouseEvent *mouseEvent);
// called on drag after single click; returns true if handled
Expand Down
35 changes: 16 additions & 19 deletions src/qvge/CTextLabelEdit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,29 +40,26 @@ void CTextLabelEdit::updateGeometry()
}


bool CTextLabelEdit::sceneEvent(QEvent *event)
bool CTextLabelEdit::onKeyPressed(CEditorScene& scene, QKeyEvent *keyEvent)
{
return QGraphicsTextItem::sceneEvent(keyEvent);
}


bool CTextLabelEdit::onKeyReleased(CEditorScene& scene, QKeyEvent *keyEvent)
{
//if (event->type() == QEvent::KeyPress)
//{
// QKeyEvent *keyEvent = static_cast<QKeyEvent*> (event);
// if ((keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter)
// && keyEvent->modifiers() == Qt::NoModifier)
// {
// finishEdit(true);
// return true;
// }
//}

if (event->type() == QEvent::KeyRelease)
if (keyEvent->matches(QKeySequence::Cancel)) // Esc
{
QKeyEvent *keyEvent = static_cast<QKeyEvent*> (event);
if (keyEvent->matches(QKeySequence::Cancel)) // Esc
{
finishEdit(true);
return true;
}
finishEdit(true);
return true;
}

return QGraphicsTextItem::sceneEvent(keyEvent);
}


bool CTextLabelEdit::sceneEvent(QEvent *event)
{
if (event->type() == QEvent::FocusOut)
{
finishEdit(true);
Expand Down
4 changes: 4 additions & 0 deletions src/qvge/CTextLabelEdit.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ It can be used freely, maintaining the information above.
#include <QGraphicsTextItem>

class CItem;
class CEditorScene;


class CTextLabelEdit: public QGraphicsTextItem
Expand All @@ -25,6 +26,9 @@ class CTextLabelEdit: public QGraphicsTextItem
void startEdit(CItem *item);
void finishEdit(bool accept = true);

virtual bool onKeyPressed(CEditorScene& scene, QKeyEvent *keyEvent);
virtual bool onKeyReleased(CEditorScene& scene, QKeyEvent *keyEvent);

Q_SIGNALS:
void editingStarted(CItem *item);
void editingFinished(CItem *item, bool cancelled);
Expand Down

0 comments on commit 7dcdff7

Please sign in to comment.