Fixed the Windows 7 progressbar animation dumbness.
This commit is contained in:
parent
d9a8cf07b9
commit
ef3adffd54
|
@ -606,17 +606,32 @@ func (s *sysData) setProgress(percent int) {
|
||||||
}
|
}
|
||||||
s.isMarquee = false
|
s.isMarquee = false
|
||||||
}
|
}
|
||||||
|
send := func(msg uintptr, n int, l _LPARAM) {
|
||||||
uitask <- &uimsg{
|
uitask <- &uimsg{
|
||||||
call: _sendMessage,
|
call: _sendMessage,
|
||||||
p: []uintptr{
|
p: []uintptr{
|
||||||
uintptr(s.hwnd),
|
uintptr(s.hwnd),
|
||||||
uintptr(_PBM_SETPOS),
|
msg,
|
||||||
uintptr(_WPARAM(percent)),
|
uintptr(_WPARAM(n)),
|
||||||
uintptr(0),
|
uintptr(l),
|
||||||
},
|
},
|
||||||
ret: ret,
|
ret: ret,
|
||||||
}
|
}
|
||||||
<-ret
|
<-ret
|
||||||
|
}
|
||||||
|
// Windows 7 has a non-disableable slowly-animating progress bar increment
|
||||||
|
// there isn't one for decrement, so we'll work around by going one higher and then lower again
|
||||||
|
// for the case where percent == 100, we need to increase the range temporarily
|
||||||
|
// this kind of thing is why I want to move away from uimsg and toward having uitask take func()s like on the other platforms
|
||||||
|
// sources: http://social.msdn.microsoft.com/Forums/en-US/61350dc7-6584-4c4e-91b0-69d642c03dae/progressbar-disable-smooth-animation http://stackoverflow.com/questions/2217688/windows-7-aero-theme-progress-bar-bug http://discuss.joelonsoftware.com/default.asp?dotnet.12.600456.2 http://stackoverflow.com/questions/22469876/progressbar-lag-when-setting-position-with-pbm-setpos http://stackoverflow.com/questions/6128287/tprogressbar-never-fills-up-all-the-way-seems-to-be-updating-too-fast
|
||||||
|
if percent == 100 {
|
||||||
|
send(_PBM_SETRANGE32, 0, 101)
|
||||||
|
}
|
||||||
|
send(_PBM_SETPOS, percent + 1, 0)
|
||||||
|
send(_PBM_SETPOS, percent, 0)
|
||||||
|
if percent == 100 {
|
||||||
|
send(_PBM_SETRANGE32, 0, 100)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *sysData) len() int {
|
func (s *sysData) len() int {
|
||||||
|
|
2
todo.md
2
todo.md
|
@ -9,8 +9,6 @@ WINDOWS:
|
||||||
- the windows build appears to be unstable:
|
- the windows build appears to be unstable:
|
||||||
- 64-bit crashes in malloc in wine with heap corruption warnings aplenty during DLL loading; in windows 7 it works fine
|
- 64-bit crashes in malloc in wine with heap corruption warnings aplenty during DLL loading; in windows 7 it works fine
|
||||||
- redrawing controls after a window resize on Windows does not work properly
|
- redrawing controls after a window resize on Windows does not work properly
|
||||||
- on windows 7, progress bars seem to animate from 0 -> pos when you turn off marquee mode and set pos; see if that's documented or if I'm doing something wrong
|
|
||||||
- intentional: http://social.msdn.microsoft.com/Forums/en-US/61350dc7-6584-4c4e-91b0-69d642c03dae/progressbar-disable-smooth-animation http://stackoverflow.com/questions/2217688/windows-7-aero-theme-progress-bar-bug http://discuss.joelonsoftware.com/default.asp?dotnet.12.600456.2 http://stackoverflow.com/questions/22469876/progressbar-lag-when-setting-position-with-pbm-setpos http://stackoverflow.com/questions/6128287/tprogressbar-never-fills-up-all-the-way-seems-to-be-updating-too-fast - these links have workarounds but blah; more proof that progressbars were programmatically intended to be incremented in steps
|
|
||||||
- check all uses of RECT.right/.bottom in Windows that don't have an accompanying -RECT.left/.top to make sure they're correct
|
- check all uses of RECT.right/.bottom in Windows that don't have an accompanying -RECT.left/.top to make sure they're correct
|
||||||
- when adding IsDialogMessage() find out if that make sthe area in the area bounds test automatically focused
|
- when adding IsDialogMessage() find out if that make sthe area in the area bounds test automatically focused
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,7 @@ const _MK_XBUTTON1 = 32
|
||||||
const _MK_XBUTTON2 = 64
|
const _MK_XBUTTON2 = 64
|
||||||
const _PBM_SETMARQUEE = 1034
|
const _PBM_SETMARQUEE = 1034
|
||||||
const _PBM_SETPOS = 1026
|
const _PBM_SETPOS = 1026
|
||||||
|
const _PBM_SETRANGE32 = 1030
|
||||||
const _PBS_MARQUEE = 8
|
const _PBS_MARQUEE = 8
|
||||||
const _PBS_SMOOTH = 1
|
const _PBS_SMOOTH = 1
|
||||||
const _SB_HORZ = 0
|
const _SB_HORZ = 0
|
||||||
|
|
|
@ -61,6 +61,7 @@ const _MK_XBUTTON1 = 32
|
||||||
const _MK_XBUTTON2 = 64
|
const _MK_XBUTTON2 = 64
|
||||||
const _PBM_SETMARQUEE = 1034
|
const _PBM_SETMARQUEE = 1034
|
||||||
const _PBM_SETPOS = 1026
|
const _PBM_SETPOS = 1026
|
||||||
|
const _PBM_SETRANGE32 = 1030
|
||||||
const _PBS_MARQUEE = 8
|
const _PBS_MARQUEE = 8
|
||||||
const _PBS_SMOOTH = 1
|
const _PBS_SMOOTH = 1
|
||||||
const _SB_HORZ = 0
|
const _SB_HORZ = 0
|
||||||
|
|
Loading…
Reference in New Issue