[PATCH] Beware of weird partition sizes (#1040012)
Vratislav Podzimek
vpodzime at redhat.com
Tue Dec 10 16:22:01 UTC 2013
Signed-off-by: Vratislav Podzimek <vpodzime at redhat.com>
---
pyanaconda/ui/gui/spokes/lib/resize.py | 27 ++++++++++++++++++---------
1 file changed, 18 insertions(+), 9 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/lib/resize.py b/pyanaconda/ui/gui/spokes/lib/resize.py
index a18f09d..9aeda5a 100644
--- a/pyanaconda/ui/gui/spokes/lib/resize.py
+++ b/pyanaconda/ui/gui/spokes/lib/resize.py
@@ -42,9 +42,18 @@ TOOLTIP_COL = 6
RESIZE_TARGET_COL = 7
NAME_COL = 8
-PartStoreRow = namedtuple("PartStoreRow", ["id", "desc", "fs", "reclaimable",
- "action", "editable", "tooltip",
- "target", "name"])
+_PartStoreRowUnsafe = namedtuple("_PartStoreRowUnsafe", ["id", "desc", "fs", "reclaimable",
+ "action", "editable", "tooltip",
+ "target", "name"])
+
+class PartStoreRow(_PartStoreRowUnsafe):
+ """Class rounding the potentially unsafe float target value"""
+
+ def __init__(self, ident, desc, fs, reclaimable, action,
+ editable, tooltip, target, name):
+ rounded_target = round(target, 2)
+ super(PartStoreRow, self).__init__(ident, desc, fs, reclaimable, action,
+ editable, tooltip, rounded_target, name)
PRESERVE = N_("Preserve")
SHRINK = N_("Shrink")
@@ -227,19 +236,19 @@ class ResizeDialog(GUIObject):
with here.
"""
self._resizeSlider.handler_block_by_func(self.on_resize_value_changed)
- self._resizeSlider.set_range(device.minSize, device.size)
+ self._resizeSlider.set_range(device.minSize, round(device.size, 2))
self._resizeSlider.handler_unblock_by_func(self.on_resize_value_changed)
self._resizeSlider.set_value(value)
# The slider needs to be keyboard-accessible. We'll make small movements change in
# 1% increments, and large movements in 5% increments.
- distance = device.size - device.minSize
+ distance = round(device.size, 2) - device.minSize
onePercent = distance*0.01
fivePercent = distance*0.05
twentyPercent = distance*0.2
adjustment = self.builder.get_object("resizeAdjustment")
- adjustment.configure(value, device.minSize, device.size, onePercent, fivePercent, 0)
+ adjustment.configure(value, device.minSize, round(device.size, 2), onePercent, fivePercent, 0)
# And then the slider needs a couple tick marks for easier navigation.
self._resizeSlider.clear_marks()
@@ -248,7 +257,7 @@ class ResizeDialog(GUIObject):
# Finally, add tick marks for the ends.
self._resizeSlider.add_mark(device.minSize, Gtk.PositionType.BOTTOM, size_str(device.minSize))
- self._resizeSlider.add_mark(device.size, Gtk.PositionType.BOTTOM, size_str(device.size))
+ self._resizeSlider.add_mark(round(device.size, 2), Gtk.PositionType.BOTTOM, size_str(round(device.size, 2)))
def _update_action_buttons(self, row):
obj = PartStoreRow(*row)
@@ -325,9 +334,9 @@ class ResizeDialog(GUIObject):
if obj.action == _(PRESERVE):
return False
if obj.action == _(SHRINK):
- self._selectedReclaimableSpace += device.size - obj.target
+ self._selectedReclaimableSpace += round(device.size, 2) - obj.target
elif obj.action == _(DELETE):
- self._selectedReclaimableSpace += device.size
+ self._selectedReclaimableSpace += round(device.size, 2)
return False
--
1.8.4.2
More information about the anaconda-patches
mailing list