summaryrefslogtreecommitdiff
path: root/src/core.py
diff options
context:
space:
mode:
authorFlorent Le Coz <louiz@louiz.org>2011-05-29 00:35:11 +0200
committerFlorent Le Coz <louiz@louiz.org>2011-05-29 00:35:11 +0200
commit8d3053bd93db2e976f49a3a32038712083d411a7 (patch)
tree8f65efeb61a6676fef0e6ca9d8469985b0b068c0 /src/core.py
parent3af88ff8d620791e4d4969e913b46fe34857f9c3 (diff)
downloadpoezio-8d3053bd93db2e976f49a3a32038712083d411a7.tar.gz
poezio-8d3053bd93db2e976f49a3a32038712083d411a7.tar.bz2
poezio-8d3053bd93db2e976f49a3a32038712083d411a7.tar.xz
poezio-8d3053bd93db2e976f49a3a32038712083d411a7.zip
fixes #2164. Restore multiline messages on paste of big text. That’s now faster and works ~100% of the time (no more message cut in two part for no reason, I think)
Diffstat (limited to 'src/core.py')
-rw-r--r--src/core.py40
1 files changed, 23 insertions, 17 deletions
diff --git a/src/core.py b/src/core.py
index 14cb4857..f4cca7e3 100644
--- a/src/core.py
+++ b/src/core.py
@@ -670,23 +670,31 @@ class Core(object):
"""
# curses.ungetch(0) # FIXME
while self.running:
- char = self.read_keyboard()
+ char_list = self.read_keyboard()
# Special case for M-x where x is a number
- if char.startswith('M-') and len(char) == 3:
- try:
- nb = int(char[2])
- except ValueError:
- pass
- else:
- if self.current_tab().nb == nb:
- self.go_to_previous_tab()
+ if len(char_list) == 1:
+ char = char_list[0]
+ if char.startswith('M-') and len(char) == 3:
+ try:
+ nb = int(char[2])
+ except ValueError:
+ pass
else:
- self.command_win('%d' % nb)
- # search for keyboard shortcut
- if char in self.key_func:
- self.key_func[char]()
+ if self.current_tab().nb == nb:
+ self.go_to_previous_tab()
+ else:
+ self.command_win('%d' % nb)
+ # search for keyboard shortcut
+ if char in self.key_func:
+ self.key_func[char]()
+ else:
+ res = self.do_command(char)
+ if res:
+ self.refresh_window()
else:
- self.do_command(char)
+ for char in char_list:
+ self.do_command(char)
+ self.refresh_window()
self.doupdate()
def current_tab(self):
@@ -1419,9 +1427,7 @@ class Core(object):
def do_command(self, key):
if not key:
return
- res = self.current_tab().on_input(key)
- if res:
- self.refresh_window()
+ return self.current_tab().on_input(key)
def on_roster_enter_key(self, roster_row):
"""