mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-17 12:40:35 +01:00
In rare case in the diagram editor, when we add an element in the diagram and quickly click left, qet crash.
This commit try to avoid this crash, but without any certitude because the crash is very difficult to reproduce git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@4959 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -179,7 +179,15 @@ void Diagram::drawBackground(QPainter *p, const QRectF &r) {
|
||||
*/
|
||||
void Diagram::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
|
||||
{
|
||||
if (m_event_interface && m_event_interface->mouseDoubleClickEvent(event)) return;
|
||||
if (m_event_interface)
|
||||
if(m_event_interface->mouseDoubleClickEvent(event))
|
||||
{
|
||||
if(!m_event_interface->isRunning())
|
||||
{
|
||||
delete m_event_interface; m_event_interface = nullptr;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
QGraphicsScene::mouseDoubleClickEvent(event);
|
||||
}
|
||||
@@ -191,7 +199,15 @@ void Diagram::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
|
||||
*/
|
||||
void Diagram::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
||||
{
|
||||
if (m_event_interface && m_event_interface->mousePressEvent(event)) return;
|
||||
if (m_event_interface)
|
||||
if(m_event_interface->mousePressEvent(event))
|
||||
{
|
||||
if(!m_event_interface->isRunning())
|
||||
{
|
||||
delete m_event_interface; m_event_interface = nullptr;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
QGraphicsScene::mousePressEvent(event);
|
||||
}
|
||||
@@ -203,7 +219,15 @@ void Diagram::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
||||
*/
|
||||
void Diagram::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
||||
{
|
||||
if (m_event_interface && m_event_interface->mouseMoveEvent(event)) return;
|
||||
if (m_event_interface)
|
||||
if(m_event_interface->mouseMoveEvent(event))
|
||||
{
|
||||
if(!m_event_interface->isRunning())
|
||||
{
|
||||
delete m_event_interface; m_event_interface = nullptr;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
QGraphicsScene::mouseMoveEvent(event);
|
||||
}
|
||||
@@ -215,7 +239,15 @@ void Diagram::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
||||
*/
|
||||
void Diagram::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
|
||||
{
|
||||
if (m_event_interface && m_event_interface->mouseReleaseEvent(event)) return;
|
||||
if (m_event_interface)
|
||||
if(m_event_interface->mouseReleaseEvent(event))
|
||||
{
|
||||
if(!m_event_interface->isRunning())
|
||||
{
|
||||
delete m_event_interface; m_event_interface = nullptr;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
QGraphicsScene::mouseReleaseEvent(event);
|
||||
}
|
||||
@@ -227,7 +259,15 @@ void Diagram::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
|
||||
*/
|
||||
void Diagram::wheelEvent(QGraphicsSceneWheelEvent *event)
|
||||
{
|
||||
if (m_event_interface && m_event_interface->wheelEvent(event)) return;
|
||||
if (m_event_interface)
|
||||
if(m_event_interface->wheelEvent(event))
|
||||
{
|
||||
if(!m_event_interface->isRunning())
|
||||
{
|
||||
delete m_event_interface; m_event_interface = nullptr;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
QGraphicsScene::wheelEvent(event);
|
||||
}
|
||||
@@ -240,7 +280,15 @@ void Diagram::wheelEvent(QGraphicsSceneWheelEvent *event)
|
||||
*/
|
||||
void Diagram::keyPressEvent(QKeyEvent *e)
|
||||
{
|
||||
if (m_event_interface && m_event_interface->keyPressEvent(e)) return;
|
||||
if (m_event_interface)
|
||||
if(m_event_interface->keyPressEvent(e))
|
||||
{
|
||||
if(!m_event_interface->isRunning())
|
||||
{
|
||||
delete m_event_interface; m_event_interface = nullptr;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
bool transmit_event = true;
|
||||
if (!isReadOnly()) {
|
||||
@@ -290,8 +338,16 @@ void Diagram::keyPressEvent(QKeyEvent *e)
|
||||
*/
|
||||
void Diagram::keyReleaseEvent(QKeyEvent *e)
|
||||
{
|
||||
if (m_event_interface && m_event_interface->KeyReleaseEvent(e)) return;
|
||||
|
||||
if (m_event_interface)
|
||||
if(m_event_interface->keyReleaseEvent(e))
|
||||
{
|
||||
if(!m_event_interface->isRunning())
|
||||
{
|
||||
delete m_event_interface; m_event_interface = nullptr;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
bool transmit_event = true;
|
||||
if (!isReadOnly()) {
|
||||
// detecte le relachement d'une touche de direction ( = deplacement d'elements)
|
||||
@@ -328,7 +384,6 @@ void Diagram::setEventInterface(DiagramEventInterface *event_interface)
|
||||
event_interface -> init();
|
||||
}
|
||||
m_event_interface = event_interface;
|
||||
connect (m_event_interface, &DiagramEventInterface::finish, this, [this]() { delete this->m_event_interface; this->m_event_interface = nullptr;}, Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -72,7 +72,7 @@ bool DiagramEventInterface::keyPressEvent(QKeyEvent *event) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool DiagramEventInterface::KeyReleaseEvent(QKeyEvent *event) {
|
||||
bool DiagramEventInterface::keyReleaseEvent(QKeyEvent *event) {
|
||||
Q_UNUSED (event);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ class DiagramEventInterface : public QObject
|
||||
virtual bool mouseReleaseEvent (QGraphicsSceneMouseEvent *event);
|
||||
virtual bool wheelEvent (QGraphicsSceneWheelEvent *event);
|
||||
virtual bool keyPressEvent (QKeyEvent *event);
|
||||
virtual bool KeyReleaseEvent (QKeyEvent *event);
|
||||
virtual bool keyReleaseEvent (QKeyEvent *event);
|
||||
virtual bool isRunning () const;
|
||||
virtual void init();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user