Philipp Hörist pushed to branch master at gajim / gajim
Commits: d238d691 by lovetox at 2020-09-05T17:25:34+02:00 ChatControlBase: Refactor handling ENTER key press
- - - - -
2 changed files:
- gajim/chat_control_base.py - gajim/gtk/message_input.py
Changes:
===================================== gajim/chat_control_base.py ===================================== @@ -795,7 +795,7 @@ class ChatControlBase(ChatCommandProcessor, CommandTools, EventHelper): ft = app.interface.instances['file_transfers'] ft.send_file(self.account, self.contact, path)
- def _on_message_textview_key_press_event(self, widget, event): + def _on_message_textview_key_press_event(self, textview, event): if event.keyval == Gdk.KEY_space: self.space_pressed = True
@@ -805,7 +805,7 @@ class ChatControlBase(ChatCommandProcessor, CommandTools, EventHelper): # If the space key has been pressed and now it hasn't, # we save the buffer into the undo list. But be careful we're not # pressing Control again (as in ctrl+z) - _buffer = widget.get_buffer() + _buffer = textview.get_buffer() start_iter, end_iter = _buffer.get_bounds() self.msg_textview.save_undo(_buffer.get_text(start_iter, end_iter, @@ -884,34 +884,29 @@ class ChatControlBase(ChatCommandProcessor, CommandTools, EventHelper): else: # Ctrl+Down self.scroll_messages('down', message_buffer, 'sent') return True - elif event.keyval == Gdk.KEY_Return or \ - event.keyval == Gdk.KEY_KP_Enter: # ENTER - message_textview = widget - message_buffer = message_textview.get_buffer() - message_textview.replace_emojis() - start_iter, end_iter = message_buffer.get_bounds() - message = message_buffer.get_text(start_iter, end_iter, False) - xhtml = self.msg_textview.get_xhtml() + elif (event.keyval == Gdk.KEY_Return or + event.keyval == Gdk.KEY_KP_Enter): # ENTER
if event_state & Gdk.ModifierType.SHIFT_MASK: - send_message = False - else: - is_ctrl_enter = bool(event_state & Gdk.ModifierType.CONTROL_MASK) - send_message = is_ctrl_enter == app.settings.get('send_on_ctrl_enter') + textview.insert_newline() + return True + + if event_state & Gdk.ModifierType.CONTROL_MASK: + if not app.settings.get('send_on_ctrl_enter'): + textview.insert_newline() + return True
- if send_message and not app.account_is_available(self.account): + if not app.account_is_available(self.account): # we are not connected app.interface.raise_dialog('not-connected-while-sending') - elif send_message: - self.send_message(message, xhtml=xhtml) - else: - message_buffer.insert_at_cursor('\n') - mark = message_buffer.get_insert() - iter_ = message_buffer.get_iter_at_mark(mark) - if message_buffer.get_end_iter().equal(iter_): - GLib.idle_add(util.scroll_to_end, self.msg_scrolledwindow) + return True
+ textview.replace_emojis() + message = textview.get_text() + xhtml = textview.get_xhtml() + self.send_message(message, xhtml=xhtml) return True + elif event.keyval == Gdk.KEY_z: # CTRL+z if event_state & Gdk.ModifierType.CONTROL_MASK: self.msg_textview.undo()
===================================== gajim/gtk/message_input.py ===================================== @@ -122,6 +122,14 @@ class MessageInputTextView(Gtk.TextView): def insert_text(self, text): self.get_buffer().insert_at_cursor(text)
+ def insert_newline(self): + buffer_ = self.get_buffer() + buffer_.insert_at_cursor('\n') + mark = buffer_.get_insert() + iter_ = buffer_.get_iter_at_mark(mark) + if buffer_.get_end_iter().equal(iter_): + GLib.idle_add(scroll_to_end, self.get_parent()) + def has_text(self): buf = self.get_buffer() start, end = buf.get_bounds()
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/d238d691427732062a4c7a7eed17b88dc...