Replaced the hackish indeterminate progress bar animation on Mac OS X (which didn't work on 10.6) with calls to startAnimation: and stopAnimation:; I have no idea how I missed those the first time. Thanks to stal[DirectX] in irc.freenode.net/#macdev for pointing those out to me.
This commit is contained in:
parent
51bee78044
commit
e726ee16bd
|
@ -84,6 +84,8 @@ var (
|
||||||
_setStyle = sel_getUid("setStyle:")
|
_setStyle = sel_getUid("setStyle:")
|
||||||
_setControlSize = sel_getUid("setControlSize:")
|
_setControlSize = sel_getUid("setControlSize:")
|
||||||
_setIndeterminate = sel_getUid("setIndeterminate:")
|
_setIndeterminate = sel_getUid("setIndeterminate:")
|
||||||
|
_startAnimation = sel_getUid("startAnimation:")
|
||||||
|
_stopAnimation = sel_getUid("stopAnimation:")
|
||||||
_setDoubleValue = sel_getUid("setDoubleValue:")
|
_setDoubleValue = sel_getUid("setDoubleValue:")
|
||||||
_numberOfItems = sel_getUid("numberOfItems")
|
_numberOfItems = sel_getUid("numberOfItems")
|
||||||
_selectItemAtIndex = sel_getUid("selectItemAtIndex:")
|
_selectItemAtIndex = sel_getUid("selectItemAtIndex:")
|
||||||
|
@ -334,6 +336,7 @@ var classTypes = [nctypes]*classData{
|
||||||
C.objc_msgSend_int(pbar, _setStyle, _NSProgressIndicatorBarStyle)
|
C.objc_msgSend_int(pbar, _setStyle, _NSProgressIndicatorBarStyle)
|
||||||
C.objc_msgSend_uint(pbar, _setControlSize, C.uintptr_t(_NSRegularControlSize))
|
C.objc_msgSend_uint(pbar, _setControlSize, C.uintptr_t(_NSRegularControlSize))
|
||||||
C.objc_msgSend_bool(pbar, _setIndeterminate, C.BOOL(C.NO))
|
C.objc_msgSend_bool(pbar, _setIndeterminate, C.BOOL(C.NO))
|
||||||
|
C.objc_msgSend_id(pbar, _stopAnimation, pbar)
|
||||||
addControl(parentWindow, pbar)
|
addControl(parentWindow, pbar)
|
||||||
return pbar
|
return pbar
|
||||||
},
|
},
|
||||||
|
@ -543,11 +546,11 @@ func (s *sysData) setProgress(percent int) {
|
||||||
defer close(ret)
|
defer close(ret)
|
||||||
uitask <- func() {
|
uitask <- func() {
|
||||||
if percent == -1 {
|
if percent == -1 {
|
||||||
// At least on Mac OS X 10.8, if the progressbar was already on 0 or 100% when turning on indeterminate mode, the indeterminate animation won't play, leaving just a still progress bar. This is a workaround. Note the selector call order.
|
|
||||||
// TODO will the value chosen affect the animation speed?
|
|
||||||
C.objc_msgSend_double(s.id, _setDoubleValue, C.double(50))
|
|
||||||
C.objc_msgSend_bool(s.id, _setIndeterminate, C.BOOL(C.YES))
|
C.objc_msgSend_bool(s.id, _setIndeterminate, C.BOOL(C.YES))
|
||||||
|
C.objc_msgSend_id(s.id, _startAnimation, s.id)
|
||||||
} else {
|
} else {
|
||||||
|
// will have no effect if we were already determinate
|
||||||
|
C.objc_msgSend_id(s.id, _stopAnimation, s.id)
|
||||||
C.objc_msgSend_bool(s.id, _setIndeterminate, C.BOOL(C.NO))
|
C.objc_msgSend_bool(s.id, _setIndeterminate, C.BOOL(C.NO))
|
||||||
C.objc_msgSend_double(s.id, _setDoubleValue, C.double(percent))
|
C.objc_msgSend_double(s.id, _setDoubleValue, C.double(percent))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue