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

List:       kwrite-devel
Subject:    KDE/kdelibs/kate
From:       Rafael Fernández López <ereslibre () kde ! org>
Date:       2008-01-09 17:26:38
Message-ID: 1199899598.797318.26522.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 758948 by ereslibre:

Fix plugin (un)loading merging with GUI. This completely fixes KWrite. On Kate, since \
it has a slightly different way of working with plugins, this  makes under certain \
circumstances some buttons of the main toolbar to be lost. Kate will have to be \
fixed. KWrite works like a charm.

CCMAIL: kwrite-devel@kde.org


 M  +2 -2      dialogs/katedialogs.cpp  
 M  +25 -4     utils/katepartpluginmanager.cpp  


--- trunk/KDE/kdelibs/kate/dialogs/katedialogs.cpp #758947:758948
@@ -825,12 +825,12 @@
   KatePartPluginList &katePluginList = KatePartPluginManager::self()->pluginList();
   for (int i=0; i < plugins.count(); i++) {
     if (plugins[i].isPluginEnabled()) {
-      if (!(katePluginList[i].load && katePluginList[i].plugin)) {
+      if (!katePluginList[i].load) {
         KatePartPluginManager::self()->loadPlugin(katePluginList[i]);
         KatePartPluginManager::self()->enablePlugin(katePluginList[i]);
       }
     } else {
-      if (katePluginList[i].load || katePluginList[i].plugin) {
+      if (katePluginList[i].load) {
         KatePartPluginManager::self()->disablePlugin(katePluginList[i]);
         KatePartPluginManager::self()->unloadPlugin(katePluginList[i]);
       }
--- trunk/KDE/kdelibs/kate/utils/katepartpluginmanager.cpp #758947:758948
@@ -29,6 +29,7 @@
 #include <ktexteditor/view.h>
 #include <kconfig.h>
 #include <kconfiggroup.h>
+#include <kxmlguifactory.h>
 
 #include <kservicetypetrader.h>
 #include <kdebug.h>
@@ -184,6 +185,7 @@
   if (item.plugin) return;
 
   item.plugin = KTextEditor::createPlugin (item.service, this);
+  Q_ASSERT(item.plugin);
   item.load = (item.plugin != 0);
 }
 
@@ -202,9 +204,22 @@
 
   // register docs and views
   foreach (KTextEditor::Document *doc, KateGlobal::self()->documents()) {
-    item.plugin->addDocument(doc);
-    foreach (KTextEditor::View *view, doc->views())
+    if (!doc)
+      continue;
+
+    foreach (KTextEditor::View *view, doc->views()) {
+      if (!view)
+        continue;
+
+      KXMLGUIFactory *viewFactory = view->factory();
+      if (viewFactory)
+        viewFactory->removeClient(view);
+
       item.plugin->addView(view);
+
+      if (viewFactory)
+        viewFactory->addClient(view);
+    }
   }
 }
 
@@ -216,9 +231,15 @@
 
   // de-register docs and views
   foreach (KTextEditor::Document *doc, KateGlobal::self()->documents()) {
-    foreach (KTextEditor::View *view, doc->views())
+    if (!doc)
+      continue;
+
+    foreach (KTextEditor::View *view, doc->views()) {
+      if (!view)
+        continue;
+
       item.plugin->removeView(view);
-    item.plugin->removeDocument(doc);
+    }
   }
 }
 
_______________________________________________
KWrite-Devel mailing list
KWrite-Devel@kde.org
https://mail.kde.org/mailman/listinfo/kwrite-devel


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

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