summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--stack.go38
-rw-r--r--stdfont_windows.go77
-rw-r--r--stdwndclass_windows.go58
3 files changed, 86 insertions, 87 deletions
diff --git a/stack.go b/stack.go
index fc9d600..bbc78ec 100644
--- a/stack.go
+++ b/stack.go
@@ -11,7 +11,7 @@ type orientation bool
const (
horizontal orientation = false
- vertical orientation = true
+ vertical orientation = true
)
// A Stack stacks controls horizontally or vertically within the Stack's parent.
@@ -20,21 +20,21 @@ const (
// Any extra space at the end of a Stack is left blank.
// Some controls may be marked as "stretchy": when the Window they are in changes size, stretchy controls resize to take up the remaining space after non-stretchy controls are laid out. If multiple controls are marked stretchy, they are alloted equal distribution of the remaining space.
type Stack struct {
- lock sync.Mutex
- created bool
- orientation orientation
- controls []Control
- stretchy []bool
- width, height []int // caches to avoid reallocating these each time
+ lock sync.Mutex
+ created bool
+ orientation orientation
+ controls []Control
+ stretchy []bool
+ width, height []int // caches to avoid reallocating these each time
}
func newStack(o orientation, controls ...Control) *Stack {
return &Stack{
- orientation: o,
- controls: controls,
- stretchy: make([]bool, len(controls)),
- width: make([]int, len(controls)),
- height: make([]int, len(controls)),
+ orientation: o,
+ controls: controls,
+ stretchy: make([]bool, len(controls)),
+ width: make([]int, len(controls)),
+ height: make([]int, len(controls)),
}
}
@@ -80,7 +80,7 @@ func (s *Stack) make(window *sysData) error {
func (s *Stack) setRect(x int, y int, width int, height int, rr *[]resizerequest) {
var stretchywid, stretchyht int
- if len(s.controls) == 0 { // do nothing if there's nothing to do
+ if len(s.controls) == 0 { // do nothing if there's nothing to do
return
}
// 1) get height and width of non-stretchy controls; figure out how much space is alloted to stretchy controls
@@ -93,11 +93,11 @@ func (s *Stack) setRect(x int, y int, width int, height int, rr *[]resizerequest
continue
}
w, h := c.preferredSize()
- if s.orientation == horizontal { // all controls have same height
+ if s.orientation == horizontal { // all controls have same height
s.width[i] = w
s.height[i] = height
stretchywid -= w
- } else { // all controls have same width
+ } else { // all controls have same width
s.width[i] = width
s.height[i] = h
stretchyht -= h
@@ -105,9 +105,9 @@ func (s *Stack) setRect(x int, y int, width int, height int, rr *[]resizerequest
}
// 2) figure out size of stretchy controls
if nStretchy != 0 {
- if s.orientation == horizontal { // split rest of width
+ if s.orientation == horizontal { // split rest of width
stretchywid /= nStretchy
- } else { // split rest of height
+ } else { // split rest of height
stretchyht /= nStretchy
}
}
@@ -142,7 +142,7 @@ func (s *Stack) preferredSize() (width int, height int) {
var nStretchy int
var maxswid, maxsht int
- if len(s.controls) == 0 { // no controls, so return emptiness
+ if len(s.controls) == 0 { // no controls, so return emptiness
return 0, 0
}
for i, c := range s.controls {
@@ -152,7 +152,7 @@ func (s *Stack) preferredSize() (width int, height int) {
maxswid = max(maxswid, w)
maxsht = max(maxsht, h)
}
- if s.orientation == horizontal { // max vertical size
+ if s.orientation == horizontal { // max vertical size
if !s.stretchy[i] {
width += w
}
diff --git a/stdfont_windows.go b/stdfont_windows.go
index 5b9f3bf..41a285c 100644
--- a/stdfont_windows.go
+++ b/stdfont_windows.go
@@ -4,56 +4,55 @@ package ui
import (
"fmt"
-// "syscall"
"unsafe"
)
var (
- controlFont _HANDLE // really the font for messagebox text, but everyone and everything says to use it
- titleFont _HANDLE
- smallTitleFont _HANDLE
- menubarFont _HANDLE
- statusbarFont _HANDLE
+ controlFont _HANDLE // really the font for messagebox text, but everyone and everything says to use it
+ titleFont _HANDLE
+ smallTitleFont _HANDLE
+ menubarFont _HANDLE
+ statusbarFont _HANDLE
)
type _LOGFONT struct {
- lfHeight int32
- lfWidth int32
- lfEscapement int32
- lfOrientation int32
- lfWeight int32
- lfItalic byte
- lfUnderline byte
- lfStrikeOut byte
- lfCharSet byte
- lfOutPrecision byte
- lfClipPrecision byte
- lfQuality byte
- lfPitchAndFamily byte
- lfFaceName [_LF_FACESIZE]uint16
+ lfHeight int32
+ lfWidth int32
+ lfEscapement int32
+ lfOrientation int32
+ lfWeight int32
+ lfItalic byte
+ lfUnderline byte
+ lfStrikeOut byte
+ lfCharSet byte
+ lfOutPrecision byte
+ lfClipPrecision byte
+ lfQuality byte
+ lfPitchAndFamily byte
+ lfFaceName [_LF_FACESIZE]uint16
}
type _NONCLIENTMETRICS struct {
- cbSize uint32
- iBorderWidth int32 // originally int
- iScrollWidth int32 // originally int
- iScrollHeight int32 // originally int
- iCaptionWidth int32 // originally int
- iCaptionHeight int32 // originally int
- lfCaptionFont _LOGFONT
- iSmCaptionWidth int32 // originally int
- iSmCaptionHeight int32 // originally int
- lfSmCaptionFont _LOGFONT
- iMenuWidth int32 // originally int
- iMenuHeight int32 // originally int
- lfMenuFont _LOGFONT
- lfStatusFont _LOGFONT
- lfMessageFont _LOGFONT
+ cbSize uint32
+ iBorderWidth int32 // originally int
+ iScrollWidth int32 // originally int
+ iScrollHeight int32 // originally int
+ iCaptionWidth int32 // originally int
+ iCaptionHeight int32 // originally int
+ lfCaptionFont _LOGFONT
+ iSmCaptionWidth int32 // originally int
+ iSmCaptionHeight int32 // originally int
+ lfSmCaptionFont _LOGFONT
+ iMenuWidth int32 // originally int
+ iMenuHeight int32 // originally int
+ lfMenuFont _LOGFONT
+ lfStatusFont _LOGFONT
+ lfMessageFont _LOGFONT
}
var (
_systemParametersInfo = user32.NewProc("SystemParametersInfoW")
- _createFontIndirect = gdi32.NewProc("CreateFontIndirectW")
+ _createFontIndirect = gdi32.NewProc("CreateFontIndirectW")
)
func getStandardWindowFonts() (err error) {
@@ -65,13 +64,13 @@ func getStandardWindowFonts() (err error) {
uintptr(unsafe.Sizeof(ncm)),
uintptr(unsafe.Pointer(&ncm)),
0)
- if r1 == 0 { // failure
+ if r1 == 0 { // failure
return fmt.Errorf("error getting system parameters: %v", err)
}
getfont := func(which *_LOGFONT, what string) (_HANDLE, error) {
r1, _, err = _createFontIndirect.Call(uintptr(unsafe.Pointer(which)))
- if r1 == 0 { // failure
+ if r1 == 0 { // failure
return _NULL, fmt.Errorf("error getting %s font; Windows last error: %v", what, err)
}
return _HANDLE(r1), nil
@@ -97,5 +96,5 @@ func getStandardWindowFonts() (err error) {
if err != nil {
return err
}
- return nil // all good
+ return nil // all good
}
diff --git a/stdwndclass_windows.go b/stdwndclass_windows.go
index c36b9fe..f907b43 100644
--- a/stdwndclass_windows.go
+++ b/stdwndclass_windows.go
@@ -70,7 +70,7 @@ func storeSysData(hwnd _HWND, uMsg uint32, wParam _WPARAM, lParam _LPARAM) _LRES
var (
_getFocus = user32.NewProc("GetFocus")
- _isChild = user32.NewProc("IsChild")
+ _isChild = user32.NewProc("IsChild")
// _setFocus in area_windows.go
)
@@ -78,15 +78,15 @@ var (
// from http://blogs.msdn.com/b/oldnewthing/archive/2014/05/21/10527168.aspx
func (s *sysData) handleFocus(wParam _WPARAM) {
// parameter splitting from Microsoft's windowsx.h
- state := uint32(wParam.LOWORD()) // originally UINT
+ state := uint32(wParam.LOWORD()) // originally UINT
minimized := wParam.HIWORD() != 0
- if minimized { // don't do anything on minimize
+ if minimized { // don't do anything on minimize
return
}
- if state == _WA_INACTIVE { // focusing out
+ if state == _WA_INACTIVE { // focusing out
old, _, _ := _getFocus.Call()
- if _HWND(old) != _HWND(_NULL) { // if there is one
+ if _HWND(old) != _HWND(_NULL) { // if there is one
r1, _, _ := _isChild.Call(
uintptr(s.hwnd),
old)
@@ -94,8 +94,8 @@ func (s *sysData) handleFocus(wParam _WPARAM) {
s.lastfocus = _HWND(old)
}
}
- } else { // focusing in
- if s.lastfocus != _HWND(_NULL) { // if we have one
+ } else { // focusing in
+ if s.lastfocus != _HWND(_NULL) { // if we have one
// don't bother checking SetFocus()'s error; see http://stackoverflow.com/questions/24073695/winapi-can-setfocus-return-null-without-an-error-because-thats-what-im-see/24074912#24074912
_setFocus.Call(uintptr(s.lastfocus))
}
@@ -104,7 +104,7 @@ func (s *sysData) handleFocus(wParam _WPARAM) {
func stdWndProc(hwnd _HWND, uMsg uint32, wParam _WPARAM, lParam _LPARAM) _LRESULT {
s := getSysData(hwnd)
- if s == nil { // not yet saved
+ if s == nil { // not yet saved
return storeSysData(hwnd, uMsg, wParam, lParam)
}
switch uMsg {
@@ -134,7 +134,7 @@ func stdWndProc(hwnd _HWND, uMsg uint32, wParam _WPARAM, lParam _LPARAM) _LRESUL
_sendMessage.Call(
uintptr(ss.hwnd),
uintptr(_BM_SETCHECK),
- state, // already uintptr
+ state, // already uintptr
uintptr(0))
}
}
@@ -158,7 +158,7 @@ func stdWndProc(hwnd _HWND, uMsg uint32, wParam _WPARAM, lParam _LPARAM) _LRESUL
panic("GetClientRect failed: " + err.Error())
}
// top-left corner is (0,0) so no need for winheight
- s.doResize(int(r.left), int(r.top), int(r.right - r.left), int(r.bottom - r.top), 0)
+ s.doResize(int(r.left), int(r.top), int(r.right-r.left), int(r.bottom-r.top), 0)
// TODO use the Defer movement functions here?
// TODO redraw window and all children here?
}
@@ -173,16 +173,16 @@ func stdWndProc(hwnd _HWND, uMsg uint32, wParam _WPARAM, lParam _LPARAM) _LRESUL
}
type _WNDCLASS struct {
- style uint32
- lpfnWndProc uintptr
- cbClsExtra int32 // originally int
- cbWndExtra int32 // originally int
- hInstance _HANDLE
- hIcon _HANDLE
- hCursor _HANDLE
- hbrBackground _HBRUSH
- lpszMenuName *uint16
- lpszClassName uintptr
+ style uint32
+ lpfnWndProc uintptr
+ cbClsExtra int32 // originally int
+ cbWndExtra int32 // originally int
+ hInstance _HANDLE
+ hIcon _HANDLE
+ hCursor _HANDLE
+ hbrBackground _HBRUSH
+ lpszMenuName *uint16
+ lpszClassName uintptr
}
var (
@@ -195,15 +195,15 @@ var (
func registerStdWndClass() (err error) {
wc := &_WNDCLASS{
- lpszClassName: utf16ToArg(stdWndClass),
- lpfnWndProc: syscall.NewCallback(stdWndProc),
- hInstance: hInstance,
- hIcon: icon,
- hCursor: cursor,
- hbrBackground: _HBRUSH(_COLOR_BTNFACE + 1),
+ lpszClassName: utf16ToArg(stdWndClass),
+ lpfnWndProc: syscall.NewCallback(stdWndProc),
+ hInstance: hInstance,
+ hIcon: icon,
+ hCursor: cursor,
+ hbrBackground: _HBRUSH(_COLOR_BTNFACE + 1),
}
r1, _, err := _registerClass.Call(uintptr(unsafe.Pointer(wc)))
- if r1 == 0 { // failure
+ if r1 == 0 { // failure
return err
}
return nil
@@ -214,7 +214,7 @@ func initWndClassInfo() (err error) {
r1, _, err := user32.NewProc("LoadIconW").Call(
uintptr(_NULL),
uintptr(_IDI_APPLICATION))
- if r1 == 0 { // failure
+ if r1 == 0 { // failure
return fmt.Errorf("error getting window icon: %v", err)
}
icon = _HANDLE(r1)
@@ -222,7 +222,7 @@ func initWndClassInfo() (err error) {
r1, _, err = user32.NewProc("LoadCursorW").Call(
uintptr(_NULL),
uintptr(_IDC_ARROW))
- if r1 == 0 { // failure
+ if r1 == 0 { // failure
return fmt.Errorf("error getting window cursor: %v", err)
}
cursor = _HANDLE(r1)