Minor bug fixes and appearance tweaks

This commit is contained in:
diamondburned 2020-07-18 18:57:57 -07:00
parent 8cf1fcd8a1
commit 4c22615301
6 changed files with 66 additions and 11 deletions

2
go.mod
View File

@ -4,6 +4,8 @@ go 1.14
replace github.com/gotk3/gotk3 => github.com/diamondburned/gotk3 v0.0.0-20200630065217-97aeb06d705d
replace github.com/diamondburned/cchat-discord => ../cchat-discord/
require (
github.com/Xuanwo/go-locale v0.2.0
github.com/alecthomas/chroma v0.7.3

3
go.sum
View File

@ -50,8 +50,6 @@ github.com/diamondburned/cchat v0.0.43 h1:HetAujSaUSdnQgAUZgprNLARjf/MSWXpCfWdvX
github.com/diamondburned/cchat v0.0.43/go.mod h1:+zXktogE45A0om4fT6B/z6Ii7FXNafjxsNspI0rlhbU=
github.com/diamondburned/cchat v0.0.45 h1:HMVSKx1h6lh2OenWaBTvMSK531hWaXAW7I0tKZepYug=
github.com/diamondburned/cchat v0.0.45/go.mod h1:+zXktogE45A0om4fT6B/z6Ii7FXNafjxsNspI0rlhbU=
github.com/diamondburned/cchat-discord v0.0.0-20200718071554-360b34de2a71 h1:4alCL+MeOJuz//uhYKuzyn8RS6+yEQFwL9SGCluNRL4=
github.com/diamondburned/cchat-discord v0.0.0-20200718071554-360b34de2a71/go.mod h1:tFB/vWkCPp2kQ7v/VkpCvM1aoB6+fvwuEU/acA/g5CY=
github.com/diamondburned/cchat-mock v0.0.0-20200709231652-ad222ce5a74b h1:sq0MXjJc3yAOZvuolRxOpKQNvpMLyTmsECxQqdYgF5E=
github.com/diamondburned/cchat-mock v0.0.0-20200709231652-ad222ce5a74b/go.mod h1:+bAf0m2o5qH54DmYJ/lR1HeITV53ol0JaoKyFFx3m3E=
github.com/diamondburned/gotk3 v0.0.0-20200630065217-97aeb06d705d h1:Ha/I6PMKi+B4hpWclwlXj0tUMehR7Q0TNxPczzBwzPI=
@ -132,6 +130,7 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/lucasb-eyer/go-colorful v1.0.3 h1:QIbQXiugsb+q10B+MI+7DI1oQLdmnep86tWFlaaUAac=
github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.7 h1:bQGKb3vps/j0E9GfJQ03JyhRuxsvdAanXlT9BTw3mdw=
github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=

View File

@ -9,6 +9,10 @@ import (
"github.com/diamondburned/cchat/text"
)
const UnreadColorDefs = `
@define-color mentioned rgb(240, 71, 71);
`
type ToggleButtonImage struct {
rich.ToggleButtonImage
@ -25,7 +29,7 @@ type ToggleButtonImage struct {
var _ cchat.IconContainer = (*ToggleButtonImage)(nil)
var serverButtonCSS = primitives.PrepareCSS(`
var serverButtonCSS = primitives.PrepareClassCSS("server-button", `
.selected-server {
border-left: 2px solid mix(@theme_base_color, @theme_fg_color, 0.1);
background-color: mix(@theme_base_color, @theme_fg_color, 0.1);
@ -43,14 +47,13 @@ var serverButtonCSS = primitives.PrepareCSS(`
background-color: alpha(@theme_fg_color, 0.05);
}
@define-color mentioned rgb(240, 71, 71);
.mentioned {
color: @mentioned;
border-left: 2px solid alpha(@mentioned, 0.75);
background-color: alpha(@mentioned, 0.05);
}
`)
`+UnreadColorDefs)
func NewToggleButtonImage(content text.Rich) *ToggleButtonImage {
b := rich.NewToggleButtonImage(content)
@ -63,7 +66,7 @@ func NewToggleButtonImage(content text.Rich) *ToggleButtonImage {
menu: menu.NewLazyMenu(b.ToggleButton),
}
tb.Connect("clicked", func() { tb.clicked(tb.GetActive()) })
primitives.AttachCSS(tb, serverButtonCSS)
serverButtonCSS(tb)
return tb
}

View File

@ -171,9 +171,11 @@ func (c *Children) LoadAll() {
AssertUnhollow(c)
for _, row := range c.Rows {
row.Init() // this is the alloc-heavy method
row.Show()
c.Box.Add(row)
if row.IsHollow() {
row.Init() // this is the alloc-heavy method
row.Show()
c.Box.Add(row)
}
}
}

View File

@ -13,6 +13,7 @@ import (
"github.com/diamondburned/cchat-gtk/internal/ui/rich/parser/markup"
"github.com/diamondburned/cchat-gtk/internal/ui/service/session/commander"
"github.com/diamondburned/cchat-gtk/internal/ui/service/session/server"
"github.com/diamondburned/cchat-gtk/internal/ui/service/session/server/button"
"github.com/diamondburned/cchat-gtk/internal/ui/service/session/server/traverse"
"github.com/diamondburned/cchat/text"
"github.com/gotk3/gotk3/gdk"
@ -65,16 +66,45 @@ type Row struct {
// put commander in either a hover menu or a right click menu. maybe in the
// headerbar as well.
cmder *commander.Buffer
// Unread class enum for theming.
unreadClass primitives.ClassEnum
}
var rowCSS = primitives.PrepareClassCSS("session-row", `
.session-row:last-child {
border-radius: 0 0 14px 14px;
}
.session-row:selected {
background-color: alpha(@theme_selected_bg_color, 0.5);
}
`)
.session-row.unread {
background-color: alpha(@theme_fg_color, 0.25);
}
.session-row.unread:selected {
background-color: alpha(mix(
@theme_fg_color,
@theme_selected_bg_color,
0.65,
), 0.85);
}
.session-row.mentioned {
background-color: alpha(@mentioned, 0.25);
}
.session-row.mentioned:selected {
background-color: alpha(mix(
@theme_fg_color,
@mentioned,
0.65,
), 0.85);
}
`+button.UnreadColorDefs)
var rowIconCSS = primitives.PrepareClassCSS("session-icon", `
.session-icon {
@ -132,6 +162,19 @@ func newRow(parent traverse.Breadcrumber, name text.Rich, ctrl Servicer) *Row {
// Bind drag-and-drop events.
drag.BindDraggable(row, "face-smile", ctrl.MoveSession)
// Bind the unread state.
row.Servers.Children.SetUnreadHandler(func(unread, mentioned bool) {
switch {
// Prioritize mentions over unreads.
case mentioned:
row.unreadClass.SetClass(row, "mentioned")
case unread:
row.unreadClass.SetClass(row, "unread")
default:
row.unreadClass.SetClass(row, "read")
}
})
return row
}

View File

@ -109,6 +109,12 @@ func (app *App) OnSessionDisconnect(s *service.Service, r *session.Row) {
}
func (app *App) SessionSelected(svc *service.Service, ses *session.Row) {
// Is there an old row that we should deactivate?
if app.lastSelector != nil {
app.lastSelector(false)
app.lastSelector = nil
}
// TODO: restore last message box
app.window.MessageView.Reset()
app.header.SetBreadcrumber(ses)