diff options
author | Tulir Asokan <tulir@maunium.net> | 2018-04-11 19:36:15 +0300 |
---|---|---|
committer | Tulir Asokan <tulir@maunium.net> | 2018-04-11 19:36:15 +0300 |
commit | 7e5e802e90e38e7b1de025e792e228ac7b329a53 (patch) | |
tree | 610065c6931a7a04a2a5ff371bf154e4e5494b0a /ui/messages | |
parent | 92a2428865dfde80af6f9ffba0f59567b63230b6 (diff) |
Cache TString version of UITextMessage.MsgText
Diffstat (limited to 'ui/messages')
-rw-r--r-- | ui/messages/textmessage.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/ui/messages/textmessage.go b/ui/messages/textmessage.go index 4587d49..f630ef0 100644 --- a/ui/messages/textmessage.go +++ b/ui/messages/textmessage.go @@ -42,6 +42,7 @@ type UITextMessage struct { MsgState ifc.MessageState MsgIsHighlight bool MsgIsService bool + text tstring.TString buffer []tstring.TString prevBufferWidth int } @@ -220,6 +221,7 @@ func (msg *UITextMessage) Type() string { func (msg *UITextMessage) SetType(msgtype string) { msg.MsgType = msgtype + msg.text = nil } func (msg *UITextMessage) Text() string { @@ -228,6 +230,7 @@ func (msg *UITextMessage) Text() string { func (msg *UITextMessage) SetText(text string) { msg.MsgText = text + msg.text = nil } func (msg *UITextMessage) State() ifc.MessageState { @@ -236,6 +239,7 @@ func (msg *UITextMessage) State() ifc.MessageState { func (msg *UITextMessage) SetState(state ifc.MessageState) { msg.MsgState = state + msg.text = nil } func (msg *UITextMessage) IsHighlight() bool { @@ -244,6 +248,7 @@ func (msg *UITextMessage) IsHighlight() bool { func (msg *UITextMessage) SetIsHighlight(isHighlight bool) { msg.MsgIsHighlight = isHighlight + msg.text = nil } func (msg *UITextMessage) IsService() bool { @@ -252,10 +257,14 @@ func (msg *UITextMessage) IsService() bool { func (msg *UITextMessage) SetIsService(isService bool) { msg.MsgIsService = isService + msg.text = nil } func (msg *UITextMessage) GetTStringText() tstring.TString { - return tstring.NewColorTString(msg.Text(), msg.TextColor()) + if msg.text == nil || len(msg.text) == 0 { + msg.text = tstring.NewColorTString(msg.Text(), msg.TextColor()) + } + return msg.text } // Regular expressions used to split lines when calculating the buffer. @@ -278,7 +287,7 @@ func (msg *UITextMessage) CalculateBuffer(width int) { text := msg.GetTStringText() if msg.MsgType == "m.emote" { text = tstring.NewColorTString(fmt.Sprintf("* %s %s", msg.MsgSender, text.String()), msg.TextColor()) - text.Colorize(2, len(msg.MsgSender), msg.SenderColor()) + text.Colorize(0, len(msg.MsgSender), msg.SenderColor()) } forcedLinebreaks := text.Split('\n') |