diff --git a/wxPython/src/html.i b/wxPython/src/html.i
index 86609a3fd6..970911807b 100644
--- a/wxPython/src/html.i
+++ b/wxPython/src/html.i
@@ -329,15 +329,17 @@ public:
// First, make a new instance of the tag handler
wxPyBeginBlockThreads();
- PyObject* arg = Py_BuildValue("()");
- PyObject* obj = PyInstance_New(m_tagHandlerClass, arg, NULL);
+ PyObject* arg = PyTuple_New(0);
+ PyObject* obj = PyObject_CallObject(m_tagHandlerClass, arg);
Py_DECREF(arg);
- wxPyEndBlockThreads();
-
+
// now figure out where it's C++ object is...
wxPyHtmlWinTagHandler* thPtr;
- if (! wxPyConvertSwigPtr(obj, (void **)&thPtr, wxT("wxPyHtmlWinTagHandler")))
+ if (! wxPyConvertSwigPtr(obj, (void **)&thPtr, wxT("wxPyHtmlWinTagHandler"))) {
+ wxPyEndBlockThreads();
return;
+ }
+ wxPyEndBlockThreads();
// add it,
parser->AddTagHandler(thPtr);
diff --git a/wxPython/src/msw/html_wrap.cpp b/wxPython/src/msw/html_wrap.cpp
index a2f15dc94a..ad01de3dec 100644
--- a/wxPython/src/msw/html_wrap.cpp
+++ b/wxPython/src/msw/html_wrap.cpp
@@ -372,15 +372,17 @@ public:
// First, make a new instance of the tag handler
wxPyBeginBlockThreads();
- PyObject* arg = Py_BuildValue("()");
- PyObject* obj = PyInstance_New(m_tagHandlerClass, arg, NULL);
+ PyObject* arg = PyTuple_New(0);
+ PyObject* obj = PyObject_CallObject(m_tagHandlerClass, arg);
Py_DECREF(arg);
- wxPyEndBlockThreads();
-
+
// now figure out where it's C++ object is...
wxPyHtmlWinTagHandler* thPtr;
- if (! wxPyConvertSwigPtr(obj, (void **)&thPtr, wxT("wxPyHtmlWinTagHandler")))
+ if (! wxPyConvertSwigPtr(obj, (void **)&thPtr, wxT("wxPyHtmlWinTagHandler"))) {
+ wxPyEndBlockThreads();
return;
+ }
+ wxPyEndBlockThreads();
// add it,
parser->AddTagHandler(thPtr);
diff --git a/wxPython/wx/lib/wxpTag.py b/wxPython/wx/lib/wxpTag.py
index 1981f5b02d..8dbb7109d4 100644
--- a/wxPython/wx/lib/wxpTag.py
+++ b/wxPython/wx/lib/wxpTag.py
@@ -100,14 +100,17 @@ PARAMTAG = 'PARAM'
class wxpTagHandler(wxHtmlWinTagHandler):
def __init__(self):
+ print 'wxpTagHandler'
wxHtmlWinTagHandler.__init__(self)
self.ctx = None
def GetSupportedTags(self):
+ print 'wxpTagHandler.GetSupportedTags'
return WXPTAG+','+PARAMTAG
def HandleTag(self, tag):
+ print 'wxpTagHandler.HandleTag'
name = tag.GetName()
if name == WXPTAG:
return self.HandleWxpTag(tag)
@@ -136,7 +139,7 @@ class wxpTagHandler(wxHtmlWinTagHandler):
className = tag.GetParam('CLASS')
self.ctx.classObj = getattr(self.ctx.classMod, className)
- if type(self.ctx.classObj) != types.ClassType:
+ if type(self.ctx.classObj) not in [ types.ClassType, types.TypeType]:
raise TypeError, "WXP tag attribute CLASS must name a class"
# now look for width and height