Made message boxes run on uitask on Windows; adjusted some related TODOs.
This commit is contained in:
parent
dd577010ca
commit
46c992f1dc
|
@ -79,15 +79,23 @@ var (
|
||||||
func _msgBox(primarytext string, secondarytext string, uType uint32) (result int) {
|
func _msgBox(primarytext string, secondarytext string, uType uint32) (result int) {
|
||||||
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa511267.aspx says "Use task dialogs whenever appropriate to achieve a consistent look and layout. Task dialogs require Windows Vista® or later, so they aren't suitable for earlier versions of Windows. If you must use a message box, separate the main instruction from the supplemental instruction with two line breaks."
|
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa511267.aspx says "Use task dialogs whenever appropriate to achieve a consistent look and layout. Task dialogs require Windows Vista® or later, so they aren't suitable for earlier versions of Windows. If you must use a message box, separate the main instruction from the supplemental instruction with two line breaks."
|
||||||
text := primarytext + "\n\n" + secondarytext
|
text := primarytext + "\n\n" + secondarytext
|
||||||
r1, _, err := _messageBox.Call(
|
ret := make(chan uiret)
|
||||||
|
defer close(ret)
|
||||||
|
uitask <- &uimsg{
|
||||||
|
call: _messageBox,
|
||||||
|
p: []uintptr{
|
||||||
uintptr(_NULL),
|
uintptr(_NULL),
|
||||||
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(text))),
|
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(text))),
|
||||||
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(os.Args[0]))),
|
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(os.Args[0]))),
|
||||||
uintptr(uType))
|
uintptr(uType),
|
||||||
if r1 == 0 { // failure
|
},
|
||||||
panic(fmt.Sprintf("error displaying message box to user: %v\nstyle: 0x%08X\ntitle: %q\ntext:\n%s", err, uType, os.Args[0], text))
|
ret: ret,
|
||||||
}
|
}
|
||||||
return int(r1)
|
r := <-ret
|
||||||
|
if r.ret == 0 { // failure
|
||||||
|
panic(fmt.Sprintf("error displaying message box to user: %v\nstyle: 0x%08X\ntitle: %q\ntext:\n%s", r.err, uType, os.Args[0], text))
|
||||||
|
}
|
||||||
|
return int(r.ret)
|
||||||
}
|
}
|
||||||
|
|
||||||
func msgBox(primarytext string, secondarytext string) {
|
func msgBox(primarytext string, secondarytext string) {
|
||||||
|
|
4
todo.md
4
todo.md
|
@ -16,8 +16,6 @@ so I don't forget:
|
||||||
- Combobox/Listbox.Select (with Listbox.Select allowing bulk)
|
- Combobox/Listbox.Select (with Listbox.Select allowing bulk)
|
||||||
- Checkbox.Check or Checkbox.SetChecked
|
- Checkbox.Check or Checkbox.SetChecked
|
||||||
- Listbox.SelectAll
|
- Listbox.SelectAll
|
||||||
- make the Windows implementation of message boxes run on uitask
|
|
||||||
- ensure MsgBoxError can run if initialization failed if things change ever
|
|
||||||
- should Labels be selectable?
|
- should Labels be selectable?
|
||||||
- should message box text be selectable on all platforms or only on those that make it the default?
|
- should message box text be selectable on all platforms or only on those that make it the default?
|
||||||
- Listbox/Combobox.Index(n)
|
- Listbox/Combobox.Index(n)
|
||||||
|
@ -25,7 +23,7 @@ so I don't forget:
|
||||||
- change sysData.make() so it does not take the initial window text as an argument and instead have the respective Control/Window.make() call sysData.setText() expressly; this would allow me to remove the "no such concept of text" checks from the GTK+ and Mac OS X backends
|
- change sysData.make() so it does not take the initial window text as an argument and instead have the respective Control/Window.make() call sysData.setText() expressly; this would allow me to remove the "no such concept of text" checks from the GTK+ and Mac OS X backends
|
||||||
|
|
||||||
important things:
|
important things:
|
||||||
- because the main event loop is not called if initialization fails, it is presently impossible for MsgBoxError() to work if UI initialization fails; this basically means we cannot allow initializiation to fail on Mac OS X if we want to be able to report UI init failures to the user with one
|
- because the main event loop is not called if initialization fails, it is presently impossible for MsgBoxError() to work if UI initialization fails; this basically means we cannot allow initializiation to fail on Mac OS X if we want to be able to report UI init failures to the user with one (which would be desirable, maybe (would violate Windows HIG?))
|
||||||
- figure out where to auto-place windows in Cocoa (also window coordinates are still not flipped properly so (0,0) on screen is the bottom-left)
|
- figure out where to auto-place windows in Cocoa (also window coordinates are still not flipped properly so (0,0) on screen is the bottom-left)
|
||||||
- also provide a method to center windows; Cocoa provides one for us but
|
- also provide a method to center windows; Cocoa provides one for us but
|
||||||
- I think Cocoa NSButton text is not vertically aligned properly...?
|
- I think Cocoa NSButton text is not vertically aligned properly...?
|
||||||
|
|
Loading…
Reference in New Issue