Cache TString version of UITextMessage.MsgText
This commit is contained in:
parent
92a2428865
commit
7e5e802e90
@ -42,6 +42,7 @@ type UITextMessage struct {
|
|||||||
MsgState ifc.MessageState
|
MsgState ifc.MessageState
|
||||||
MsgIsHighlight bool
|
MsgIsHighlight bool
|
||||||
MsgIsService bool
|
MsgIsService bool
|
||||||
|
text tstring.TString
|
||||||
buffer []tstring.TString
|
buffer []tstring.TString
|
||||||
prevBufferWidth int
|
prevBufferWidth int
|
||||||
}
|
}
|
||||||
@ -220,6 +221,7 @@ func (msg *UITextMessage) Type() string {
|
|||||||
|
|
||||||
func (msg *UITextMessage) SetType(msgtype string) {
|
func (msg *UITextMessage) SetType(msgtype string) {
|
||||||
msg.MsgType = msgtype
|
msg.MsgType = msgtype
|
||||||
|
msg.text = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (msg *UITextMessage) Text() string {
|
func (msg *UITextMessage) Text() string {
|
||||||
@ -228,6 +230,7 @@ func (msg *UITextMessage) Text() string {
|
|||||||
|
|
||||||
func (msg *UITextMessage) SetText(text string) {
|
func (msg *UITextMessage) SetText(text string) {
|
||||||
msg.MsgText = text
|
msg.MsgText = text
|
||||||
|
msg.text = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (msg *UITextMessage) State() ifc.MessageState {
|
func (msg *UITextMessage) State() ifc.MessageState {
|
||||||
@ -236,6 +239,7 @@ func (msg *UITextMessage) State() ifc.MessageState {
|
|||||||
|
|
||||||
func (msg *UITextMessage) SetState(state ifc.MessageState) {
|
func (msg *UITextMessage) SetState(state ifc.MessageState) {
|
||||||
msg.MsgState = state
|
msg.MsgState = state
|
||||||
|
msg.text = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (msg *UITextMessage) IsHighlight() bool {
|
func (msg *UITextMessage) IsHighlight() bool {
|
||||||
@ -244,6 +248,7 @@ func (msg *UITextMessage) IsHighlight() bool {
|
|||||||
|
|
||||||
func (msg *UITextMessage) SetIsHighlight(isHighlight bool) {
|
func (msg *UITextMessage) SetIsHighlight(isHighlight bool) {
|
||||||
msg.MsgIsHighlight = isHighlight
|
msg.MsgIsHighlight = isHighlight
|
||||||
|
msg.text = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (msg *UITextMessage) IsService() bool {
|
func (msg *UITextMessage) IsService() bool {
|
||||||
@ -252,10 +257,14 @@ func (msg *UITextMessage) IsService() bool {
|
|||||||
|
|
||||||
func (msg *UITextMessage) SetIsService(isService bool) {
|
func (msg *UITextMessage) SetIsService(isService bool) {
|
||||||
msg.MsgIsService = isService
|
msg.MsgIsService = isService
|
||||||
|
msg.text = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (msg *UITextMessage) GetTStringText() tstring.TString {
|
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.
|
// Regular expressions used to split lines when calculating the buffer.
|
||||||
@ -278,7 +287,7 @@ func (msg *UITextMessage) CalculateBuffer(width int) {
|
|||||||
text := msg.GetTStringText()
|
text := msg.GetTStringText()
|
||||||
if msg.MsgType == "m.emote" {
|
if msg.MsgType == "m.emote" {
|
||||||
text = tstring.NewColorTString(fmt.Sprintf("* %s %s", msg.MsgSender, text.String()), msg.TextColor())
|
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')
|
forcedLinebreaks := text.Split('\n')
|
||||||
|
Loading…
Reference in New Issue
Block a user