Merge branch 'fix-gtk3-shortcuts' into 'master'

Fix keyboard shortcuts in GTK3

See merge request !41
This commit is contained in:
Philipp Hörist 2017-01-26 19:17:32 +01:00
commit b1940459e2
2 changed files with 14 additions and 26 deletions

View File

@ -668,49 +668,37 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
self.scroll_messages('up', message_buffer, 'received') self.scroll_messages('up', message_buffer, 'received')
else: # Ctrl+UP else: # Ctrl+UP
self.scroll_messages('up', message_buffer, 'sent') self.scroll_messages('up', message_buffer, 'sent')
return True return True
elif event.keyval == Gdk.KEY_Down: elif event.keyval == Gdk.KEY_Down:
if event_state & Gdk.ModifierType.CONTROL_MASK: if event_state & Gdk.ModifierType.CONTROL_MASK:
if event_state & Gdk.ModifierType.SHIFT_MASK: # Ctrl+Shift+Down if event_state & Gdk.ModifierType.SHIFT_MASK: # Ctrl+Shift+Down
self.scroll_messages('down', message_buffer, 'received') self.scroll_messages('down', message_buffer, 'received')
else: # Ctrl+Down else: # Ctrl+Down
self.scroll_messages('down', message_buffer, 'sent') self.scroll_messages('down', message_buffer, 'sent')
return True return True
elif event.keyval == Gdk.KEY_Return or \ elif event.keyval == Gdk.KEY_Return or \
event.keyval == Gdk.KEY_KP_Enter: # ENTER event.keyval == Gdk.KEY_KP_Enter: # ENTER
if event_state & Gdk.ModifierType.SHIFT_MASK:
return True
message_textview = widget message_textview = widget
message_buffer = message_textview.get_buffer() message_buffer = message_textview.get_buffer()
start_iter, end_iter = message_buffer.get_bounds() start_iter, end_iter = message_buffer.get_bounds()
message = message_buffer.get_text(start_iter, end_iter, False) message = message_buffer.get_text(start_iter, end_iter, False)
xhtml = self.msg_textview.get_xhtml() xhtml = self.msg_textview.get_xhtml()
if gajim.config.get('send_on_ctrl_enter'): if event_state & Gdk.ModifierType.SHIFT_MASK:
if event_state & Gdk.ModifierType.CONTROL_MASK: # CTRL + ENTER send_message = False
send_message = True else:
else: is_ctrl_enter = bool(event_state & Gdk.ModifierType.CONTROL_MASK)
end_iter = message_buffer.get_end_iter() send_message = is_ctrl_enter == gajim.config.get('send_on_ctrl_enter')
message_buffer.insert_at_cursor('\n')
send_message = False
else: # send on Enter, do newline on Ctrl Enter if send_message and gajim.connections[self.account].connected < 2:
if event_state & Gdk.ModifierType.CONTROL_MASK: # Ctrl + ENTER
end_iter = message_buffer.get_end_iter()
message_buffer.insert_at_cursor('\n')
send_message = False
else: # ENTER
send_message = True
if gajim.connections[self.account].connected < 2 and send_message:
# we are not connected # we are not connected
dialogs.ErrorDialog(_('A connection is not available'), dialogs.ErrorDialog(_('A connection is not available'),
_('Your message can not be sent until you are connected.')) _('Your message can not be sent until you are connected.'))
send_message = False elif send_message:
self.send_message(message, xhtml=xhtml)
else:
message_buffer.insert_at_cursor('\n')
if send_message:
self.send_message(message, xhtml=xhtml) # send the message
return True return True
elif event.keyval == Gdk.KEY_z: # CTRL+z elif event.keyval == Gdk.KEY_z: # CTRL+z
if event_state & Gdk.ModifierType.CONTROL_MASK: if event_state & Gdk.ModifierType.CONTROL_MASK:

View File

@ -401,7 +401,7 @@ class MessageWindow(object):
elif keyval in (Gdk.KEY_Page_Up, Gdk.KEY_Page_Down): elif keyval in (Gdk.KEY_Page_Up, Gdk.KEY_Page_Down):
# CTRL + PageUp | PageDown # CTRL + PageUp | PageDown
# Create event and send it to notebook # Create event and send it to notebook
event = Gdk.Event(Gdk.EventType.KEY_PRESS) event = Gdk.Event.new(Gdk.EventType.KEY_PRESS)
event.window = self.window.get_window() event.window = self.window.get_window()
event.time = int(time.time()) event.time = int(time.time())
event.state = Gdk.ModifierType.CONTROL_MASK event.state = Gdk.ModifierType.CONTROL_MASK