forked from Mirrors/gomuks
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
|
index := indexOffset + line
|
||||||
|
|
||||||
msg := view.msgBuffer[index]
|
msg := view.msgBuffer[index]
|
||||||
|
header := view.showModernHeader(msg)
|
||||||
|
|
||||||
if msg == prevMsg {
|
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++
|
line++
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -691,7 +693,7 @@ func (view *MessageView) Draw(screen mauview.Screen) {
|
||||||
line--
|
line--
|
||||||
}
|
}
|
||||||
offset := 0
|
offset := 0
|
||||||
if view.showModernHeader(msg) {
|
if header {
|
||||||
offset = 1
|
offset = 1
|
||||||
|
|
||||||
boldStyle := tcell.StyleDefault.Bold(true)
|
boldStyle := tcell.StyleDefault.Bold(true)
|
||||||
|
@ -705,8 +707,8 @@ func (view *MessageView) Draw(screen mauview.Screen) {
|
||||||
boldStyle.Foreground(msg.TimestampColor()),
|
boldStyle.Foreground(msg.TimestampColor()),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
msg.Draw(mauview.NewProxyScreen(screen, messageX, line+offset, view.width()-messageX, msg.Height(view.showModernHeader(msg))))
|
msg.Draw(mauview.NewProxyScreen(screen, messageX, line+offset, view.width()-messageX, msg.Height(header)), header)
|
||||||
line += msg.Height(view.showModernHeader(msg))
|
line += msg.Height(header)
|
||||||
|
|
||||||
prevMsg = msg
|
prevMsg = msg
|
||||||
}
|
}
|
||||||
|
|
|
@ -311,12 +311,18 @@ func (msg *UIMessage) SetIsHighlight(isHighlight bool) {
|
||||||
msg.IsHighlight = isHighlight
|
msg.IsHighlight = isHighlight
|
||||||
}
|
}
|
||||||
|
|
||||||
func (msg *UIMessage) DrawReactions(screen mauview.Screen) {
|
func (msg *UIMessage) DrawReactions(screen mauview.Screen, modernHeader bool) {
|
||||||
if len(msg.Reactions) == 0 {
|
if len(msg.Reactions) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
diff := 1
|
||||||
|
if modernHeader {
|
||||||
|
diff = 2
|
||||||
|
}
|
||||||
|
|
||||||
width, height := screen.Size()
|
width, height := screen.Size()
|
||||||
screen = mauview.NewProxyScreen(screen, 0, height-1, width, 1)
|
screen = mauview.NewProxyScreen(screen, 0, height-diff, width, 1)
|
||||||
|
|
||||||
x := 0
|
x := 0
|
||||||
for _, reaction := range msg.Reactions {
|
for _, reaction := range msg.Reactions {
|
||||||
|
@ -328,10 +334,10 @@ func (msg *UIMessage) DrawReactions(screen mauview.Screen) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (msg *UIMessage) Draw(screen mauview.Screen) {
|
func (msg *UIMessage) Draw(screen mauview.Screen, modernHeader bool) {
|
||||||
proxyScreen := msg.DrawReply(screen)
|
proxyScreen := msg.DrawReply(screen, modernHeader)
|
||||||
msg.Renderer.Draw(proxyScreen, msg)
|
msg.Renderer.Draw(proxyScreen, msg)
|
||||||
msg.DrawReactions(proxyScreen)
|
msg.DrawReactions(proxyScreen, modernHeader)
|
||||||
if msg.IsSelected {
|
if msg.IsSelected {
|
||||||
w, h := screen.Size()
|
w, h := screen.Size()
|
||||||
for x := 0; x < w; x++ {
|
for x := 0; x < w; x++ {
|
||||||
|
@ -366,7 +372,7 @@ func (msg *UIMessage) CalculateBuffer(preferences config.UserPreferences, width
|
||||||
msg.CalculateReplyBuffer(preferences, 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 {
|
if msg.ReplyTo == nil {
|
||||||
return screen
|
return screen
|
||||||
}
|
}
|
||||||
|
@ -378,7 +384,7 @@ func (msg *UIMessage) DrawReply(screen mauview.Screen) mauview.Screen {
|
||||||
screen.SetCell(0, y, tcell.StyleDefault, '▊')
|
screen.SetCell(0, y, tcell.StyleDefault, '▊')
|
||||||
}
|
}
|
||||||
replyScreen := mauview.NewProxyScreen(screen, 1, 1, width-1, replyHeight)
|
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)
|
return mauview.NewProxyScreen(screen, 0, replyHeight+1, width, height-replyHeight-1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue