4
4
// Author: Stefan Csomor
6
6
// Created: 1998-01-01
7
// RCS-ID: $Id: app.cpp,v 1.228.4.2 2007/04/21 23:17:26 KO Exp $
7
// RCS-ID: $Id: app.cpp 48940 2007-09-25 23:14:44Z RD $
8
8
// Copyright: (c) Stefan Csomor
9
9
// Licence: wxWindows licence
10
10
/////////////////////////////////////////////////////////////////////////////
1101
1106
// either events to the threads other than main or events posted with
1102
1107
// wxPostEvent() functions
1103
1108
wxMacProcessNotifierAndPendingEvents();
1109
#ifndef __WXUNIVERSAL__
1105
1110
if (!wxMenuBar::MacGetInstalledMenuBar() && wxMenuBar::MacGetCommonMenuBar())
1106
1111
wxMenuBar::MacGetCommonMenuBar()->MacInstallMenuBar();
1109
1115
void wxApp::WakeUpIdle()
1165
// Yielding from a non-gui thread needs to bail out, otherwise we end up
1166
// possibly sending events in the thread too.
1167
if ( !wxThread::IsMain() )
1171
#endif // wxUSE_THREADS
1158
1173
s_inYield = true;
1160
1175
// by definition yield should handle all non-processed events
1627
1643
// control interferes with some built-in keys like pgdown, return etc. therefore we remove the controlKey modifier
1628
1644
// and look at the character after
1646
// TODO new implementation using TextInputSources
1629
1648
UInt32 state = 0;
1630
1649
UInt32 keyInfo = KeyTranslate((Ptr)GetScriptManagerVariable(smKCHRCache), ( modifiers & (~(controlKey | shiftKey | optionKey))) | keycode, &state);
1631
1650
keychar = short(keyInfo & charCodeMask);
1634
1654
long keyval = wxMacTranslateKey(keychar, keycode) ;
1635
1655
if ( keyval == keychar && ( event.GetEventType() == wxEVT_KEY_UP || event.GetEventType() == wxEVT_KEY_DOWN ) )
1636
1656
keyval = wxToupper( keyval ) ;
1638
// Check for NUMPAD keys
1639
if (keyval >= '0' && keyval <= '9' && keycode >= 82 && keycode <= 92)
1641
keyval = (keyval - '0') + WXK_NUMPAD0;
1643
else if (keycode >= 67 && keycode <= 81)
1648
keyval = WXK_NUMPAD_ENTER;
1652
keyval = WXK_NUMPAD_EQUAL;
1656
keyval = WXK_NUMPAD_MULTIPLY;
1660
keyval = WXK_NUMPAD_DIVIDE;
1664
keyval = WXK_NUMPAD_SUBTRACT;
1668
keyval = WXK_NUMPAD_ADD;
1672
keyval = WXK_NUMPAD_DECIMAL;
1658
// Check for NUMPAD keys. For KEY_UP/DOWN events we need to use the
1659
// WXK_NUMPAD constants, but for the CHAR event we want to use the
1660
// standard ascii values
1661
if ( event.GetEventType() != wxEVT_CHAR )
1663
if ( keyval >= '0' && keyval <= '9' && keycode >= 82 && keycode <= 92 )
1665
keyval = (keyval - '0') + WXK_NUMPAD0;
1667
else if (keycode >= 65 && keycode <= 81)
1672
keyval = WXK_NUMPAD_ENTER;
1676
keyval = WXK_NUMPAD_EQUAL;
1680
keyval = WXK_NUMPAD_MULTIPLY;
1684
keyval = WXK_NUMPAD_DIVIDE;
1688
keyval = WXK_NUMPAD_SUBTRACT;
1692
keyval = WXK_NUMPAD_ADD;
1696
keyval = WXK_NUMPAD_DECIMAL;
1680
1704
event.m_shiftDown = modifiers & shiftKey;