Don't eagerly set wxKeyEvent position fields.
This results in a noticeable delay when using wxGTK via a remote X11 connection for every key event as a round trip to server is needed to get the mouse pointer position every time a key is pressed or released. Only provide the position on demand. And explain that it's actually not very useful as it's simply the same as the current mouse position. Closes #14361. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72207 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1699,10 +1699,10 @@ public:
|
|||||||
{ return wxPoint(m_x, m_y); }
|
{ return wxPoint(m_x, m_y); }
|
||||||
|
|
||||||
// Get X position
|
// Get X position
|
||||||
wxCoord GetX() const { return m_x; }
|
wxCoord GetX() const;
|
||||||
|
|
||||||
// Get Y position
|
// Get Y position
|
||||||
wxCoord GetY() const { return m_y; }
|
wxCoord GetY() const;
|
||||||
|
|
||||||
// Can be called from wxEVT_CHAR_HOOK handler to allow generation of normal
|
// Can be called from wxEVT_CHAR_HOOK handler to allow generation of normal
|
||||||
// key events even though the event had been handled (by default they would
|
// key events even though the event had been handled (by default they would
|
||||||
@@ -1766,6 +1766,7 @@ private:
|
|||||||
{
|
{
|
||||||
m_x = evt.m_x;
|
m_x = evt.m_x;
|
||||||
m_y = evt.m_y;
|
m_y = evt.m_y;
|
||||||
|
m_hasPosition = evt.m_hasPosition;
|
||||||
|
|
||||||
m_keyCode = evt.m_keyCode;
|
m_keyCode = evt.m_keyCode;
|
||||||
|
|
||||||
@@ -1776,11 +1777,19 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialize m_x and m_y using the current mouse cursor position if
|
||||||
|
// necessary.
|
||||||
|
void InitPositionIfNecessary() const;
|
||||||
|
|
||||||
// If this flag is true, the normal key events should still be generated
|
// If this flag is true, the normal key events should still be generated
|
||||||
// even if wxEVT_CHAR_HOOK had been handled. By default it is false as
|
// even if wxEVT_CHAR_HOOK had been handled. By default it is false as
|
||||||
// handling wxEVT_CHAR_HOOK suppresses all the subsequent events.
|
// handling wxEVT_CHAR_HOOK suppresses all the subsequent events.
|
||||||
bool m_allowNext;
|
bool m_allowNext;
|
||||||
|
|
||||||
|
// If true, m_x and m_y were already initialized. If false, try to get them
|
||||||
|
// when they're requested.
|
||||||
|
bool m_hasPosition;
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS(wxKeyEvent)
|
DECLARE_DYNAMIC_CLASS(wxKeyEvent)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -109,10 +109,10 @@ public:
|
|||||||
// For embedded use. By default does nothing.
|
// For embedded use. By default does nothing.
|
||||||
virtual void MacHandleUnhandledEvent( WXEVENTREF ev );
|
virtual void MacHandleUnhandledEvent( WXEVENTREF ev );
|
||||||
|
|
||||||
bool MacSendKeyDownEvent( wxWindow* focus , long keyval , long modifiers , long when , short wherex , short wherey , wxChar uniChar ) ;
|
bool MacSendKeyDownEvent( wxWindow* focus , long keyval , long modifiers , long when , wxChar uniChar ) ;
|
||||||
bool MacSendKeyUpEvent( wxWindow* focus , long keyval , long modifiers , long when , short wherex , short wherey , wxChar uniChar ) ;
|
bool MacSendKeyUpEvent( wxWindow* focus , long keyval , long modifiers , long when , wxChar uniChar ) ;
|
||||||
bool MacSendCharEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar ) ;
|
bool MacSendCharEvent( wxWindow* focus , long keymessage , long modifiers , long when , wxChar uniChar ) ;
|
||||||
void MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar ) ;
|
void MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymessage , long modifiers , long when , wxChar uniChar ) ;
|
||||||
#if wxOSX_USE_CARBON
|
#if wxOSX_USE_CARBON
|
||||||
// we only have applescript on these
|
// we only have applescript on these
|
||||||
virtual short MacHandleAEODoc(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ;
|
virtual short MacHandleAEODoc(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ;
|
||||||
|
@@ -1444,6 +1444,9 @@ public:
|
|||||||
//@{
|
//@{
|
||||||
/**
|
/**
|
||||||
Obtains the position (in client coordinates) at which the key was pressed.
|
Obtains the position (in client coordinates) at which the key was pressed.
|
||||||
|
|
||||||
|
Notice that this position is simply the current mouse pointer position
|
||||||
|
and has no special relationship to the key event itself.
|
||||||
*/
|
*/
|
||||||
wxPoint GetPosition() const;
|
wxPoint GetPosition() const;
|
||||||
void GetPosition(long* x, long* y) const;
|
void GetPosition(long* x, long* y) const;
|
||||||
@@ -1502,11 +1505,15 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
Returns the X position (in client coordinates) of the event.
|
Returns the X position (in client coordinates) of the event.
|
||||||
|
|
||||||
|
@see GetPosition()
|
||||||
*/
|
*/
|
||||||
wxCoord GetX() const;
|
wxCoord GetX() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Returns the Y position (in client coordinates) of the event.
|
Returns the Y position (in client coordinates) of the event.
|
||||||
|
|
||||||
|
@see GetPosition()
|
||||||
*/
|
*/
|
||||||
wxCoord GetY() const;
|
wxCoord GetY() const;
|
||||||
|
|
||||||
|
@@ -162,7 +162,7 @@ MyFrame::MyFrame(const wxString& title)
|
|||||||
wxTE_READONLY);
|
wxTE_READONLY);
|
||||||
headerText->SetValue(
|
headerText->SetValue(
|
||||||
" event key KeyCode mod UnicodeKey "
|
" event key KeyCode mod UnicodeKey "
|
||||||
" RawKeyCode RawKeyFlags");
|
" RawKeyCode RawKeyFlags Position");
|
||||||
|
|
||||||
|
|
||||||
m_logText = new wxTextCtrl(this, wxID_ANY, "",
|
m_logText = new wxTextCtrl(this, wxID_ANY, "",
|
||||||
@@ -404,7 +404,7 @@ wxString GetKeyName(const wxKeyEvent &event)
|
|||||||
void MyFrame::LogEvent(const wxString& name, wxKeyEvent& event)
|
void MyFrame::LogEvent(const wxString& name, wxKeyEvent& event)
|
||||||
{
|
{
|
||||||
wxString msg;
|
wxString msg;
|
||||||
// event key_name KeyCode modifiers Unicode raw_code raw_flags
|
// event key_name KeyCode modifiers Unicode raw_code raw_flags pos
|
||||||
msg.Printf("%7s %15s %5d %c%c%c%c"
|
msg.Printf("%7s %15s %5d %c%c%c%c"
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
"%5d (U+%04x)"
|
"%5d (U+%04x)"
|
||||||
@@ -416,6 +416,7 @@ void MyFrame::LogEvent(const wxString& name, wxKeyEvent& event)
|
|||||||
#else
|
#else
|
||||||
" not-set not-set"
|
" not-set not-set"
|
||||||
#endif
|
#endif
|
||||||
|
" (%5d,%5d)"
|
||||||
"\n",
|
"\n",
|
||||||
name,
|
name,
|
||||||
GetKeyName(event),
|
GetKeyName(event),
|
||||||
@@ -432,6 +433,8 @@ void MyFrame::LogEvent(const wxString& name, wxKeyEvent& event)
|
|||||||
, (unsigned long) event.GetRawKeyCode()
|
, (unsigned long) event.GetRawKeyCode()
|
||||||
, (unsigned long) event.GetRawKeyFlags()
|
, (unsigned long) event.GetRawKeyFlags()
|
||||||
#endif
|
#endif
|
||||||
|
, event.GetX()
|
||||||
|
, event.GetY()
|
||||||
);
|
);
|
||||||
|
|
||||||
m_logText->AppendText(msg);
|
m_logText->AppendText(msg);
|
||||||
|
@@ -736,6 +736,10 @@ wxKeyEvent::wxKeyEvent(wxEventType type)
|
|||||||
m_uniChar = WXK_NONE;
|
m_uniChar = WXK_NONE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
m_x =
|
||||||
|
m_y = wxDefaultCoord;
|
||||||
|
m_hasPosition = false;
|
||||||
|
|
||||||
InitPropagation();
|
InitPropagation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -759,6 +763,42 @@ wxKeyEvent::wxKeyEvent(wxEventType eventType, const wxKeyEvent& evt)
|
|||||||
InitPropagation();
|
InitPropagation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxKeyEvent::InitPositionIfNecessary() const
|
||||||
|
{
|
||||||
|
if ( m_hasPosition )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// We're const because we're called from const Get[XY]() methods but we
|
||||||
|
// need to update the "cached" values.
|
||||||
|
wxKeyEvent& self = const_cast<wxKeyEvent&>(*this);
|
||||||
|
self.m_hasPosition = true;
|
||||||
|
|
||||||
|
// The only position we can possibly associate with the keyboard event on
|
||||||
|
// the platforms where it doesn't carry it already is the mouse position.
|
||||||
|
wxGetMousePosition(&self.m_x, &self.m_y);
|
||||||
|
|
||||||
|
// If this event is associated with a window, the position should be in its
|
||||||
|
// client coordinates, but otherwise leave it in screen coordinates as what
|
||||||
|
// else can we use?
|
||||||
|
wxWindow* const win = wxDynamicCast(GetEventObject(), wxWindow);
|
||||||
|
if ( win )
|
||||||
|
win->ScreenToClient(&self.m_x, &self.m_y);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxCoord wxKeyEvent::GetX() const
|
||||||
|
{
|
||||||
|
InitPositionIfNecessary();
|
||||||
|
|
||||||
|
return m_x;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxCoord wxKeyEvent::GetY() const
|
||||||
|
{
|
||||||
|
InitPositionIfNecessary();
|
||||||
|
|
||||||
|
return m_y;
|
||||||
|
}
|
||||||
|
|
||||||
bool wxKeyEvent::IsKeyInCategory(int category) const
|
bool wxKeyEvent::IsKeyInCategory(int category) const
|
||||||
{
|
{
|
||||||
switch ( GetKeyCode() )
|
switch ( GetKeyCode() )
|
||||||
|
@@ -711,8 +711,6 @@ static void wxFillOtherKeyEventFields(wxKeyEvent& event,
|
|||||||
event.m_rawCode = (wxUint32) gdk_event->keyval;
|
event.m_rawCode = (wxUint32) gdk_event->keyval;
|
||||||
event.m_rawFlags = gdk_event->hardware_keycode;
|
event.m_rawFlags = gdk_event->hardware_keycode;
|
||||||
|
|
||||||
wxGetMousePosition(&event.m_x, &event.m_y);
|
|
||||||
win->ScreenToClient(&event.m_x, &event.m_y);
|
|
||||||
event.SetEventObject( win );
|
event.SetEventObject( win );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -5682,21 +5682,6 @@ MSWInitAnyKeyEvent(wxKeyEvent& event,
|
|||||||
#ifndef __WXWINCE__
|
#ifndef __WXWINCE__
|
||||||
event.SetTimestamp(::GetMessageTime());
|
event.SetTimestamp(::GetMessageTime());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Event coordinates must be in window client coordinates system which
|
|
||||||
// doesn't make sense if there is no window.
|
|
||||||
//
|
|
||||||
// We could use screen coordinates for such events but this would make the
|
|
||||||
// logic of the event handlers more complicated: you'd need to test for the
|
|
||||||
// event object and interpret the coordinates differently according to
|
|
||||||
// whether it's NULL or not so unless somebody really asks for this let's
|
|
||||||
// just avoid the issue.
|
|
||||||
if ( win )
|
|
||||||
{
|
|
||||||
const wxPoint mousePos = win->ScreenToClient(wxGetMousePosition());
|
|
||||||
event.m_x = mousePos.x;
|
|
||||||
event.m_y = mousePos.y;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // anonymous namespace
|
} // anonymous namespace
|
||||||
|
@@ -1400,34 +1400,34 @@ wxMouseState wxGetMouseState()
|
|||||||
|
|
||||||
// TODO : once the new key/char handling is tested, move all the code to wxWindow
|
// TODO : once the new key/char handling is tested, move all the code to wxWindow
|
||||||
|
|
||||||
bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar )
|
bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keymessage , long modifiers , long when , wxChar uniChar )
|
||||||
{
|
{
|
||||||
if ( !focus )
|
if ( !focus )
|
||||||
return false ;
|
return false ;
|
||||||
|
|
||||||
wxKeyEvent event(wxEVT_KEY_DOWN) ;
|
wxKeyEvent event(wxEVT_KEY_DOWN) ;
|
||||||
MacCreateKeyEvent( event, focus , keymessage , modifiers , when , wherex , wherey , uniChar ) ;
|
MacCreateKeyEvent( event, focus , keymessage , modifiers , when , uniChar ) ;
|
||||||
|
|
||||||
return focus->OSXHandleKeyEvent(event);
|
return focus->OSXHandleKeyEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar )
|
bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keymessage , long modifiers , long when , wxChar uniChar )
|
||||||
{
|
{
|
||||||
if ( !focus )
|
if ( !focus )
|
||||||
return false ;
|
return false ;
|
||||||
|
|
||||||
wxKeyEvent event( wxEVT_KEY_UP ) ;
|
wxKeyEvent event( wxEVT_KEY_UP ) ;
|
||||||
MacCreateKeyEvent( event, focus , keymessage , modifiers , when , wherex , wherey , uniChar ) ;
|
MacCreateKeyEvent( event, focus , keymessage , modifiers , when , uniChar ) ;
|
||||||
|
|
||||||
return focus->OSXHandleKeyEvent(event) ;
|
return focus->OSXHandleKeyEvent(event) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxApp::MacSendCharEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar )
|
bool wxApp::MacSendCharEvent( wxWindow* focus , long keymessage , long modifiers , long when , wxChar uniChar )
|
||||||
{
|
{
|
||||||
if ( !focus )
|
if ( !focus )
|
||||||
return false ;
|
return false ;
|
||||||
wxKeyEvent event(wxEVT_CHAR) ;
|
wxKeyEvent event(wxEVT_CHAR) ;
|
||||||
MacCreateKeyEvent( event, focus , keymessage , modifiers , when , wherex , wherey , uniChar ) ;
|
MacCreateKeyEvent( event, focus , keymessage , modifiers , when , uniChar ) ;
|
||||||
|
|
||||||
bool handled = false ;
|
bool handled = false ;
|
||||||
|
|
||||||
@@ -1508,7 +1508,7 @@ bool wxApp::MacSendCharEvent( wxWindow* focus , long keymessage , long modifiers
|
|||||||
}
|
}
|
||||||
|
|
||||||
// This method handles common code for SendKeyDown, SendKeyUp, and SendChar events.
|
// This method handles common code for SendKeyDown, SendKeyUp, and SendChar events.
|
||||||
void wxApp::MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar )
|
void wxApp::MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymessage , long modifiers , long when , wxChar uniChar )
|
||||||
{
|
{
|
||||||
#if wxOSX_USE_COCOA_OR_CARBON
|
#if wxOSX_USE_COCOA_OR_CARBON
|
||||||
|
|
||||||
@@ -1590,8 +1590,6 @@ void wxApp::MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymess
|
|||||||
|
|
||||||
event.m_rawCode = keymessage;
|
event.m_rawCode = keymessage;
|
||||||
event.m_rawFlags = modifiers;
|
event.m_rawFlags = modifiers;
|
||||||
event.m_x = wherex;
|
|
||||||
event.m_y = wherey;
|
|
||||||
event.SetTimestamp(when);
|
event.SetTimestamp(when);
|
||||||
event.SetEventObject(focus);
|
event.SetEventObject(focus);
|
||||||
#else
|
#else
|
||||||
@@ -1600,8 +1598,6 @@ void wxApp::MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymess
|
|||||||
wxUnusedVar(keymessage);
|
wxUnusedVar(keymessage);
|
||||||
wxUnusedVar(modifiers);
|
wxUnusedVar(modifiers);
|
||||||
wxUnusedVar(when);
|
wxUnusedVar(when);
|
||||||
wxUnusedVar(wherex);
|
|
||||||
wxUnusedVar(wherey);
|
|
||||||
wxUnusedVar(uniChar);
|
wxUnusedVar(uniChar);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@@ -306,7 +306,6 @@ static pascal OSStatus KeyboardEventHandler( EventHandlerCallRef handler , Event
|
|||||||
|
|
||||||
UInt32 keyCode ;
|
UInt32 keyCode ;
|
||||||
UInt32 modifiers ;
|
UInt32 modifiers ;
|
||||||
Point point ;
|
|
||||||
UInt32 when = EventTimeToTicks( GetEventTime( event ) ) ;
|
UInt32 when = EventTimeToTicks( GetEventTime( event ) ) ;
|
||||||
|
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
@@ -334,7 +333,6 @@ static pascal OSStatus KeyboardEventHandler( EventHandlerCallRef handler , Event
|
|||||||
GetEventParameter( event, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &charCode );
|
GetEventParameter( event, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &charCode );
|
||||||
GetEventParameter( event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode );
|
GetEventParameter( event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode );
|
||||||
GetEventParameter( event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers );
|
GetEventParameter( event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers );
|
||||||
GetEventParameter( event, kEventParamMouseLocation, typeQDPoint, NULL, sizeof(Point), NULL, &point );
|
|
||||||
|
|
||||||
UInt32 message = (keyCode << 8) + charCode;
|
UInt32 message = (keyCode << 8) + charCode;
|
||||||
switch ( GetEventKind( event ) )
|
switch ( GetEventKind( event ) )
|
||||||
@@ -346,7 +344,7 @@ static pascal OSStatus KeyboardEventHandler( EventHandlerCallRef handler , Event
|
|||||||
WXEVENTHANDLERCALLREF formerHandler = wxTheApp->MacGetCurrentEventHandlerCallRef() ;
|
WXEVENTHANDLERCALLREF formerHandler = wxTheApp->MacGetCurrentEventHandlerCallRef() ;
|
||||||
wxTheApp->MacSetCurrentEvent( event , handler ) ;
|
wxTheApp->MacSetCurrentEvent( event , handler ) ;
|
||||||
if ( /* focus && */ wxTheApp->MacSendKeyDownEvent(
|
if ( /* focus && */ wxTheApp->MacSendKeyDownEvent(
|
||||||
focus , message , modifiers , when , point.h , point.v , uniChar[0] ) )
|
focus , message , modifiers , when , uniChar[0] ) )
|
||||||
{
|
{
|
||||||
result = noErr ;
|
result = noErr ;
|
||||||
}
|
}
|
||||||
@@ -356,7 +354,7 @@ static pascal OSStatus KeyboardEventHandler( EventHandlerCallRef handler , Event
|
|||||||
|
|
||||||
case kEventRawKeyUp :
|
case kEventRawKeyUp :
|
||||||
if ( /* focus && */ wxTheApp->MacSendKeyUpEvent(
|
if ( /* focus && */ wxTheApp->MacSendKeyUpEvent(
|
||||||
focus , message , modifiers , when , point.h , point.v , uniChar[0] ) )
|
focus , message , modifiers , when , uniChar[0] ) )
|
||||||
{
|
{
|
||||||
result = noErr ;
|
result = noErr ;
|
||||||
}
|
}
|
||||||
@@ -370,8 +368,6 @@ static pascal OSStatus KeyboardEventHandler( EventHandlerCallRef handler , Event
|
|||||||
event.m_rawControlDown = modifiers & controlKey;
|
event.m_rawControlDown = modifiers & controlKey;
|
||||||
event.m_altDown = modifiers & optionKey;
|
event.m_altDown = modifiers & optionKey;
|
||||||
event.m_controlDown = event.m_metaDown = modifiers & cmdKey;
|
event.m_controlDown = event.m_metaDown = modifiers & cmdKey;
|
||||||
event.m_x = point.h;
|
|
||||||
event.m_y = point.v;
|
|
||||||
|
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
event.m_uniChar = uniChar[0] ;
|
event.m_uniChar = uniChar[0] ;
|
||||||
|
@@ -103,7 +103,6 @@ static pascal OSStatus wxWebKitKeyEventHandler(EventHandlerCallRef handler,
|
|||||||
|
|
||||||
UInt32 keyCode ;
|
UInt32 keyCode ;
|
||||||
UInt32 modifiers ;
|
UInt32 modifiers ;
|
||||||
Point point ;
|
|
||||||
UInt32 when = EventTimeToTicks( GetEventTime( event ) ) ;
|
UInt32 when = EventTimeToTicks( GetEventTime( event ) ) ;
|
||||||
|
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
@@ -140,8 +139,6 @@ static pascal OSStatus wxWebKitKeyEventHandler(EventHandlerCallRef handler,
|
|||||||
sizeof(UInt32), NULL, &keyCode );
|
sizeof(UInt32), NULL, &keyCode );
|
||||||
GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, NULL,
|
GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, NULL,
|
||||||
sizeof(UInt32), NULL, &modifiers );
|
sizeof(UInt32), NULL, &modifiers );
|
||||||
GetEventParameter(event, kEventParamMouseLocation, typeQDPoint, NULL,
|
|
||||||
sizeof(Point), NULL, &point );
|
|
||||||
|
|
||||||
UInt32 message = (keyCode << 8) + charCode;
|
UInt32 message = (keyCode << 8) + charCode;
|
||||||
switch ( GetEventKind( event ) )
|
switch ( GetEventKind( event ) )
|
||||||
@@ -155,7 +152,7 @@ static pascal OSStatus wxWebKitKeyEventHandler(EventHandlerCallRef handler,
|
|||||||
|
|
||||||
wxTheApp->MacSetCurrentEvent( event , handler ) ;
|
wxTheApp->MacSetCurrentEvent( event , handler ) ;
|
||||||
if ( /* focus && */ wxTheApp->MacSendKeyDownEvent(
|
if ( /* focus && */ wxTheApp->MacSendKeyDownEvent(
|
||||||
focus, message, modifiers, when, point.h, point.v, uniChar[0]))
|
focus, message, modifiers, when, uniChar[0]))
|
||||||
{
|
{
|
||||||
result = noErr ;
|
result = noErr ;
|
||||||
}
|
}
|
||||||
@@ -165,7 +162,7 @@ static pascal OSStatus wxWebKitKeyEventHandler(EventHandlerCallRef handler,
|
|||||||
|
|
||||||
case kEventRawKeyUp :
|
case kEventRawKeyUp :
|
||||||
if ( /* focus && */ wxTheApp->MacSendKeyUpEvent(
|
if ( /* focus && */ wxTheApp->MacSendKeyUpEvent(
|
||||||
focus , message , modifiers , when , point.h , point.v , uniChar[0] ) )
|
focus , message , modifiers , when , uniChar[0] ) )
|
||||||
{
|
{
|
||||||
result = noErr ;
|
result = noErr ;
|
||||||
}
|
}
|
||||||
@@ -179,8 +176,6 @@ static pascal OSStatus wxWebKitKeyEventHandler(EventHandlerCallRef handler,
|
|||||||
event.m_controlDown = modifiers & controlKey;
|
event.m_controlDown = modifiers & controlKey;
|
||||||
event.m_altDown = modifiers & optionKey;
|
event.m_altDown = modifiers & optionKey;
|
||||||
event.m_metaDown = modifiers & cmdKey;
|
event.m_metaDown = modifiers & cmdKey;
|
||||||
event.m_x = point.h;
|
|
||||||
event.m_y = point.v;
|
|
||||||
|
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
event.m_uniChar = uniChar[0] ;
|
event.m_uniChar = uniChar[0] ;
|
||||||
|
Reference in New Issue
Block a user