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