about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--ranger/gui/widgets/filelistcontainer.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/ranger/gui/widgets/filelistcontainer.py b/ranger/gui/widgets/filelistcontainer.py
index fa4ec989..cc45f2c9 100644
--- a/ranger/gui/widgets/filelistcontainer.py
+++ b/ranger/gui/widgets/filelistcontainer.py
@@ -8,6 +8,7 @@ class FileListContainer(Widget, DisplayableContainer):
 	ratios = None
 	preview = True
 	preview_available = True
+	stretch_ratios = None
 
 	def __init__(self, win, ratios, preview = True):
 		DisplayableContainer.__init__(self, win)
@@ -18,6 +19,11 @@ class FileListContainer(Widget, DisplayableContainer):
 		# normalize ratios:
 		ratio_sum = float(reduce(lambda x,y: x + y, ratios))
 		self.ratios = tuple(map(lambda x: x / ratio_sum, ratios))
+
+		if self.ratios >= 2:
+			self.stretch_ratios = self.ratios[:-2] + \
+					((self.ratios[-2] + self.ratios[-1] * 0.9), \
+					(self.ratios[-1] * 0.1))
 		
 		offset = 1 - len(ratios)
 		if preview: offset += 1
@@ -39,21 +45,25 @@ class FileListContainer(Widget, DisplayableContainer):
 		DisplayableContainer.resize(self, y, x, hei, wid)
 		left = self.x
 
-		cut_off_last = self.preview and not self.preview_available
+		cut_off_last = self.preview and not self.preview_available \
+				and self.stretch_ratios
 
 		if cut_off_last:
-			generator = zip(self.ratios[:-1], range(len(self.ratios)-1))
+			generator = zip(self.stretch_ratios, range(len(self.ratios)))
 		else:
 			generator = zip(self.ratios, range(len(self.ratios)))
 
 		for ratio, i in generator:
 			wid = int(ratio * self.wid)
-			if cut_off_last and i == len(self.ratios) - 2:
-				wid += int(self.ratios[-1] * self.wid)
+
+			if i == len(self.ratios) - 1:
+				wid = int(self.wid - left + 1)
+
 			try:
 				self.container[i].resize(self.y, left, hei, max(1, wid-1))
 			except KeyError:
 				pass
+
 			left += wid
 	
 	def poke(self):