l4 = wxStaticText(self, -1, "Rich Text")
         t4 = wxTextCtrl(self, 40, "If supported by the native control, this is red, and this is a different font.",
-                        size=(200, 100), style=wxTE_MULTILINE|wxTE_RICH)
+                        size=(200, 100), style=wxTE_MULTILINE|wxTE_RICH2)
         t4.SetInsertionPoint(0)
         t4.SetStyle(44, 47, wxTextAttr("RED", "YELLOW"))
 
         points = t4.GetFont().GetPointSize()  # get the current size
         f = wxFont(points+3, wxROMAN, wxITALIC, wxBOLD, true)
-##         print 'a1', sys.getrefcount(f)
-##         t4.SetStyle(63, 77, wxTextAttr("BLUE", font=f))
         t4.SetStyle(63, 77, wxTextAttr("BLUE", wxNullColour, f))
-##         print 'a2', sys.getrefcount(f)
 
         bsizer = wxBoxSizer(wxVERTICAL)
         bsizer.Add(b, 0, wxGROW)
     def OnTestGetSelection(self, evt):
         start, end = self.tc.GetSelection()
         text = self.tc.GetValue()
-        # Looks like a bug here, but only if not wxTE_RICH...
-        if wxPlatform == "__WXMSW__":
+        if wxPlatform == "__WXMSW__":  # This is why GetStringSelection was added
             text = string.replace(text, '\n', '\r\n')
-        self.log.write("GetSelection(): (%d, %d)\n\tSelectedText: %s\n" %
-                       (start, end, repr(text[start:end])))
+        self.log.write("GetSelection(): (%d, %d)\n"
+                       "\tGetStringSelection(): %s\n"
+                       "\tSelectedText: %s\n" %
+                       (start, end,
+                        self.tc.GetStringSelection(),
+                        repr(text[start:end])))
 
 
 #---------------------------------------------------------------------------
 
 overview = """\
 """
+
+
+
+
+if __name__ == '__main__':
+    import sys,os
+    import run
+    run.main(['', os.path.basename(sys.argv[0])])
+