Reduce unnecessary updates to QGraphicsScene

- Views were being redrawn unnecessarily on
  changes to selection status. Views are now
  redrawn only if the item's selection status
  is different from the desired state.
This commit is contained in:
wandererfan
2018-10-23 16:06:48 -04:00
committed by Yorik van Havre
parent 64538f7b3c
commit 6e05b0f4ca

View File

@@ -922,8 +922,11 @@ void MDIViewPage::clearSceneSelection()
// Iterate through all views and unselect all
for (std::vector<QGIView *>::iterator it = views.begin(); it != views.end(); ++it) {
QGIView *item = *it;
item->setSelected(false);
item->updateView();
bool state = item->isSelected();
if (state) {
item->setSelected(false);
item->updateView();
}
}
blockSelection(false);
@@ -941,8 +944,11 @@ void MDIViewPage::selectQGIView(App::DocumentObject *obj, const bool isSelected)
blockSelection(true);
if(view) {
view->setSelected(isSelected);
view->updateView();
bool state = view->isSelected();
if (state != isSelected) {
view->setSelected(isSelected);
view->updateView();
}
}
blockSelection(false);
}