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 24f43527f5
commit 650404c17f

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);
}