summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorent Le Coz <louiz@louiz.org>2011-11-18 18:26:15 +0100
committerFlorent Le Coz <louiz@louiz.org>2011-11-18 18:28:07 +0100
commit18dbc880e1d72a09caec8163de4f80bf03f567e1 (patch)
treebb9b5d6f7d2405e618a0ee23ece11b74731fdbe5
parent27e587118bac2ee70a076875f0fb9fddcc334c9b (diff)
downloadpoezio-18dbc880e1d72a09caec8163de4f80bf03f567e1.tar.gz
poezio-18dbc880e1d72a09caec8163de4f80bf03f567e1.tar.bz2
poezio-18dbc880e1d72a09caec8163de4f80bf03f567e1.tar.xz
poezio-18dbc880e1d72a09caec8163de4f80bf03f567e1.zip
Do not try to interpret keys as key shortcuts when pasting text.
Avoiding, for example, nickname completions when pasting a text containing the \t char. Also, pasting is a little because it doesn’t search an associated command for each pasted char. AWESOME.
-rw-r--r--src/core.py8
-rw-r--r--src/tabs.py29
2 files changed, 20 insertions, 17 deletions
diff --git a/src/core.py b/src/core.py
index 6bfb4c63..8de694f7 100644
--- a/src/core.py
+++ b/src/core.py
@@ -808,12 +808,12 @@ class Core(object):
if char in self.key_func:
self.key_func[char]()
else:
- res = self.do_command(char)
+ res = self.do_command(char, False)
if res:
self.refresh_window()
else:
for char in char_list:
- self.do_command(char)
+ self.do_command(char, True)
self.refresh_window()
self.doupdate()
@@ -1807,10 +1807,10 @@ class Core(object):
roster.save_to_config_file()
config.set_and_save('info_win_height', self.information_win_size, 'var')
- def do_command(self, key):
+ def do_command(self, key, raw):
if not key:
return
- return self.current_tab().on_input(key)
+ return self.current_tab().on_input(key, raw)
def on_roster_enter_key(self, roster_row):
"""
diff --git a/src/tabs.py b/src/tabs.py
index 54ebb1a5..f1f4fa16 100644
--- a/src/tabs.py
+++ b/src/tabs.py
@@ -258,7 +258,10 @@ class Tab(object):
"""
return None
- def on_input(self, key):
+ def on_input(self, key, raw):
+ """
+ raw indicates if the key should activate the associated command or not.
+ """
pass
def update_commands(self):
@@ -934,8 +937,8 @@ class MucTab(ChatTab):
self.info_win.refresh()
self.input.refresh()
- def on_input(self, key):
- if key in self.key_func:
+ def on_input(self, key, raw):
+ if not raw and key in self.key_func:
self.key_func[key]()
return False
self.input.do_command(key)
@@ -1425,8 +1428,8 @@ class PrivateTab(ChatTab):
def get_name(self):
return self.name
- def on_input(self, key):
- if key in self.key_func:
+ def on_input(self, key, raw):
+ if not raw and key in self.key_func:
self.key_func[key]()
return False
self.input.do_command(key)
@@ -1897,7 +1900,7 @@ class RosterInfoTab(Tab):
def get_name(self):
return self.name
- def on_input(self, key):
+ def on_input(self, key, raw):
if key == '^M':
selected_row = self.roster_win.get_selected_row()
res = self.input.do_command(key)
@@ -1906,7 +1909,7 @@ class RosterInfoTab(Tab):
if key == '^M':
self.core.on_roster_enter_key(selected_row)
return selected_row
- elif key in self.key_func:
+ elif not raw and key in self.key_func:
return self.key_func[key]()
def toggle_offline_show(self):
@@ -2166,8 +2169,8 @@ class ConversationTab(ChatTab):
def get_name(self):
return self._name
- def on_input(self, key):
- if key in self.key_func:
+ def on_input(self, key, raw):
+ if not raw and key in self.key_func:
self.key_func[key]()
return False
self.input.do_command(key)
@@ -2351,11 +2354,11 @@ class MucListTab(Tab):
if isinstance(self.input, windows.CommandInput):
self.complete_commands(self.input)
- def on_input(self, key):
+ def on_input(self, key, raw):
res = self.input.do_command(key)
if res:
return True
- if key in self.key_func:
+ if not raw and key in self.key_func:
return self.key_func[key]()
def on_lose_focus(self):
@@ -2396,11 +2399,11 @@ class SimpleTextTab(Tab):
self.input.resize(1, self.width, self.height-1, 0)
self.input.do_command("/") # we add the slash
- def on_input(self, key):
+ def on_input(self, key, raw):
res = self.input.do_command(key)
if res:
return True
- if key in self.key_func:
+ if not raw and key in self.key_func:
return self.key_func[key]()
def close(self):