Create a KXMLGUIFactory for the context menu on the fly, if needed, instead of forcibly merging with the hosts GUI.

BUG: 153646

svn path=/trunk/KDE/kdebase/apps/konsole/; revision=747059
This commit is contained in:
Thomas Friedrichsmeier
2007-12-10 22:54:30 +00:00
parent 8928e03af4
commit ac511d63f0
2 changed files with 13 additions and 22 deletions

View File

@@ -36,6 +36,7 @@
#include <KToggleAction>
#include <KUrl>
#include <KXMLGUIFactory>
#include <KXMLGUIBuilder>
#include <kdebug.h>
#include <kcodecaction.h>
#include <kdeversion.h>
@@ -899,6 +900,16 @@ void SessionController::showDisplayContextMenu(TerminalDisplay* /*display*/ , in
{
QMenu* popup = 0;
// needed to make sure the popup menu is available, even if a hosting
// application did not merge our GUI.
if (!factory()) {
if (!clientBuilder()) {
setClientBuilder(new KXMLGUIBuilder(_view));
}
KXMLGUIFactory* f = new KXMLGUIFactory(clientBuilder(), this);
f->addClient(this);
}
if ( factory() )
popup = qobject_cast<QMenu*>(factory()->container("session-popup-menu",this));