mirror of
https://github.com/tulir/gomuks.git
synced 2025-04-20 10:33:41 -05:00
Render reactions properly in modern view
This commit is contained in:
parent
7a2f907528
commit
d4e820579c
2 changed files with 19 additions and 11 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue