Daniel Brötzmann pushed to branch newcontrol at gajim / gajim
Commits:
fd9718ba by wurstsalat at 2022-08-03T23:18:03+02:00
imprv: MessageInputTextView: Improve draft storage
- - - - -
4 changed files:
- gajim/gtk/chat_stack.py
- gajim/gtk/main.py
- gajim/gtk/message_actions_box.py
- gajim/gtk/message_input.py
Changes:
=====================================
gajim/gtk/chat_stack.py
=====================================
@@ -333,7 +333,7 @@ def _update_base_actions(self, contact: ChatContactT) ->
None:
client = app.get_client(contact.account)
online = app.account_is_connected(contact.account)
- has_text = self._message_action_box.msg_textview.has_text()
+ has_text = self._message_action_box.msg_textview.has_text
app.window.get_action('send-message').set_enabled(
online and has_text)
=====================================
gajim/gtk/main.py
=====================================
@@ -498,7 +498,7 @@ def _on_window_motion_notify(self,
chat_stack = self._chat_page.get_chat_stack()
msg_action_box = chat_stack.get_message_action_box()
client.get_module('Chatstate').set_mouse_activity(
- control.contact, msg_action_box.msg_textview.has_text())
+ control.contact, msg_action_box.msg_textview.has_text)
def _on_window_delete(self,
_widget: Gtk.ApplicationWindow,
=====================================
gajim/gtk/message_actions_box.py
=====================================
@@ -282,7 +282,7 @@ def _update_message_input_state(self) -> None:
def _set_chatstate(self, state: bool) -> None:
assert self._client is not None
if state:
- if self.msg_textview.has_text():
+ if self.msg_textview.has_text:
self._client.get_module('Chatstate').set_chatstate(
self._contact, Chatstate.PAUSED)
else:
@@ -513,7 +513,7 @@ def _update_send_file_button_tooltip(self):
self._ui.sendfile_button.set_tooltip_text(tooltip_text)
def _on_buffer_changed(self, textbuffer: Gtk.TextBuffer) -> None:
- has_text = self.msg_textview.has_text()
+ has_text = self.msg_textview.has_text
send_message_action = app.window.lookup_action('send-message')
assert send_message_action is not None
send_message_action.set_enabled(has_text)
=====================================
gajim/gtk/message_input.py
=====================================
@@ -77,7 +77,7 @@ def __init__(self) -> None:
self.undo_pressed: bool = False
self._contact: Optional[ChatContactT] = None
- self._drafts: dict[JID, str] = {}
+ self._drafts: dict[tuple[str, JID], str] = {}
self._chat_action_processor = ChatActionProcessor(self)
@@ -95,13 +95,15 @@ def __init__(self) -> None:
def switch_contact(self, contact: ChatContactT) -> None:
if self._contact is not None:
- if self.has_text():
- self._drafts[self._contact.jid] = self.get_text()
+ account = self._contact.account
+ jid = self._contact.jid
+ if self.has_text:
+ self._drafts[(account, jid)] = self.get_text()
else:
- self._drafts.pop(self._contact.jid, None)
+ self._drafts.pop((account, jid), None)
self.clear()
- draft = self._drafts.get(contact.jid)
+ draft = self._drafts.get((contact.account, contact.jid))
if draft is not None:
self.insert_text(draft)
@@ -138,7 +140,7 @@ def _on_focus_out(self,
scrolled = self.get_parent()
assert scrolled
scrolled.get_style_context().remove_class('message-input-focus')
- if not self.has_text():
+ if not self.has_text:
self.toggle_speller(False)
return False
@@ -188,6 +190,7 @@ def insert_newline(self) -> None:
if buf.get_end_iter().equal(iter_):
GLib.idle_add(scroll_to_end, self.get_parent())
+ @property
def has_text(self) -> bool:
buf = self.get_buffer()
start, end = buf.get_bounds()
@@ -200,6 +203,9 @@ def get_text(self) -> str:
text = self.get_buffer().get_text(start, end, True)
return text
+ def get_draft(self, account: str, jid: JID) -> Optional[str]:
+ return self._drafts.get((account, jid))
+
def toggle_speller(self, activate: bool) -> None:
if app.is_installed('GSPELL') and app.settings.get('use_speller'):
spell_view = Gspell.TextView.get_from_gtk_text_view(self)
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/fd9718baa7cf8b4bb8985f10a6c8af3fc133153e
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/fd9718baa7cf8b4bb8985f10a6c8af3fc133153e
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits