about summary refs log tree commit diff stats
path: root/ranger/gui/ui.py
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2010-04-07 19:42:45 +0200
committerhut <hut@lavabit.com>2010-04-07 19:42:45 +0200
commitbe7c282c2d73472254946f5043bf835f6bbb038a (patch)
tree6862f682b6fdddd5b104e0b127735f56307cf1cb /ranger/gui/ui.py
parent7626fd1d08ccb597ef25eaebf37ffc7be33c6df2 (diff)
downloadranger-be7c282c2d73472254946f5043bf835f6bbb038a.tar.gz
gui.ui: improvements in handling of special keys
Diffstat (limited to 'ranger/gui/ui.py')
-rw-r--r--ranger/gui/ui.py22
1 files changed, 19 insertions, 3 deletions
diff --git a/ranger/gui/ui.py b/ranger/gui/ui.py
index c1a4bb60..8d355665 100644
--- a/ranger/gui/ui.py
+++ b/ranger/gui/ui.py
@@ -127,6 +127,10 @@ class UI(DisplayableContainer):
 		if hasattr(self, 'hint'):
 			self.hint()
 
+		if key < 0:
+			self.env.keybuffer.clear()
+			return
+
 		self.env.key_append(key)
 
 		if DisplayableContainer.press(self, key):
@@ -157,22 +161,34 @@ class UI(DisplayableContainer):
 
 	def handle_input(self):
 		key = self.win.getch()
-		if key in (27, 195):  # 27: alt+X, 195: unicode
+		if key is 27 or key >= 128 and key < 256:
+			# Handle special keys like ALT+X or unicode here:
 			keys = [key]
 			previous_load_mode = self.load_mode
 			self.set_load_mode(True)
-			for n in range(8):
+			for n in range(4):
 				getkey = self.win.getch()
 				if getkey is not -1:
 					keys.append(getkey)
+			if len(keys) == 1:
+				keys.append(-1)
 			for key in keys:
 				self.handle_key(key)
 			self.set_load_mode(previous_load_mode)
+			if self.settings.flushinput:
+				curses.flushinp()
 		else:
+			# Handle simple key presses, CTRL+X, etc here:
 			if self.settings.flushinput:
 				curses.flushinp()
 			if key > 0:
-				self.handle_key(key)
+				if key == curses.KEY_MOUSE:
+					self.handle_mouse()
+				elif key == curses.KEY_RESIZE:
+					self.update_size()
+				else:
+					if not self.fm.input_is_blocked():
+						self.handle_key(key)
 
 	def setup(self):
 		"""