Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py

changeset 1088
9c84b88cff09
parent 1078
aeee8401e2ce
child 1093
47bc4ef30315
diff -r fb8cd56819a9 -r 9c84b88cff09 Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py
--- a/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py	Tue May 31 10:31:06 2011 +0200
+++ b/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py	Tue May 31 11:25:52 2011 +0200
@@ -892,13 +892,15 @@
         bisectMenu.addAction(self.hgBisectResetAct)
         self.subMenus.append(bisectMenu)
         
-        extensionsMenu = QMenu(self.trUtf8("Extensions"), menu)
-        extensionsMenu.aboutToShow.connect(self.__showExtensionMenu)
+        self.__extensionsMenu = QMenu(self.trUtf8("Extensions"), menu)
+        self.__extensionsMenu.setTearOffEnabled(True)
+        self.__extensionsMenu.aboutToShow.connect(self.__showExtensionMenu)
         self.extensionMenus = {}
         for extensionMenuTitle in sorted(self.__extensionMenuTitles):
             extensionName = self.__extensionMenuTitles[extensionMenuTitle]
-            self.extensionMenus[extensionName] = extensionsMenu.addMenu(
-                self.__extensions[extensionName].initMenu(extensionsMenu))
+            self.extensionMenus[extensionName] = self.__extensionsMenu.addMenu(
+                self.__extensions[extensionName].initMenu(self.__extensionsMenu))
+        self.vcs.activeExtensionsChanged.connect(self.__showExtensionMenu)
         
         act = menu.addAction(
             UI.PixmapCache.getIcon(
@@ -919,7 +921,7 @@
         menu.addSeparator()
         menu.addMenu(bundleMenu)
         menu.addSeparator()
-        menu.addMenu(extensionsMenu)
+        menu.addMenu(self.__extensionsMenu)
         menu.addSeparator()
         menu.addAction(self.vcsNewAct)
         menu.addAction(self.vcsExportAct)
@@ -968,6 +970,8 @@
         """
         Public method to perform shutdown actions.
         """
+        self.vcs.activeExtensionsChanged.disconnect(self.__showExtensionMenu)
+        
         # close torn off sub menus
         for menu in self.subMenus:
             if menu.isTearOffMenuVisible():
@@ -978,6 +982,9 @@
             menu = self.extensionMenus[extensionName].menu()
             if menu.isTearOffMenuVisible():
                 menu.hideTearOffMenu()
+        
+        if self.__extensionsMenu.isTearOffMenuVisible():
+            self.__extensionsMenu.hideTearOffMenu()
     
     def __showExtensionMenu(self):
         """
@@ -986,6 +993,9 @@
         for extensionName in self.extensionMenus:
             self.extensionMenus[extensionName].setEnabled(
                 self.vcs.isExtensionActive(extensionName))
+            if not self.extensionMenus[extensionName].isEnabled() and \
+               self.extensionMenus[extensionName].menu().isTearOffMenuVisible():
+                self.extensionMenus[extensionName].menu().hideTearOffMenu()
     
     def __hgExtendedDiff(self):
         """

eric ide

mercurial