[PATCH 18/19] Fix selector management after a reformat action is scheduled.

David Lehman dlehman at redhat.com
Thu Oct 18 21:49:46 UTC 2012


Previously, if an existing device had a mountpoint but was not
scheduled for reformat when you scheduled a reformat, a new
selector would be added without removing the old one(s).
---
 pyanaconda/ui/gui/spokes/custom.py |   34 +++++++++++++++++++---------------
 1 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/pyanaconda/ui/gui/spokes/custom.py b/pyanaconda/ui/gui/spokes/custom.py
index 55dd4c3..0683a3f 100644
--- a/pyanaconda/ui/gui/spokes/custom.py
+++ b/pyanaconda/ui/gui/spokes/custom.py
@@ -1190,22 +1190,26 @@ class CustomPartitioningSpoke(NormalSpoke, StorageChecker):
                                            "Click for details."))
                     self.window.show_all()
                 else:
-                    if old_mountpoint:
-                        selector.props.mountpoint = (mountpoint or
-                                                     selector._device.format.name)
-                        selector.props.name = (self._mountpointName(mountpoint)
-                                               or selector._device.format.name)
+                    # first, remove this selector from any old install page(s)
+                    new_selector = None
+                    for page in self._accordion.allPages:
+                        for _selector in getattr(page, "_members", []):
+                            if _selector._device in (device, old_device):
+                                if page.pageTitle == new_install_name:
+                                    new_selector = _selector
+                                    continue
+
+                                page.removeSelector(_selector)
+                                if not page._members:
+                                    log.debug("removing empty page %s" % page.pageTitle)
+                                    self._accordion.removePage(page.pageTitle)
+
+                    # either update the existing selector or add a new one
+                    if new_selector:
+                        new_selector.props.mountpoint = mountpoint or ""
+                        new_selector.props.name = (self._mountpointName(mountpoint)
+                                                   or device.format.name)
                     else:
-                        # first, remove this selector from any page(s) and add
-                        # it to the new page
-                        for page in self._accordion.allPages:
-                            for _selector in getattr(page, "_members", []):
-                                if _selector._device in (device, old_device):
-                                    page.removeSelector(_selector)
-                                    if not page._members:
-                                        log.debug("removing empty page %s" % page.pageTitle)
-                                        self._accordion.removePage(page.pageTitle)
-
                         self.add_new_selector(device)
 
             return
-- 
1.7.7.6



More information about the anaconda-patches mailing list