fix problem with mouse-moved events suspended by modifier-key events
svn: r4722
This commit is contained in:
parent
58a0b99d35
commit
5d2f80ab85
|
@ -1588,6 +1588,8 @@ static XComposeStatus compose_status;
|
||||||
# define DEFAULT_XMB_STATUS 1
|
# define DEFAULT_XMB_STATUS 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static XModifierKeymap *xmodkeymap;
|
||||||
|
|
||||||
static int extract_string_key(char *str, int slen)
|
static int extract_string_key(char *str, int slen)
|
||||||
{
|
{
|
||||||
if (slen > 9)
|
if (slen > 9)
|
||||||
|
@ -1775,6 +1777,23 @@ void wxWindow::WindowEventHandler(Widget w,
|
||||||
alt_kc = status_to_kc(alt_status, xev, alt_keysym, alt_str, alt_slen);
|
alt_kc = status_to_kc(alt_status, xev, alt_keysym, alt_str, alt_slen);
|
||||||
other_alt_kc = status_to_kc(other_alt_status, xev, other_alt_keysym, other_alt_str, other_alt_slen);
|
other_alt_kc = status_to_kc(other_alt_status, xev, other_alt_keysym, other_alt_str, other_alt_slen);
|
||||||
|
|
||||||
|
/* Figure out key state *after* event: */
|
||||||
|
{
|
||||||
|
int i, j;
|
||||||
|
if (!xmodkeymap)
|
||||||
|
xmodkeymap = XGetModifierMapping(wxAPP_DISPLAY);
|
||||||
|
for (i = 0; i < 8; i++) {
|
||||||
|
for (j = 0; j < xmodkeymap->max_keypermod; j++) {
|
||||||
|
if (xev->xkey.keycode == xmodkeymap->modifiermap[(i * xmodkeymap->max_keypermod) + j]) {
|
||||||
|
if (xev->xany.type == KeyPress)
|
||||||
|
win->current_state |= (1 << i);
|
||||||
|
else
|
||||||
|
win->current_state -= (1 << i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// set wxWindows event structure
|
// set wxWindows event structure
|
||||||
wxevent->eventHandle = (char*)xev;
|
wxevent->eventHandle = (char*)xev;
|
||||||
wxevent->keyCode = (xev->xany.type == KeyPress) ? kc : WXK_RELEASE;
|
wxevent->keyCode = (xev->xany.type == KeyPress) ? kc : WXK_RELEASE;
|
||||||
|
@ -1950,7 +1969,7 @@ void wxWindow::WindowEventHandler(Widget w,
|
||||||
|| (xev->xbutton.state & Button2Mask));
|
|| (xev->xbutton.state & Button2Mask));
|
||||||
wxevent->rightDown = ((wxevent->eventType == wxEVENT_TYPE_RIGHT_DOWN)
|
wxevent->rightDown = ((wxevent->eventType == wxEVENT_TYPE_RIGHT_DOWN)
|
||||||
|| (xev->xbutton.state & Button3Mask));
|
|| (xev->xbutton.state & Button3Mask));
|
||||||
wxevent->timeStamp = xev->xbutton.time; /* MATTHEW */
|
wxevent->timeStamp = xev->xbutton.time;
|
||||||
|
|
||||||
/* Adjust location of mouse-moved events when it's
|
/* Adjust location of mouse-moved events when it's
|
||||||
over sub-parts, and counter canvas scroll: */
|
over sub-parts, and counter canvas scroll: */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user