summaryrefslogtreecommitdiffstatshomepage
path: root/label.go
diff options
context:
space:
mode:
Diffstat (limited to 'label.go')
-rw-r--r--label.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/label.go b/label.go
index 802dcc99..67cce2dd 100644
--- a/label.go
+++ b/label.go
@@ -6,6 +6,16 @@
package walk
+import "github.com/lxn/win"
+
+type EllipsisMode int
+
+const (
+ EllipsisNone EllipsisMode = 0
+ EllipsisEnd = EllipsisMode(win.SS_ENDELLIPSIS)
+ EllipsisPath = EllipsisMode(win.SS_PATHELLIPSIS)
+)
+
type Label struct {
static
textChangedPublisher EventPublisher
@@ -40,6 +50,26 @@ func (l *Label) asStatic() *static {
return &l.static
}
+func (l *Label) EllipsisMode() EllipsisMode {
+ return EllipsisMode(win.GetWindowLong(l.hwndStatic, win.GWL_STYLE) & (win.SS_ENDELLIPSIS | win.SS_PATHELLIPSIS))
+}
+
+func (l *Label) SetEllipsisMode(mode EllipsisMode) error {
+ oldMode := l.EllipsisMode()
+
+ if mode == oldMode {
+ return nil
+ }
+
+ if err := setAndClearWindowLongBits(l.hwndStatic, win.GWL_STYLE, uint32(mode), uint32(oldMode)); err != nil {
+ return err
+ }
+
+ l.RequestLayout()
+
+ return nil
+}
+
func (l *Label) TextAlignment() Alignment1D {
return l.textAlignment1D()
}