# if defined(WXMAKINGDLL_CORE)
# include <mach-o/dyld.h>
# endif
+// include hid keyboard
+# include "wx/mac/carbon/private/hid.h"
#else
# include <Sound.h>
# include <Threads.h>
long wxApp::s_macExitMenuItemId = wxID_EXIT ;
wxString wxApp::s_macHelpMenuTitleName = wxT("&Help") ;
+#ifdef __DARWIN__
+ wxHIDKeyboard* wxApp::s_macHIDKeyboard = NULL;
+#endif
+
// Normally we're not a plugin
bool wxApp::sm_isEmbedded = false;
//----------------------------------------------------------------------
if ( type )
{
- wxMenuEvent wxevent(type, cmd);
+ wxMenuEvent wxevent(type, cmd, menu);
wxevent.SetEventObject(menu);
wxEvtHandler* handler = menu->GetEventHandler();
result = wxMacAppMenuEventHandler( handler , event , data ) ;
break ;
case kEventClassMouse :
- result = wxMacTopLevelMouseEventHandler( handler , event , NULL ) ;
+ {
+ wxMacCarbonEvent cEvent( event ) ;
+
+ WindowRef window ;
+ Point screenMouseLocation = cEvent.GetParameter<Point>(kEventParamMouseLocation) ;
+ ::FindWindow(screenMouseLocation, &window);
+ // only send this event in case it had not already been sent to a tlw, as we get
+ // double events otherwise (in case event.skip) was called
+ if ( window == NULL )
+ result = wxMacTopLevelMouseEventHandler( handler , event , NULL ) ;
+ }
break ;
case kEventClassAppleEvent :
{
WXIMPORT char std::__throws_bad_alloc ;
#endif
+#if __WXDEBUG__
+
pascal static void wxMacAssertOutputHandler(OSType componentSignature, UInt32 options,
const char *assertionString, const char *exceptionLabelString,
const char *errorString, const char *fileName, long lineNumber, void *value, ConstStr255Param outputMsg)
#endif
}
+#endif //__WXDEBUG__
+
bool wxApp::Initialize(int& argc, wxChar **argv)
{
// Mac-specific
SetEventMask( everyEvent ) ;
UMAShowWatchCursor() ;
-#if defined(WXMAKINGDLL_CORE) && defined(__DARWIN__)
- // open shared library resources from here since we don't have
- // __wxinitialize in Mach-O shared libraries
- wxStAppResource::OpenSharedLibraryResource(NULL);
-#endif
-
#ifndef __DARWIN__
# if __option(profile)
ProfilerInit( collectDetailed, bestTimeBase , 40000 , 50 ) ;
ProfilerDump( (StringPtr)"\papp.prof" ) ;
ProfilerTerm() ;
# endif
-#endif
-#if defined(WXMAKINGDLL_CORE) && defined(__DARWIN__)
- // close shared library resources from here since we don't have
- // __wxterminate in Mach-O shared libraries
- wxStAppResource::CloseSharedLibraryResource();
+ // clean up HID Keyboard
+ if (s_macHIDKeyboard)
+ delete s_macHIDKeyboard;
#endif
UMACleanupToolbox() ;
}
}
-bool wxGetKeyState(wxKeyCode key) //virtual key code if < 10.2.x, else see below
+bool wxGetKeyState(const wxKeyCode& key) //virtual key code if < 10.2.x, else see below
{
-//#ifdef __DARWIN__
-// wxHIDKeyboard keyboard;
-// return keyboard.IsActive(key);
-//#else
-// TODO: Have it use HID Manager on OSX...
+#ifdef __DARWIN__
+ // Startup HID keyboard for getting key codes on DARWIN
+ if (!wxApp::s_macHIDKeyboard)
+ {
+ wxApp::s_macHIDKeyboard = new wxHIDKeyboard();
+ wxApp::s_macHIDKeyboard->Create();
+ }
+
+ return wxApp::s_macHIDKeyboard->IsActive(key);
+#else
//if OS X > 10.2 (i.e. 10.2.x)
//a known apple bug prevents the system from determining led
//states with GetKeys... can only determine caps lock led
// KeyMapByteArray keymap;
// GetKeys((BigEndianLong*)keymap);
// return !!(BitTst(keymap, (sizeof(KeyMapByteArray)*8) - iKey));
-//#endif
+#endif
}