From 650404c17fa6f2d6ed7b4d2cc592ab451adbfd65 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Tue, 23 Oct 2018 16:06:48 -0400 Subject: [PATCH] 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. --- src/Mod/TechDraw/Gui/MDIViewPage.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.cpp b/src/Mod/TechDraw/Gui/MDIViewPage.cpp index 3418416079..9f31c16457 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.cpp +++ b/src/Mod/TechDraw/Gui/MDIViewPage.cpp @@ -922,8 +922,11 @@ void MDIViewPage::clearSceneSelection() // Iterate through all views and unselect all for (std::vector::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); }