diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2012-03-07 02:24:07 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2012-03-07 02:24:07 (GMT) |
commit | e74b9aa3ce9b269f3103652df09becd82b52a272 (patch) | |
tree | da47f73cd9f5dac389531276313f6541fb3828cc | |
parent | 799bb41fa85ad38eec300cc3423d0a5eb37d2c66 (diff) |
Nicer smile positioning
-rw-r--r-- | chat/box.py | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/chat/box.py b/chat/box.py index b850c92..91c33b9 100644 --- a/chat/box.py +++ b/chat/box.py @@ -59,6 +59,8 @@ class TextBox(gtk.TextView): self.iter_text = self.get_buffer().get_iter_at_offset(0) self.fg_tag = self.get_buffer().create_tag("foreground_color", foreground=color.get_html()) + self._subscript_tag = self.get_buffer().create_tag('subscript', + rise=-7 * pango.SCALE) # in pixels self._empty = True self.palette = None self._mouse_detector = MouseSpeedDetector(self, 200, 5) @@ -201,13 +203,15 @@ class TextBox(gtk.TextView): self.handler_unblock(self.motion_notify_id) def add_text(self, text): + buf = self.get_buffer() + if not self._empty: - self.get_buffer().insert(self.iter_text, '\n') + buf.insert(self.iter_text, '\n') words = text.split() for word in words: if _URL_REGEXP.search(word) is not None: - tag = self.get_buffer().create_tag(None, + tag = buf.create_tag(None, foreground="blue", underline=pango.UNDERLINE_SINGLE) tag.set_data("url", word) palette = _URLMenu(word) @@ -216,16 +220,18 @@ class TextBox(gtk.TextView): palette.connect('leave-notify-event', self.__palette_mouse_leave_cb) tag.set_data('palette', palette) - self.get_buffer().insert_with_tags(self.iter_text, word, tag, + buf.insert_with_tags(self.iter_text, word, tag, self.fg_tag) else: for i in smilies.parse(word): if isinstance(i, gtk.gdk.Pixbuf): - self.get_buffer().insert_pixbuf(self.iter_text, i) + start = self.iter_text.get_offset() + buf.insert_pixbuf(self.iter_text, i) + buf.apply_tag(self._subscript_tag, + buf.get_iter_at_offset(start), self.iter_text) else: - self.get_buffer().insert_with_tags(self.iter_text, i, - self.fg_tag) - self.get_buffer().insert_with_tags(self.iter_text, ' ', + buf.insert_with_tags(self.iter_text, i, self.fg_tag) + buf.insert_with_tags(self.iter_text, ' ', self.fg_tag) self._empty = False |