1
0
Fork 0
forked from Mirrors/gomuks

Render reactions properly in modern view

This commit is contained in:
FIGBERT 2023-03-20 14:41:52 -07:00
parent 7a2f907528
commit d4e820579c
No known key found for this signature in database
GPG key ID: 67F1598D607A844B
2 changed files with 19 additions and 11 deletions

View file

@ -664,8 +664,10 @@ func (view *MessageView) Draw(screen mauview.Screen) {
index := indexOffset + line
msg := view.msgBuffer[index]
header := view.showModernHeader(msg)
if msg == prevMsg {
debug.Print("Unexpected re-encounter of", msg, msg.Height(view.showModernHeader(msg)), "at", line, index)
debug.Print("Unexpected re-encounter of", msg, msg.Height(header), "at", line, index)
line++
continue
}
@ -691,7 +693,7 @@ func (view *MessageView) Draw(screen mauview.Screen) {
line--
}
offset := 0
if view.showModernHeader(msg) {
if header {
offset = 1
boldStyle := tcell.StyleDefault.Bold(true)
@ -705,8 +707,8 @@ func (view *MessageView) Draw(screen mauview.Screen) {
boldStyle.Foreground(msg.TimestampColor()),
)
}
msg.Draw(mauview.NewProxyScreen(screen, messageX, line+offset, view.width()-messageX, msg.Height(view.showModernHeader(msg))))
line += msg.Height(view.showModernHeader(msg))
msg.Draw(mauview.NewProxyScreen(screen, messageX, line+offset, view.width()-messageX, msg.Height(header)), header)
line += msg.Height(header)
prevMsg = msg
}

View file

@ -311,12 +311,18 @@ func (msg *UIMessage) SetIsHighlight(isHighlight bool) {
msg.IsHighlight = isHighlight
}
func (msg *UIMessage) DrawReactions(screen mauview.Screen) {
func (msg *UIMessage) DrawReactions(screen mauview.Screen, modernHeader bool) {
if len(msg.Reactions) == 0 {
return
}
diff := 1
if modernHeader {
diff = 2
}
width, height := screen.Size()
screen = mauview.NewProxyScreen(screen, 0, height-1, width, 1)
screen = mauview.NewProxyScreen(screen, 0, height-diff, width, 1)
x := 0
for _, reaction := range msg.Reactions {
@ -328,10 +334,10 @@ func (msg *UIMessage) DrawReactions(screen mauview.Screen) {
}
}
func (msg *UIMessage) Draw(screen mauview.Screen) {
proxyScreen := msg.DrawReply(screen)
func (msg *UIMessage) Draw(screen mauview.Screen, modernHeader bool) {
proxyScreen := msg.DrawReply(screen, modernHeader)
msg.Renderer.Draw(proxyScreen, msg)
msg.DrawReactions(proxyScreen)
msg.DrawReactions(proxyScreen, modernHeader)
if msg.IsSelected {
w, h := screen.Size()
for x := 0; x < w; x++ {
@ -366,7 +372,7 @@ func (msg *UIMessage) CalculateBuffer(preferences config.UserPreferences, width
msg.CalculateReplyBuffer(preferences, width)
}
func (msg *UIMessage) DrawReply(screen mauview.Screen) mauview.Screen {
func (msg *UIMessage) DrawReply(screen mauview.Screen, modernHeader bool) mauview.Screen {
if msg.ReplyTo == nil {
return screen
}
@ -378,7 +384,7 @@ func (msg *UIMessage) DrawReply(screen mauview.Screen) mauview.Screen {
screen.SetCell(0, y, tcell.StyleDefault, '▊')
}
replyScreen := mauview.NewProxyScreen(screen, 1, 1, width-1, replyHeight)
msg.ReplyTo.Draw(replyScreen)
msg.ReplyTo.Draw(replyScreen, modernHeader)
return mauview.NewProxyScreen(screen, 0, replyHeight+1, width, height-replyHeight-1)
}