#include <wx/clipbrd.h>
#include <wx/mimetype.h>
+#include <wx/image.h>
//----------------------------------------------------------------------
DeletePendingObjects();
bool initialized = wxTopLevelWindows.GetCount() != 0;
-#ifdef __WXGTK__
- m_initialized = initialized;
-#endif
if (initialized) {
if ( m_exitOnFrameDelete == Later ) {
#endif
-/*static*/
-bool wxPyApp::GetMacDefaultEncodingIsPC() {
-#ifdef __WXMAC__
- return s_macDefaultEncodingIsPC;
-#else
- return 0;
-#endif
-}
-
/*static*/
bool wxPyApp::GetMacSupportPCMenuShortcuts() {
#ifdef __WXMAC__
#endif
}
-/*static*/
-void wxPyApp::SetMacDefaultEncodingIsPC(bool val) {
-#ifdef __WXMAC__
- s_macDefaultEncodingIsPC = val;
-#endif
-}
-
/*static*/
void wxPyApp::SetMacSupportPCMenuShortcuts(bool val) {
#ifdef __WXMAC__
#endif
// Ensure that the build options in the DLL (or whatever) match this build
- wxApp::CheckBuildOptions(wxBuildOptions());
+ wxApp::CheckBuildOptions(WX_BUILD_OPTIONS_SIGNATURE, "wxPython");
// Create an exception object to use for wxASSERTions
wxPyAssertionError = PyErr_NewException("wxPython.wxc.wxPyAssertionError",
goto error;
}
-#ifdef __WXGTK__
- wxTheApp->m_initialized = (wxTopLevelWindows.GetCount() > 0);
-#endif
-
Py_DECREF(result);
Py_DECREF(pyint);
Py_INCREF(Py_None);
PyObject* result;
PyObject* arg;
PyObject* tuple;
-
+ bool checkSkip = FALSE;
wxPyBeginBlockThreads();
wxString className = event.GetClassInfo()->GetClassName();
- if (className == wxT("wxPyEvent"))
- arg = ((wxPyEvent*)&event)->GetSelf();
- else if (className == wxT("wxPyCommandEvent"))
- arg = ((wxPyCommandEvent*)&event)->GetSelf();
+ // If the event is one of these types then pass the original
+ // event object instead of the one passed to us.
+ if ( className == wxT("wxPyEvent") ) {
+ arg = ((wxPyEvent*)&event)->GetSelf();
+ checkSkip = ((wxPyEvent*)&event)->GetCloned();
+ }
+ else if ( className == wxT("wxPyCommandEvent") ) {
+ arg = ((wxPyCommandEvent*)&event)->GetSelf();
+ checkSkip = ((wxPyCommandEvent*)&event)->GetCloned();
+ }
else {
arg = wxPyConstructObject((void*)&event, className);
}
+ // Call the event handler, passing the event object
tuple = PyTuple_New(1);
- PyTuple_SET_ITEM(tuple, 0, arg);
+ PyTuple_SET_ITEM(tuple, 0, arg); // steals ref to arg
result = PyEval_CallObject(func, tuple);
- Py_DECREF(tuple);
- if (result) {
- Py_DECREF(result);
+ if ( result ) {
+ Py_DECREF(result); // result is ignored, but we still need to decref it
PyErr_Clear(); // Just in case...
} else {
PyErr_Print();
}
+
+ if ( checkSkip ) {
+ // if the event object was one of our special types and
+ // it had been cloned, then we need to extract the Skipped
+ // value from the original and set it in the clone.
+ result = PyObject_CallMethod(arg, "GetSkipped", "");
+ if ( result ) {
+ event.Skip(PyInt_AsLong(result));
+ Py_DECREF(result);
+ } else {
+ PyErr_Print();
+ }
+ }
+
+ Py_DECREF(tuple);
wxPyEndBlockThreads();
}
return (long)win->GetHandle();
#endif
+#ifdef __WXAC__
+ return (long)win->GetHandle();
+#endif
+
// Find and return the actual X-Window.
#ifdef __WXGTK__
if (win->m_wxwindow) {