Fixed the major scrolling corruption on Windows: had to commit the scroll changes before we can get to them in our painting routine =P This doesn't fix ALL the issues; check the (now-updated) TODO.
This commit is contained in:
parent
a325e9e404
commit
773668c35b
|
@ -255,10 +255,7 @@ func scrollArea(s *sysData, wparam _WPARAM, which uintptr) {
|
||||||
if r1 == _ERROR { // failure
|
if r1 == _ERROR { // failure
|
||||||
panic(fmt.Errorf("error scrolling Area: %v", err))
|
panic(fmt.Errorf("error scrolling Area: %v", err))
|
||||||
}
|
}
|
||||||
r1, _, err = _updateWindow.Call(uintptr(s.hwnd)) // ...and redraw it
|
// ...but don't redraw the window yet; we need to apply our scroll changes
|
||||||
if r1 == 0 { // failure
|
|
||||||
panic(fmt.Errorf("error updating Area after scrolling: %v", err))
|
|
||||||
}
|
|
||||||
|
|
||||||
// we actually have to commit the change back to the scrollbar; otherwise the scroll position will merely reset itself
|
// we actually have to commit the change back to the scrollbar; otherwise the scroll position will merely reset itself
|
||||||
si.cbSize = uint32(unsafe.Sizeof(si))
|
si.cbSize = uint32(unsafe.Sizeof(si))
|
||||||
|
@ -268,6 +265,13 @@ func scrollArea(s *sysData, wparam _WPARAM, which uintptr) {
|
||||||
uintptr(s.hwnd),
|
uintptr(s.hwnd),
|
||||||
which,
|
which,
|
||||||
uintptr(unsafe.Pointer(&si)))
|
uintptr(unsafe.Pointer(&si)))
|
||||||
|
|
||||||
|
// NOW redraw it
|
||||||
|
r1, _, err = _updateWindow.Call(uintptr(s.hwnd))
|
||||||
|
if r1 == 0 { // failure
|
||||||
|
panic(fmt.Errorf("error updating Area after scrolling: %v", err))
|
||||||
|
}
|
||||||
|
|
||||||
// TODO in some cases wine will show a thumb one pixel away from the advance arrow button if going to the end; the values are correct though... weirdness in wine or something I never noticed about Windows?
|
// TODO in some cases wine will show a thumb one pixel away from the advance arrow button if going to the end; the values are correct though... weirdness in wine or something I never noticed about Windows?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
todo.md
2
todo.md
|
@ -84,7 +84,7 @@ super ultra important things:
|
||||||
- the window background of a GTK+ window seems to be... off - I think it has to do with the GtkLayout
|
- the window background of a GTK+ window seems to be... off - I think it has to do with the GtkLayout
|
||||||
- see update 18 March 2014 in README
|
- see update 18 March 2014 in README
|
||||||
- resizing seems to be completely and totally broken in the Wayland backend
|
- resizing seems to be completely and totally broken in the Wayland backend
|
||||||
- redrawing Areas on Windows seems to be flaky
|
- redrawing Areas on Windows seems to be flaky: make the window small, scroll, then make it large again and watch the vertical corruption
|
||||||
- redrawing controls after a window resize on Windows seems to be flaky
|
- redrawing controls after a window resize on Windows seems to be flaky
|
||||||
- make sure the first and last rows and columns of an Area are being drawn on Windows
|
- make sure the first and last rows and columns of an Area are being drawn on Windows
|
||||||
- clicking on Areas in GTK+ don't bring keyboard focus to them?
|
- clicking on Areas in GTK+ don't bring keyboard focus to them?
|
||||||
|
|
Loading…
Reference in New Issue