mirror of
https://github.com/diamondburned/cchat-gtk.git
synced 2025-05-06 06:24:12 +00:00
Minor bug fixes and appearance tweaks
This commit is contained in:
parent
8cf1fcd8a1
commit
4c22615301
2
go.mod
2
go.mod
|
@ -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
3
go.sum
|
@ -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=
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue