summaryrefslogtreecommitdiff
path: root/label.go
diff options
context:
space:
mode:
Diffstat (limited to 'label.go')
-rw-r--r--label.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/label.go b/label.go
index c5e2ea8..dfb6cb1 100644
--- a/label.go
+++ b/label.go
@@ -8,15 +8,18 @@ import (
// A Label is a static line of text used to mark other controls.
// Label text is drawn on a single line; text that does not fit is truncated.
-// TODO vertical alignment
+// A Label can appear in one of two places: bound to a control or standalone.
+// This determines the vertical alignment of the label.
type Label struct {
lock sync.Mutex
created bool
sysData *sysData
initText string
+ standalone bool
}
// NewLabel creates a new Label with the specified text.
+// The label is set to be bound to a control, so its vertical position depends on its vertical cell size in an implementation-defined manner.
func NewLabel(text string) *Label {
return &Label{
sysData: mksysdata(c_label),
@@ -24,6 +27,16 @@ func NewLabel(text string) *Label {
}
}
+// NewStandaloneLabel creates a new Label with the specified text.
+// The label is set to be standalone, so its vertical position will always be at the top of the vertical space assigned to it.
+func NewStandaloneLabel(text string) *Label {
+ return &Label{
+ sysData: mksysdata(c_label),
+ initText: text,
+ standalone: true,
+ }
+}
+
// SetText sets the Label's text.
func (l *Label) SetText(text string) {
l.lock.Lock()
@@ -51,6 +64,7 @@ func (l *Label) make(window *sysData) error {
l.lock.Lock()
defer l.lock.Unlock()
+ l.sysData.alternate = l.standalone
err := l.sysData.make(window)
if err != nil {
return err