Added repaint after Area event on Windows.
This commit is contained in:
parent
8f4780f5d7
commit
17ae3546d2
|
@ -306,6 +306,24 @@ func adjustAreaScrollbars(hwnd _HWND) {
|
||||||
uintptr(_TRUE)) // redraw the scroll bar
|
uintptr(_TRUE)) // redraw the scroll bar
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
_invalidateRect = user32.NewProc("InvalidateRect")
|
||||||
|
)
|
||||||
|
|
||||||
|
func repaintArea(s *sysData) {
|
||||||
|
r1, _, err := _invalidateRect.Call(
|
||||||
|
uintptr(s.hwnd),
|
||||||
|
uintptr(0), // the whole area
|
||||||
|
uintptr(_FALSE)) // TODO use _TRUE to mark that we should erase? or will the GetUpdateRect() call handle it?
|
||||||
|
if r1 == 0 { // failure
|
||||||
|
panic(fmt.Errorf("error flagging Area as needing repainting after event (last error: %v)", err))
|
||||||
|
}
|
||||||
|
r1, _, err = _updateWindow.Call(uintptr(s.hwnd))
|
||||||
|
if r1 == 0 { // failure
|
||||||
|
panic(fmt.Errorf("error repainting Area after event: %v", err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
_getKeyState = user32.NewProc("GetKeyState")
|
_getKeyState = user32.NewProc("GetKeyState")
|
||||||
)
|
)
|
||||||
|
@ -329,7 +347,6 @@ func getModifiers() (m Modifiers) {
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO mark repaint
|
|
||||||
func areaMouseEvent(s *sysData, button uint, up bool, count uint, wparam _WPARAM, lparam _LPARAM) {
|
func areaMouseEvent(s *sysData, button uint, up bool, count uint, wparam _WPARAM, lparam _LPARAM) {
|
||||||
var me MouseEvent
|
var me MouseEvent
|
||||||
|
|
||||||
|
@ -355,13 +372,15 @@ func areaMouseEvent(s *sysData, button uint, up bool, count uint, wparam _WPARAM
|
||||||
me.Held = append(me.Held, 3)
|
me.Held = append(me.Held, 3)
|
||||||
}
|
}
|
||||||
// TODO XBUTTONs?
|
// TODO XBUTTONs?
|
||||||
s.handler.Mouse(me)
|
repaint := s.handler.Mouse(me)
|
||||||
|
if repaint {
|
||||||
|
repaintArea(s)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO mark repaint
|
|
||||||
func areaKeyEvent(s *sysData, up bool, wparam _WPARAM, lparam _LPARAM) bool {
|
func areaKeyEvent(s *sysData, up bool, wparam _WPARAM, lparam _LPARAM) bool {
|
||||||
var ke KeyEvent
|
var ke KeyEvent
|
||||||
println(wparam, lparam)
|
|
||||||
scancode := byte((lparam >> 16) & 0xFF)
|
scancode := byte((lparam >> 16) & 0xFF)
|
||||||
ke.Modifiers = getModifiers()
|
ke.Modifiers = getModifiers()
|
||||||
if wparam == _VK_RETURN && (lparam & 0x01000000) != 0 {
|
if wparam == _VK_RETURN && (lparam & 0x01000000) != 0 {
|
||||||
|
@ -380,7 +399,9 @@ println(wparam, lparam)
|
||||||
}
|
}
|
||||||
ke.Up = up
|
ke.Up = up
|
||||||
handled, repaint := s.handler.Key(ke)
|
handled, repaint := s.handler.Key(ke)
|
||||||
_ = repaint // TODO
|
if repaint {
|
||||||
|
repaintArea(s)
|
||||||
|
}
|
||||||
return handled
|
return handled
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue