[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