diff --git a/cmd/gtkbuildergen/init.tmpl b/cmd/gtkbuildergen/init.tmpl
index 1e33c45..5fe6d2c 100644
--- a/cmd/gtkbuildergen/init.tmpl
+++ b/cmd/gtkbuildergen/init.tmpl
@@ -2,7 +2,7 @@
{{- $used := newValueSet -}}
{{range .Properties -}}
- {{$id}}.SetObjectProperty({{.Name | printf "%q"}}, {{$used.Add .Value}})
+ {{$id}}.SetObjectProperty({{.Name | printf "%q"}}, {{if .Track}}{{$used.Add .Value}}{{else}}{{.Value}}{{end}})
{{end -}}
{{range $i, $c := .Children -}}
{{- $cid := or .Object.ID (printf "%v%v" $id $i) -}}
diff --git a/cmd/gtkbuildergen/uidef.go b/cmd/gtkbuildergen/uidef.go
index 0562ce2..581924a 100644
--- a/cmd/gtkbuildergen/uidef.go
+++ b/cmd/gtkbuildergen/uidef.go
@@ -116,9 +116,9 @@ var (
func (p Property) Value() string {
switch p.Name {
- case "width-request", "height-request", "default-width", "default-height", "content", "stack", "spacing", "margin-top", "margin-bottom", "header-suffix":
+ case "width-request", "height-request", "default-width", "default-height", "content", "stack", "spacing", "margin-top", "margin-bottom", "header-suffix", "activatable-widget":
return p.RawValue
- case "show-start-title-buttons", "show-end-title-buttons", "primary", "vexpand", "hexpand", "visible":
+ case "show-start-title-buttons", "show-end-title-buttons", "primary", "vexpand", "hexpand", "visible", "has-frame":
b, err := strconv.ParseBool(p.RawValue)
if err != nil {
return p.RawValue
@@ -133,6 +133,10 @@ func (p Property) Value() string {
}
}
+func (p Property) Track() bool {
+ return p.Name != "activatable-widget"
+}
+
type Child struct {
XMLName xml.Name `xml:"child"`
diff --git a/cmd/trayscale/app.go b/cmd/trayscale/app.go
index 66bac36..0dfe243 100644
--- a/cmd/trayscale/app.go
+++ b/cmd/trayscale/app.go
@@ -119,6 +119,7 @@ func (a *App) updatePeerPage(page *peerPage, peer *ipnstate.PeerStatus, prefs *i
copyButton := gtk.NewButtonFromIconName("edit-copy-symbolic")
copyButton.SetMarginTop(12) // Why is this necessary?
copyButton.SetMarginBottom(12)
+ copyButton.SetHasFrame(false)
copyButton.SetTooltipText("Copy to Clipboard")
copyButton.ConnectClicked(func() {
copyButton.Clipboard().Set(glib.NewValue(ipstr))
@@ -132,6 +133,7 @@ func (a *App) updatePeerPage(page *peerPage, peer *ipnstate.PeerStatus, prefs *i
iprow.SetTitle(ipstr)
iprow.SetObjectProperty("title-selectable", true)
iprow.AddSuffix(copyButton)
+ iprow.SetActivatableWidget(copyButton)
page.container.IPGroup.Add(iprow)
page.addrRows = append(page.addrRows, iprow)
diff --git a/cmd/trayscale/peerpage.ui b/cmd/trayscale/peerpage.ui
index 4ce593a..54b4d0d 100644
--- a/cmd/trayscale/peerpage.ui
+++ b/cmd/trayscale/peerpage.ui
@@ -20,6 +20,7 @@
Options