[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdevplatform/plugins/contextbrowser
From:       David Nolden <david.nolden.kde () art-master ! de>
Date:       2008-10-24 15:06:28
Message-ID: 1224860788.301196.9825.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 875480 by zwabel:

Do not re-create the navigation-widget when the navigated declaration has stayed the \
same


 M  +17 -0     contextbrowserview.cpp  
 M  +1 -0      contextbrowserview.h  


--- trunk/KDE/kdevplatform/plugins/contextbrowser/contextbrowserview.cpp \
#875479:875480 @@ -46,6 +46,7 @@
 #include <language/duchain/types/functiontype.h>
 #include <language/duchain/specializationstore.h>
 #include "browsemanager.h"
+#include <language/duchain/navigation/abstractnavigationwidget.h>
 
 const int maxHistoryLength = 30;
 
@@ -447,16 +448,23 @@
 void ContextBrowserView::updateMainWidget(QWidget* widget)
 {
     if (widget) {
+        setUpdatesEnabled(false);
         kDebug() << "";
         resetWidget();
         m_navigationWidget = widget;
         m_layout->insertWidget(1, widget, 1);
         m_allowLockedUpdate = false;
+        setUpdatesEnabled(true);
     }
 }
 
 void ContextBrowserView::setDeclaration(KDevelop::Declaration* decl, \
                KDevelop::TopDUContext* topContext) {
     if (!isLocked() && isVisible()) {  // NO-OP if toolview is hidden, for \
performance reasons +        
+        if(m_navigationWidgetDeclaration == decl->id())
+            return;
+        m_navigationWidgetDeclaration = decl->id();
+        
         QWidget* w = m_declarationCtrl->createWidget(decl, topContext);
         updateMainWidget(w);
     }
@@ -475,6 +483,15 @@
 
 void ContextBrowserView::setContext(KDevelop::DUContext* context) {
     if (!isLocked() && isVisible()) { // NO-OP if toolview is hidden, for \
performance reasons +        
+        if(context->owner()) {
+            if(context->owner()->id() == m_navigationWidgetDeclaration)
+                return;
+            m_navigationWidgetDeclaration = context->owner()->id();
+        }else{
+            m_navigationWidgetDeclaration = DeclarationId();
+        }
+        
         QWidget* w = m_contextCtrl->createWidget(context);
         updateMainWidget(w);
     }
--- trunk/KDE/kdevplatform/plugins/contextbrowser/contextbrowserview.h #875479:875480
@@ -73,6 +73,7 @@
         QVBoxLayout* m_layout;
         QToolButton* m_lockButton;
         QWidget* m_navigationWidget;
+        KDevelop::DeclarationId m_navigationWidgetDeclaration;
         bool m_allowLockedUpdate;
 };
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic