Backport fix made in commit 5073, 5077, 5079 in branch 0.6

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.60@5085 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
blacksun
2017-10-23 12:53:00 +00:00
parent 8c062ab020
commit adcb599e47
4 changed files with 20 additions and 3 deletions

View File

@@ -35,7 +35,7 @@ QRectF QetGraphicsHandlerItem::boundingRect() const
{ {
qreal rect_size = m_size * m_previous_zoom_factor; qreal rect_size = m_size * m_previous_zoom_factor;
QRectF rect(0-rect_size/2, 0-rect_size/2, rect_size, rect_size); QRectF rect(0-rect_size/2, 0-rect_size/2, rect_size, rect_size);
rect.adjust(-2, -2, 2, 2); rect.adjust(-0.1, -0.1, 0.1, 0.1);
return rect; return rect;
} }

View File

@@ -30,7 +30,7 @@
class QetGraphicsHandlerItem : public QGraphicsItem class QetGraphicsHandlerItem : public QGraphicsItem
{ {
public: public:
QetGraphicsHandlerItem(qreal size = 15); QetGraphicsHandlerItem(qreal size = 10);
virtual QRectF boundingRect() const; virtual QRectF boundingRect() const;
enum { Type = UserType + 1200}; enum { Type = UserType + 1200};
@@ -47,7 +47,7 @@ class QetGraphicsHandlerItem : public QGraphicsItem
QColor m_color; QColor m_color;
public: public:
static QVector<QetGraphicsHandlerItem *> handlerForPoint(const QVector<QPointF> &points, int size = 15); static QVector<QetGraphicsHandlerItem *> handlerForPoint(const QVector<QPointF> &points, int size = 10);
}; };
#endif // QETGRAPHICSHANDLERITEM_H #endif // QETGRAPHICSHANDLERITEM_H

View File

@@ -63,6 +63,15 @@ Diagram::Diagram(QETProject *project) :
m_freeze_new_elements (false), m_freeze_new_elements (false),
m_freeze_new_conductors_ (false) m_freeze_new_conductors_ (false)
{ {
setItemIndexMethod(QGraphicsScene::NoIndex);
//Set to no index, because they can be the source of the crash with conductor and shape ghost.
//https://forum.qt.io/topic/71316/qgraphicsscenefinditembsptreevisitor-visit-crashes-due-to-an-obsolete-paintevent-after-qgraphicsscene-removeitem
//https://stackoverflow.com/questions/38458830/crash-after-qgraphicssceneremoveitem-with-custom-item-class
//http://www.qtcentre.org/archive/index.php/t-33730.html
//http://tech-artists.org/t/qt-properly-removing-qgraphicitems/3063
setProject(project); setProject(project);
qgi_manager_ = new QGIManager(this); qgi_manager_ = new QGIManager(this);
setBackgroundBrush(Qt::white); setBackgroundBrush(Qt::white);

View File

@@ -48,6 +48,14 @@ ElementScene::ElementScene(QETElementEditor *editor, QObject *parent) :
m_qgi_manager(this), m_qgi_manager(this),
m_element_editor(editor) m_element_editor(editor)
{ {
setItemIndexMethod(QGraphicsScene::NoIndex);
//Set to no index, because they can be the source of the crash with conductor and shape ghost.
//https://forum.qt.io/topic/71316/qgraphicsscenefinditembsptreevisitor-visit-crashes-due-to-an-obsolete-paintevent-after-qgraphicsscene-removeitem
//https://stackoverflow.com/questions/38458830/crash-after-qgraphicssceneremoveitem-with-custom-item-class
//http://www.qtcentre.org/archive/index.php/t-33730.html
//http://tech-artists.org/t/qt-properly-removing-qgraphicitems/3063
m_behavior = Normal; m_behavior = Normal;
setItemIndexMethod(NoIndex); setItemIndexMethod(NoIndex);
setGrid(1, 1); setGrid(1, 1);