aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2010-06-20 23:21:22 +0000
committerGravatar Szymon Tomasz Stefanek2010-06-20 23:21:22 +0000
commit1119594f881b32e1dd9c9523cbf180de2fc5c024 (patch)
treebb6e715d6b6f2b2ca2ffb997daeb63fb12c3aae6 /src
parentAnother detail into README (diff)
downloadKVIrc-1119594f881b32e1dd9c9523cbf180de2fc5c024.tar.gz
KVIrc-1119594f881b32e1dd9c9523cbf180de2fc5c024.tar.bz2
KVIrc-1119594f881b32e1dd9c9523cbf180de2fc5c024.zip
Additional fix related to script popups
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4490 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
-rw-r--r--src/kvirc/kvs/kvi_kvs_popupmenu.cpp16
-rw-r--r--src/kvirc/kvs/kvi_kvs_popupmenu.h1
-rw-r--r--src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp11
3 files changed, 25 insertions, 3 deletions
diff --git a/src/kvirc/kvs/kvi_kvs_popupmenu.cpp b/src/kvirc/kvs/kvi_kvs_popupmenu.cpp
index 1e69395ab..2fcfe682c 100644
--- a/src/kvirc/kvs/kvi_kvs_popupmenu.cpp
+++ b/src/kvirc/kvs/kvi_kvs_popupmenu.cpp
@@ -591,6 +591,22 @@ KviKvsPopupMenuTopLevelData * KviKvsPopupMenu::topLevelData()
return m_pTopLevelData;
}
+KviKvsPopupMenu * KviKvsPopupMenu::findChildPopupByName(const QString &szItemName)
+{
+ for(KviKvsPopupMenuItem * it = m_pItemList->first();it;it = m_pItemList->next())
+ {
+ if(!it->isMenu())
+ continue;
+ if(!KviQString::equalCI(szItemName,it->name()))
+ continue;
+ KviKvsPopupMenu * pMenu = ((KviKvsPopupMenuItemMenu *)it)->menu();
+ if(!pMenu)
+ continue;
+ return pMenu;
+ }
+ return NULL;
+}
+
bool KviKvsPopupMenu::removeItemByName(const QString &szItemName,bool bRecursive)
{
KviKvsScript * se;
diff --git a/src/kvirc/kvs/kvi_kvs_popupmenu.h b/src/kvirc/kvs/kvi_kvs_popupmenu.h
index 0f6596081..d83db6f8d 100644
--- a/src/kvirc/kvs/kvi_kvs_popupmenu.h
+++ b/src/kvirc/kvs/kvi_kvs_popupmenu.h
@@ -266,6 +266,7 @@ public:
void addPrologue(const QString &szItemName,const QString &szCode);
void addEpilogue(const QString &szItemName,const QString &szCode);
bool removeItemByName(const QString &szItemName,bool bRecursive);
+ KviKvsPopupMenu * findChildPopupByName(const QString &szItemName);
KviPointerList<KviKvsScript> * epilogues(){ return m_pEpilogues; };
KviPointerList<KviKvsScript> * prologues(){ return m_pPrologues; };
KviKvsPopupMenu * parentPopup(){ return m_pParentPopup; };
diff --git a/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp b/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp
index a26aa1eef..6e6639d13 100644
--- a/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp
+++ b/src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp
@@ -243,9 +243,14 @@ void KviKvsTreeNodeSpecialCommandDefpopupLabelPopup::addLabel(KviKvsTreeNodeSpec
bool KviKvsTreeNodeSpecialCommandDefpopupLabelPopup::execute(KviKvsRunTimeContext * c,KviKvsPopupMenu * p)
{
- // the name will be reset anyway
- KviKvsPopupMenu * pNew = p->addPopup(m_szItemName,m_szText,m_szIcon,m_szCondition);
- return fill(c,pNew);
+ // first check if we're trying to add to a child submenu
+ KviKvsPopupMenu * pMenu = p->findChildPopupByName(m_szItemName);
+ if(!pMenu)
+ {
+ // not found: add a new one
+ pMenu = p->addPopup(m_szItemName,m_szText,m_szIcon,m_szCondition);
+ }
+ return fill(c,pMenu);
}
bool KviKvsTreeNodeSpecialCommandDefpopupLabelPopup::fill(KviKvsRunTimeContext* c,KviKvsPopupMenu * p)