diff options
| author | 2010-06-20 23:21:22 +0000 | |
|---|---|---|
| committer | 2010-06-20 23:21:22 +0000 | |
| commit | 1119594f881b32e1dd9c9523cbf180de2fc5c024 (patch) | |
| tree | bb6e715d6b6f2b2ca2ffb997daeb63fb12c3aae6 /src | |
| parent | Another detail into README (diff) | |
| download | KVIrc-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.cpp | 16 | ||||
| -rw-r--r-- | src/kvirc/kvs/kvi_kvs_popupmenu.h | 1 | ||||
| -rw-r--r-- | src/kvirc/kvs/kvi_kvs_treenode_specialcommanddefpopup.cpp | 11 |
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) |
