centralized key handling, control key handling
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16653 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
d1aba6dbbd
commit
12e049f6f0
130
src/mac/app.cpp
130
src/mac/app.cpp
@ -1687,34 +1687,34 @@ long wxMacTranslateKey(unsigned char key, unsigned char code)
|
|||||||
long retval = key ;
|
long retval = key ;
|
||||||
switch (key)
|
switch (key)
|
||||||
{
|
{
|
||||||
case 0x01 :
|
case kHomeCharCode :
|
||||||
retval = WXK_HOME;
|
retval = WXK_HOME;
|
||||||
break;
|
break;
|
||||||
case 0x03 :
|
case kEnterCharCode :
|
||||||
retval = WXK_RETURN;
|
retval = WXK_RETURN;
|
||||||
break;
|
break;
|
||||||
case 0x04 :
|
case kEndCharCode :
|
||||||
retval = WXK_END;
|
retval = WXK_END;
|
||||||
break;
|
break;
|
||||||
case 0x05 :
|
case kHelpCharCode :
|
||||||
retval = WXK_HELP;
|
retval = WXK_HELP;
|
||||||
break;
|
break;
|
||||||
case 0x08 :
|
case kBackspaceCharCode :
|
||||||
retval = WXK_BACK;
|
retval = WXK_BACK;
|
||||||
break;
|
break;
|
||||||
case 0x09 :
|
case kTabCharCode :
|
||||||
retval = WXK_TAB;
|
retval = WXK_TAB;
|
||||||
break;
|
break;
|
||||||
case 0x0b :
|
case kPageUpCharCode :
|
||||||
retval = WXK_PAGEUP;
|
retval = WXK_PAGEUP;
|
||||||
break;
|
break;
|
||||||
case 0x0c :
|
case kPageDownCharCode :
|
||||||
retval = WXK_PAGEDOWN;
|
retval = WXK_PAGEDOWN;
|
||||||
break;
|
break;
|
||||||
case 0x0d :
|
case kReturnCharCode :
|
||||||
retval = WXK_RETURN;
|
retval = WXK_RETURN;
|
||||||
break;
|
break;
|
||||||
case 0x10 :
|
case kFunctionKeyCharCode :
|
||||||
{
|
{
|
||||||
switch( code )
|
switch( code )
|
||||||
{
|
{
|
||||||
@ -1766,22 +1766,22 @@ long wxMacTranslateKey(unsigned char key, unsigned char code)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break ;
|
break ;
|
||||||
case 0x1b :
|
case kEscapeCharCode :
|
||||||
retval = WXK_ESCAPE ;
|
retval = WXK_ESCAPE ;
|
||||||
break ;
|
break ;
|
||||||
case 0x1c :
|
case kLeftArrowCharCode :
|
||||||
retval = WXK_LEFT ;
|
retval = WXK_LEFT ;
|
||||||
break ;
|
break ;
|
||||||
case 0x1d :
|
case kRightArrowCharCode :
|
||||||
retval = WXK_RIGHT ;
|
retval = WXK_RIGHT ;
|
||||||
break ;
|
break ;
|
||||||
case 0x1e :
|
case kUpArrowCharCode :
|
||||||
retval = WXK_UP ;
|
retval = WXK_UP ;
|
||||||
break ;
|
break ;
|
||||||
case 0x1f :
|
case kDownArrowCharCode :
|
||||||
retval = WXK_DOWN ;
|
retval = WXK_DOWN ;
|
||||||
break ;
|
break ;
|
||||||
case 0x7F :
|
case kDeleteCharCode :
|
||||||
retval = WXK_DELETE ;
|
retval = WXK_DELETE ;
|
||||||
default:
|
default:
|
||||||
break ;
|
break ;
|
||||||
@ -1803,32 +1803,42 @@ void wxApp::MacHandleKeyDownEvent( WXEVENTREF evr )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
short keycode ;
|
wxWindow* focus = wxWindow::FindFocus() ;
|
||||||
short keychar ;
|
|
||||||
keychar = short(ev->message & charCodeMask);
|
if ( MacSendKeyDownEvent( focus , ev->message , ev->modifiers , ev->when , ev->where.h , ev->where.v ) == false )
|
||||||
keycode = short(ev->message & keyCodeMask) >> 8 ;
|
|
||||||
wxWindow* focus = wxWindow::FindFocus() ;
|
|
||||||
// it is wxWindows Convention to have Ctrl Key Combinations at ASCII char value
|
|
||||||
if ( (ev->modifiers & controlKey) && keychar >= 0 && keychar < 0x20 )
|
|
||||||
{
|
|
||||||
keychar += 0x40 ;
|
|
||||||
}
|
|
||||||
long keyval = wxMacTranslateKey(keychar, keycode) ;
|
|
||||||
|
|
||||||
if ( MacSendKeyDownEvent( focus , keyval , ev->modifiers , ev->when , ev->where.h , ev->where.v ) == false )
|
|
||||||
{
|
{
|
||||||
// has not been handled -> perform default
|
// has not been handled -> perform default
|
||||||
wxControl* control = wxDynamicCast( focus , wxControl ) ;
|
wxControl* control = wxDynamicCast( focus , wxControl ) ;
|
||||||
if ( control && control->GetMacControl() != NULL )
|
if ( control && control->GetMacControl() != NULL )
|
||||||
{
|
{
|
||||||
|
short keycode ;
|
||||||
|
short keychar ;
|
||||||
|
keychar = short(ev->message & charCodeMask);
|
||||||
|
keycode = short(ev->message & keyCodeMask) >> 8 ;
|
||||||
::HandleControlKey( (ControlHandle) control->GetMacControl() , keycode , keychar , ev->modifiers ) ;
|
::HandleControlKey( (ControlHandle) control->GetMacControl() , keycode , keychar , ev->modifiers ) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keyval , long modifiers , long when , short wherex , short wherey )
|
bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey )
|
||||||
{
|
{
|
||||||
|
short keycode ;
|
||||||
|
short keychar ;
|
||||||
|
keychar = short(keymessage & charCodeMask);
|
||||||
|
keycode = short(keymessage & keyCodeMask) >> 8 ;
|
||||||
|
|
||||||
|
if ( (modifiers & controlKey) )
|
||||||
|
{
|
||||||
|
// control interferes with some built-in keys like pgdown, return etc. therefore we remove the controlKey modifier
|
||||||
|
// and look at the character after
|
||||||
|
UInt32 state = 0;
|
||||||
|
UInt32 keyInfo = KeyTranslate((Ptr)GetScriptManagerVariable(smKCHRCache), ( modifiers & (~controlKey)) | keycode, &state);
|
||||||
|
keychar = short(keyInfo & charCodeMask);
|
||||||
|
keycode = short(keyInfo & keyCodeMask) >> 8 ;
|
||||||
|
}
|
||||||
|
long keyval = wxMacTranslateKey(keychar, keycode) ;
|
||||||
|
|
||||||
wxKeyEvent event(wxEVT_KEY_DOWN);
|
wxKeyEvent event(wxEVT_KEY_DOWN);
|
||||||
bool handled = false ;
|
bool handled = false ;
|
||||||
event.m_shiftDown = modifiers & shiftKey;
|
event.m_shiftDown = modifiers & shiftKey;
|
||||||
@ -1870,6 +1880,7 @@ bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keyval , long modifiers
|
|||||||
{
|
{
|
||||||
event.Skip( FALSE ) ;
|
event.Skip( FALSE ) ;
|
||||||
event.SetEventType( wxEVT_CHAR ) ;
|
event.SetEventType( wxEVT_CHAR ) ;
|
||||||
|
// raw value again
|
||||||
event.m_keyCode = keyval ;
|
event.m_keyCode = keyval ;
|
||||||
|
|
||||||
handled = focus->GetEventHandler()->ProcessEvent( event ) ;
|
handled = focus->GetEventHandler()->ProcessEvent( event ) ;
|
||||||
@ -1942,25 +1953,27 @@ void wxApp::MacHandleKeyUpEvent( WXEVENTREF evr )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
short keycode ;
|
MacSendKeyUpEvent( wxWindow::FindFocus() , ev->message , ev->modifiers , ev->when , ev->where.h , ev->where.v ) ;
|
||||||
short keychar ;
|
|
||||||
keychar = short(ev->message & charCodeMask);
|
|
||||||
keycode = short(ev->message & keyCodeMask) >> 8 ;
|
|
||||||
// it is wxWindows Convention to have Ctrl Key Combinations at ASCII char value
|
|
||||||
if ( (ev->modifiers & controlKey) && keychar >= 0 && keychar < 0x20 )
|
|
||||||
{
|
|
||||||
keychar += 0x40 ;
|
|
||||||
}
|
|
||||||
long keyval = wxMacTranslateKey(keychar, keycode) ;
|
|
||||||
|
|
||||||
wxWindow* focus = wxWindow::FindFocus() ;
|
|
||||||
MacSendKeyUpEvent( focus , keyval , ev->modifiers , ev->when , ev->where.h , ev->where.v ) ;
|
|
||||||
// we don't have to do anything under classic here
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keyval , long modifiers , long when , short wherex , short wherey )
|
bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey )
|
||||||
{
|
{
|
||||||
|
short keycode ;
|
||||||
|
short keychar ;
|
||||||
|
keychar = short(keymessage & charCodeMask);
|
||||||
|
keycode = short(keymessage & keyCodeMask) >> 8 ;
|
||||||
|
if ( (modifiers & controlKey) )
|
||||||
|
{
|
||||||
|
// control interferes with some built-in keys like pgdown, return etc. therefore we remove the controlKey modifier
|
||||||
|
// and look at the character after
|
||||||
|
UInt32 state = 0;
|
||||||
|
UInt32 keyInfo = KeyTranslate((Ptr)GetScriptManagerVariable(smKCHRCache), ( modifiers & (~controlKey)) | keycode, &state);
|
||||||
|
keychar = short(keyInfo & charCodeMask);
|
||||||
|
keycode = short(keyInfo & keyCodeMask) >> 8 ;
|
||||||
|
}
|
||||||
|
long keyval = wxMacTranslateKey(keychar, keycode) ;
|
||||||
|
|
||||||
bool handled = false ;
|
bool handled = false ;
|
||||||
if ( focus )
|
if ( focus )
|
||||||
{
|
{
|
||||||
@ -1969,6 +1982,9 @@ bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keyval , long modifiers ,
|
|||||||
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;
|
||||||
|
if ( event.m_controlDown )
|
||||||
|
{
|
||||||
|
}
|
||||||
event.m_keyCode = wxToupper(keyval );
|
event.m_keyCode = wxToupper(keyval );
|
||||||
|
|
||||||
event.m_x = wherex;
|
event.m_x = wherex;
|
||||||
@ -2102,8 +2118,16 @@ void wxApp::MacHandleOSEvent( WXEVENTREF evr )
|
|||||||
|
|
||||||
wxWindow* currentMouseWindow = NULL ;
|
wxWindow* currentMouseWindow = NULL ;
|
||||||
|
|
||||||
wxWindow::MacGetWindowFromPoint( wxPoint( ev->where.h , ev->where.v ) ,
|
if (s_captureWindow )
|
||||||
¤tMouseWindow ) ;
|
{
|
||||||
|
currentMouseWindow = s_captureWindow ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
wxWindow::MacGetWindowFromPoint( wxPoint( ev->where.h , ev->where.v ) ,
|
||||||
|
¤tMouseWindow ) ;
|
||||||
|
}
|
||||||
|
|
||||||
if ( currentMouseWindow != wxWindow::s_lastMouseWindow )
|
if ( currentMouseWindow != wxWindow::s_lastMouseWindow )
|
||||||
{
|
{
|
||||||
wxMouseEvent event ;
|
wxMouseEvent event ;
|
||||||
@ -2143,8 +2167,18 @@ void wxApp::MacHandleOSEvent( WXEVENTREF evr )
|
|||||||
wxWindow::s_lastMouseWindow = currentMouseWindow ;
|
wxWindow::s_lastMouseWindow = currentMouseWindow ;
|
||||||
}
|
}
|
||||||
|
|
||||||
short windowPart = ::FindWindow(ev->where, &window);
|
short windowPart = inNoWindow ;
|
||||||
|
|
||||||
|
if ( s_captureWindow )
|
||||||
|
{
|
||||||
|
window = (WindowRef) s_captureWindow->MacGetRootWindow() ;
|
||||||
|
windowPart = inContent ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
windowPart = ::FindWindow(ev->where, &window);
|
||||||
|
}
|
||||||
|
|
||||||
switch (windowPart)
|
switch (windowPart)
|
||||||
{
|
{
|
||||||
case inContent :
|
case inContent :
|
||||||
|
@ -1687,34 +1687,34 @@ long wxMacTranslateKey(unsigned char key, unsigned char code)
|
|||||||
long retval = key ;
|
long retval = key ;
|
||||||
switch (key)
|
switch (key)
|
||||||
{
|
{
|
||||||
case 0x01 :
|
case kHomeCharCode :
|
||||||
retval = WXK_HOME;
|
retval = WXK_HOME;
|
||||||
break;
|
break;
|
||||||
case 0x03 :
|
case kEnterCharCode :
|
||||||
retval = WXK_RETURN;
|
retval = WXK_RETURN;
|
||||||
break;
|
break;
|
||||||
case 0x04 :
|
case kEndCharCode :
|
||||||
retval = WXK_END;
|
retval = WXK_END;
|
||||||
break;
|
break;
|
||||||
case 0x05 :
|
case kHelpCharCode :
|
||||||
retval = WXK_HELP;
|
retval = WXK_HELP;
|
||||||
break;
|
break;
|
||||||
case 0x08 :
|
case kBackspaceCharCode :
|
||||||
retval = WXK_BACK;
|
retval = WXK_BACK;
|
||||||
break;
|
break;
|
||||||
case 0x09 :
|
case kTabCharCode :
|
||||||
retval = WXK_TAB;
|
retval = WXK_TAB;
|
||||||
break;
|
break;
|
||||||
case 0x0b :
|
case kPageUpCharCode :
|
||||||
retval = WXK_PAGEUP;
|
retval = WXK_PAGEUP;
|
||||||
break;
|
break;
|
||||||
case 0x0c :
|
case kPageDownCharCode :
|
||||||
retval = WXK_PAGEDOWN;
|
retval = WXK_PAGEDOWN;
|
||||||
break;
|
break;
|
||||||
case 0x0d :
|
case kReturnCharCode :
|
||||||
retval = WXK_RETURN;
|
retval = WXK_RETURN;
|
||||||
break;
|
break;
|
||||||
case 0x10 :
|
case kFunctionKeyCharCode :
|
||||||
{
|
{
|
||||||
switch( code )
|
switch( code )
|
||||||
{
|
{
|
||||||
@ -1766,22 +1766,22 @@ long wxMacTranslateKey(unsigned char key, unsigned char code)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break ;
|
break ;
|
||||||
case 0x1b :
|
case kEscapeCharCode :
|
||||||
retval = WXK_ESCAPE ;
|
retval = WXK_ESCAPE ;
|
||||||
break ;
|
break ;
|
||||||
case 0x1c :
|
case kLeftArrowCharCode :
|
||||||
retval = WXK_LEFT ;
|
retval = WXK_LEFT ;
|
||||||
break ;
|
break ;
|
||||||
case 0x1d :
|
case kRightArrowCharCode :
|
||||||
retval = WXK_RIGHT ;
|
retval = WXK_RIGHT ;
|
||||||
break ;
|
break ;
|
||||||
case 0x1e :
|
case kUpArrowCharCode :
|
||||||
retval = WXK_UP ;
|
retval = WXK_UP ;
|
||||||
break ;
|
break ;
|
||||||
case 0x1f :
|
case kDownArrowCharCode :
|
||||||
retval = WXK_DOWN ;
|
retval = WXK_DOWN ;
|
||||||
break ;
|
break ;
|
||||||
case 0x7F :
|
case kDeleteCharCode :
|
||||||
retval = WXK_DELETE ;
|
retval = WXK_DELETE ;
|
||||||
default:
|
default:
|
||||||
break ;
|
break ;
|
||||||
@ -1803,32 +1803,42 @@ void wxApp::MacHandleKeyDownEvent( WXEVENTREF evr )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
short keycode ;
|
wxWindow* focus = wxWindow::FindFocus() ;
|
||||||
short keychar ;
|
|
||||||
keychar = short(ev->message & charCodeMask);
|
if ( MacSendKeyDownEvent( focus , ev->message , ev->modifiers , ev->when , ev->where.h , ev->where.v ) == false )
|
||||||
keycode = short(ev->message & keyCodeMask) >> 8 ;
|
|
||||||
wxWindow* focus = wxWindow::FindFocus() ;
|
|
||||||
// it is wxWindows Convention to have Ctrl Key Combinations at ASCII char value
|
|
||||||
if ( (ev->modifiers & controlKey) && keychar >= 0 && keychar < 0x20 )
|
|
||||||
{
|
|
||||||
keychar += 0x40 ;
|
|
||||||
}
|
|
||||||
long keyval = wxMacTranslateKey(keychar, keycode) ;
|
|
||||||
|
|
||||||
if ( MacSendKeyDownEvent( focus , keyval , ev->modifiers , ev->when , ev->where.h , ev->where.v ) == false )
|
|
||||||
{
|
{
|
||||||
// has not been handled -> perform default
|
// has not been handled -> perform default
|
||||||
wxControl* control = wxDynamicCast( focus , wxControl ) ;
|
wxControl* control = wxDynamicCast( focus , wxControl ) ;
|
||||||
if ( control && control->GetMacControl() != NULL )
|
if ( control && control->GetMacControl() != NULL )
|
||||||
{
|
{
|
||||||
|
short keycode ;
|
||||||
|
short keychar ;
|
||||||
|
keychar = short(ev->message & charCodeMask);
|
||||||
|
keycode = short(ev->message & keyCodeMask) >> 8 ;
|
||||||
::HandleControlKey( (ControlHandle) control->GetMacControl() , keycode , keychar , ev->modifiers ) ;
|
::HandleControlKey( (ControlHandle) control->GetMacControl() , keycode , keychar , ev->modifiers ) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keyval , long modifiers , long when , short wherex , short wherey )
|
bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey )
|
||||||
{
|
{
|
||||||
|
short keycode ;
|
||||||
|
short keychar ;
|
||||||
|
keychar = short(keymessage & charCodeMask);
|
||||||
|
keycode = short(keymessage & keyCodeMask) >> 8 ;
|
||||||
|
|
||||||
|
if ( (modifiers & controlKey) )
|
||||||
|
{
|
||||||
|
// control interferes with some built-in keys like pgdown, return etc. therefore we remove the controlKey modifier
|
||||||
|
// and look at the character after
|
||||||
|
UInt32 state = 0;
|
||||||
|
UInt32 keyInfo = KeyTranslate((Ptr)GetScriptManagerVariable(smKCHRCache), ( modifiers & (~controlKey)) | keycode, &state);
|
||||||
|
keychar = short(keyInfo & charCodeMask);
|
||||||
|
keycode = short(keyInfo & keyCodeMask) >> 8 ;
|
||||||
|
}
|
||||||
|
long keyval = wxMacTranslateKey(keychar, keycode) ;
|
||||||
|
|
||||||
wxKeyEvent event(wxEVT_KEY_DOWN);
|
wxKeyEvent event(wxEVT_KEY_DOWN);
|
||||||
bool handled = false ;
|
bool handled = false ;
|
||||||
event.m_shiftDown = modifiers & shiftKey;
|
event.m_shiftDown = modifiers & shiftKey;
|
||||||
@ -1870,6 +1880,7 @@ bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keyval , long modifiers
|
|||||||
{
|
{
|
||||||
event.Skip( FALSE ) ;
|
event.Skip( FALSE ) ;
|
||||||
event.SetEventType( wxEVT_CHAR ) ;
|
event.SetEventType( wxEVT_CHAR ) ;
|
||||||
|
// raw value again
|
||||||
event.m_keyCode = keyval ;
|
event.m_keyCode = keyval ;
|
||||||
|
|
||||||
handled = focus->GetEventHandler()->ProcessEvent( event ) ;
|
handled = focus->GetEventHandler()->ProcessEvent( event ) ;
|
||||||
@ -1942,25 +1953,27 @@ void wxApp::MacHandleKeyUpEvent( WXEVENTREF evr )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
short keycode ;
|
MacSendKeyUpEvent( wxWindow::FindFocus() , ev->message , ev->modifiers , ev->when , ev->where.h , ev->where.v ) ;
|
||||||
short keychar ;
|
|
||||||
keychar = short(ev->message & charCodeMask);
|
|
||||||
keycode = short(ev->message & keyCodeMask) >> 8 ;
|
|
||||||
// it is wxWindows Convention to have Ctrl Key Combinations at ASCII char value
|
|
||||||
if ( (ev->modifiers & controlKey) && keychar >= 0 && keychar < 0x20 )
|
|
||||||
{
|
|
||||||
keychar += 0x40 ;
|
|
||||||
}
|
|
||||||
long keyval = wxMacTranslateKey(keychar, keycode) ;
|
|
||||||
|
|
||||||
wxWindow* focus = wxWindow::FindFocus() ;
|
|
||||||
MacSendKeyUpEvent( focus , keyval , ev->modifiers , ev->when , ev->where.h , ev->where.v ) ;
|
|
||||||
// we don't have to do anything under classic here
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keyval , long modifiers , long when , short wherex , short wherey )
|
bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey )
|
||||||
{
|
{
|
||||||
|
short keycode ;
|
||||||
|
short keychar ;
|
||||||
|
keychar = short(keymessage & charCodeMask);
|
||||||
|
keycode = short(keymessage & keyCodeMask) >> 8 ;
|
||||||
|
if ( (modifiers & controlKey) )
|
||||||
|
{
|
||||||
|
// control interferes with some built-in keys like pgdown, return etc. therefore we remove the controlKey modifier
|
||||||
|
// and look at the character after
|
||||||
|
UInt32 state = 0;
|
||||||
|
UInt32 keyInfo = KeyTranslate((Ptr)GetScriptManagerVariable(smKCHRCache), ( modifiers & (~controlKey)) | keycode, &state);
|
||||||
|
keychar = short(keyInfo & charCodeMask);
|
||||||
|
keycode = short(keyInfo & keyCodeMask) >> 8 ;
|
||||||
|
}
|
||||||
|
long keyval = wxMacTranslateKey(keychar, keycode) ;
|
||||||
|
|
||||||
bool handled = false ;
|
bool handled = false ;
|
||||||
if ( focus )
|
if ( focus )
|
||||||
{
|
{
|
||||||
@ -1969,6 +1982,9 @@ bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keyval , long modifiers ,
|
|||||||
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;
|
||||||
|
if ( event.m_controlDown )
|
||||||
|
{
|
||||||
|
}
|
||||||
event.m_keyCode = wxToupper(keyval );
|
event.m_keyCode = wxToupper(keyval );
|
||||||
|
|
||||||
event.m_x = wherex;
|
event.m_x = wherex;
|
||||||
@ -2102,8 +2118,16 @@ void wxApp::MacHandleOSEvent( WXEVENTREF evr )
|
|||||||
|
|
||||||
wxWindow* currentMouseWindow = NULL ;
|
wxWindow* currentMouseWindow = NULL ;
|
||||||
|
|
||||||
wxWindow::MacGetWindowFromPoint( wxPoint( ev->where.h , ev->where.v ) ,
|
if (s_captureWindow )
|
||||||
¤tMouseWindow ) ;
|
{
|
||||||
|
currentMouseWindow = s_captureWindow ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
wxWindow::MacGetWindowFromPoint( wxPoint( ev->where.h , ev->where.v ) ,
|
||||||
|
¤tMouseWindow ) ;
|
||||||
|
}
|
||||||
|
|
||||||
if ( currentMouseWindow != wxWindow::s_lastMouseWindow )
|
if ( currentMouseWindow != wxWindow::s_lastMouseWindow )
|
||||||
{
|
{
|
||||||
wxMouseEvent event ;
|
wxMouseEvent event ;
|
||||||
@ -2143,8 +2167,18 @@ void wxApp::MacHandleOSEvent( WXEVENTREF evr )
|
|||||||
wxWindow::s_lastMouseWindow = currentMouseWindow ;
|
wxWindow::s_lastMouseWindow = currentMouseWindow ;
|
||||||
}
|
}
|
||||||
|
|
||||||
short windowPart = ::FindWindow(ev->where, &window);
|
short windowPart = inNoWindow ;
|
||||||
|
|
||||||
|
if ( s_captureWindow )
|
||||||
|
{
|
||||||
|
window = (WindowRef) s_captureWindow->MacGetRootWindow() ;
|
||||||
|
windowPart = inContent ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
windowPart = ::FindWindow(ev->where, &window);
|
||||||
|
}
|
||||||
|
|
||||||
switch (windowPart)
|
switch (windowPart)
|
||||||
{
|
{
|
||||||
case inContent :
|
case inContent :
|
||||||
|
Loading…
Reference in New Issue
Block a user