And the uitask message fixed was the issue all along. Now it works.
This commit is contained in:
parent
4c6ce9639f
commit
b166c0f114
|
@ -55,39 +55,32 @@ var stdDlgSizes = [nctypes]dlgunits{
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
_getTextMetrics = user32.NewProc("GetTextMetricsW")
|
_getTextMetrics = gdi32.NewProc("GetTextMetricsW")
|
||||||
_getWindowDC = user32.NewProc("GetWindowDC")
|
_getWindowDC = user32.NewProc("GetWindowDC")
|
||||||
_releaseDC = user32.NewProc("ReleaseDC")
|
_releaseDC = user32.NewProc("ReleaseDC")
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *sysData) preferredSize() (width int, height int) {
|
func (s *sysData) preferredSize() (width int, height int) {
|
||||||
println("size of control", s.ctype)
|
|
||||||
var dc _HANDLE
|
var dc _HANDLE
|
||||||
var tm _TEXTMETRICS
|
var tm _TEXTMETRICS
|
||||||
var baseX, baseY int
|
var baseX, baseY int
|
||||||
|
|
||||||
println("calling getWindowDC")
|
|
||||||
r1, _, err := _getWindowDC.Call(uintptr(s.hwnd))
|
r1, _, err := _getWindowDC.Call(uintptr(s.hwnd))
|
||||||
println("getWindowDC",r1,err)
|
|
||||||
if r1 == 0 { // failure
|
if r1 == 0 { // failure
|
||||||
panic(err) // TODO return it instead
|
panic(err) // TODO return it instead
|
||||||
}
|
}
|
||||||
dc = _HANDLE(r1)
|
dc = _HANDLE(r1)
|
||||||
println("getTextMetrics")
|
|
||||||
r1, _, err = _getTextMetrics.Call(
|
r1, _, err = _getTextMetrics.Call(
|
||||||
uintptr(dc),
|
uintptr(dc),
|
||||||
uintptr(unsafe.Pointer(&tm)))
|
uintptr(unsafe.Pointer(&tm)))
|
||||||
println("getTextMetrics",r1,err)
|
|
||||||
if r1 == 0 { // failure
|
if r1 == 0 { // failure
|
||||||
panic(err) // TODO return it instead
|
panic(err) // TODO return it instead
|
||||||
}
|
}
|
||||||
baseX = int(tm.tmAveCharWidth) // TODO not optimal; third reference has better way
|
baseX = int(tm.tmAveCharWidth) // TODO not optimal; third reference has better way
|
||||||
baseY = int(tm.tmHeight)
|
baseY = int(tm.tmHeight)
|
||||||
println("releaseDC")
|
|
||||||
r1, _, err = _releaseDC.Call(
|
r1, _, err = _releaseDC.Call(
|
||||||
uintptr(s.hwnd),
|
uintptr(s.hwnd),
|
||||||
uintptr(dc))
|
uintptr(dc))
|
||||||
println("releaseDC",r1,err)
|
|
||||||
if r1 == 0 { // failure
|
if r1 == 0 { // failure
|
||||||
panic(err) // TODO return it instead
|
panic(err) // TODO return it instead
|
||||||
}
|
}
|
||||||
|
@ -100,7 +93,6 @@ println("releaseDC",r1,err)
|
||||||
height = stdDlgSizes[s.ctype].height
|
height = stdDlgSizes[s.ctype].height
|
||||||
width = muldiv(width, baseX, 4) // equivalent to right of rect
|
width = muldiv(width, baseX, 4) // equivalent to right of rect
|
||||||
height = muldiv(height, baseY, 8) // equivalent to bottom of rect
|
height = muldiv(height, baseY, 8) // equivalent to bottom of rect
|
||||||
println("result:", width, height)
|
|
||||||
return width, height
|
return width, height
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,15 +85,15 @@ func (w *Window) Open(control Control) (err error) {
|
||||||
return fmt.Errorf("error adding window's control: %v", err)
|
return fmt.Errorf("error adding window's control: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
err = w.sysData.setWindowSize(w.initWidth, w.initHeight)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("error setting window size (in Window.Open()): %v", err)
|
||||||
|
}
|
||||||
// TODO separate showing?
|
// TODO separate showing?
|
||||||
err = w.sysData.show()
|
err = w.sysData.show()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error showing window (in Window.Open()): %v", err)
|
return fmt.Errorf("error showing window (in Window.Open()): %v", err)
|
||||||
}
|
}
|
||||||
err = w.sysData.setWindowSize(w.initWidth, w.initHeight)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("error setting window size (in Window.Open()): %v", err)
|
|
||||||
}
|
|
||||||
w.created = true
|
w.created = true
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue