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:
committed by
Yorik van Havre
parent
64538f7b3c
commit
6e05b0f4ca
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user