if shift check if sth was written in textview before sending composing

This commit is contained in:
Nikos Kouremenos 2005-08-06 23:08:05 +00:00
parent 390495293c
commit a09c2bed2f

View file

@ -372,7 +372,7 @@ class TabbedChatWindow(chat.Chat):
def check_for_possible_paused_chatstate(self, contact): def check_for_possible_paused_chatstate(self, contact):
''' did we move mouse of that window or kbd activity in that window ''' did we move mouse of that window or kbd activity in that window
in the last 5 seconds? in the last 5 seconds?
if yes we go active if yes we go active for mouse, composing for kbd
if no we go paused if we were previously composing ''' if no we go paused if we were previously composing '''
current_state = self.chatstates[contact.jid] current_state = self.chatstates[contact.jid]
if current_state == False: # jid doesn't support chatstates if current_state == False: # jid doesn't support chatstates
@ -399,8 +399,8 @@ class TabbedChatWindow(chat.Chat):
def check_for_possible_inactive_chatstate(self, contact): def check_for_possible_inactive_chatstate(self, contact):
''' did we move mouse over that window or kbd activity in that window ''' did we move mouse over that window or kbd activity in that window
in the last 30 seconds? in the last 30 seconds?
if yes we go active if not already if yes we go active
if no we go inactive if not already ''' if no we go inactive '''
current_state = self.chatstates[contact.jid] current_state = self.chatstates[contact.jid]
if current_state == False: # jid doesn't support chatstates if current_state == False: # jid doesn't support chatstates
return False # stop looping return False # stop looping
@ -424,8 +424,8 @@ class TabbedChatWindow(chat.Chat):
and printed in the conversation""" and printed in the conversation"""
jid = self.get_active_jid() jid = self.get_active_jid()
conversation_textview = self.xmls[jid].get_widget('conversation_textview') conversation_textview = widget
message_buffer = widget.get_buffer() message_buffer = conversation_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)
@ -461,8 +461,8 @@ class TabbedChatWindow(chat.Chat):
elif (event.state & gtk.gdk.SHIFT_MASK): elif (event.state & gtk.gdk.SHIFT_MASK):
return False return False
if gajim.connections[self.account].connected < 2: #we are not connected if gajim.connections[self.account].connected < 2: #we are not connected
dialogs.ErrorDialog(_("A connection is not available"), dialogs.ErrorDialog(_('A connection is not available'),
_("Your message can't be sent until you are connected.")).get_response() _('Your message can not be sent until you are connected.')).get_response()
return True return True
# send the message # send the message
@ -476,9 +476,24 @@ class TabbedChatWindow(chat.Chat):
# if really composing (eg. no Ctrl, or alt modifier, send chatstate # if really composing (eg. no Ctrl, or alt modifier, send chatstate
if not (event.state & gtk.gdk.CONTROL_MASK) and not\ if not (event.state & gtk.gdk.CONTROL_MASK) and not\
(event.state & gtk.gdk.MOD1_MASK): (event.state & gtk.gdk.MOD1_MASK):
self.kbd_activity_in_last_5_secs = True # but what about Shift+ sth ?
self.kbd_activity_in_last_30_secs = True # Shift + 'a' = A so we're composing
self.send_chatstate('composing') # Shift + Escape is not composing, so we let the gtk+ decide
# in an workaround way (we could also get somehow the listed shortcuts
# but I don't know if it's possible)
chars_no = len(message)
gobject.timeout_add(1000, self.on_timeout_for_check_composing,
message_buffer, jid, chars_no)
def on_timeout_for_check_composing(self, message_buffer, jid, chars_no):
start_iter, end_iter = message_buffer.get_bounds()
message = message_buffer.get_text(start_iter, end_iter, False)
chars_no_after_one_sec = len(message)
if chars_no != chars_no_after_one_sec:
# so GTK+ decided key_press was for writing..
self.kbd_activity_in_last_5_secs = True
self.kbd_activity_in_last_30_secs = True
self.send_chatstate('composing')
def send_chatstate(self, state, jid = None): def send_chatstate(self, state, jid = None):
''' sends our chatstate as STANDLONE chat state message (eg. no body) ''' sends our chatstate as STANDLONE chat state message (eg. no body)