]> git.saurik.com Git - wxWidgets.git/commitdiff
re-enable wxDrawWindowOnDC
authorRobin Dunn <robin@alldunn.com>
Sat, 19 Feb 2005 23:08:26 +0000 (23:08 +0000)
committerRobin Dunn <robin@alldunn.com>
Sat, 19 Feb 2005 23:08:26 +0000 (23:08 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/misc/drawwidget.py
wxPython/src/__misc_rename.i
wxPython/src/_misc.i

index 23557594faa91023217e1082787a0b9df26a01f6..f8185ed1c4c553579f7885a9ecb8479eeccfc89d 100644 (file)
@@ -15,6 +15,7 @@ testItems = [
     "GenericDirCtrl",
     "ListBox",
     "ListCtrl",
+    "ListCtrl With GridLines",
     "RadioBox",
     "RadioButton",
     "ScrollBar",
@@ -103,9 +104,9 @@ class Frame(wx.Frame):
         widget.Update()
         self.Update()
         
-        self.GetBMP(1)
+        ##self.GetBMP(1)
         self.GetBMP(2)
-        self.GetBMP(4)
+        ##self.GetBMP(4)
 
         # make it visible again for the user to compare
         widget.SetPosition(visiblePos)
@@ -125,8 +126,9 @@ class Frame(wx.Frame):
             wdc = wx.WindowDC(w)
             dc.Blit(0,0, sz.width, sz.height, wdc, 0, 0)
         else:            
-            wx.DrawWindowOnDC(w, dc, method)
-
+            ##wx.DrawWindowOnDC(w, dc, method)
+            wx.DrawWindowOnDC(w, dc)
+            
         dc.SelectObject(wx.NullBitmap)
         bmp.SetMaskColour(maskClr)
         self.right.SetBMP(bmp, method)
@@ -181,8 +183,11 @@ class Frame(wx.Frame):
         w.SetSelection(2)        
         self.DoWidget(w)
     
-    def TestListCtrl(self, p):
-        w = wx.ListCtrl(p, -1, size=(250, 100), style=wx.LC_REPORT)
+    def TestListCtrl(self, p, useGridLines=False):
+        style=wx.LC_REPORT
+        if useGridLines:
+            style = style | wx.LC_HRULES | wx.LC_VRULES
+        w = wx.ListCtrl(p, -1, size=(250, 100), style=style)
         w.InsertColumn(0, "Col 1")
         w.InsertColumn(1, "Col 2")
         w.InsertColumn(2, "Col 3")
@@ -191,7 +196,10 @@ class Frame(wx.Frame):
             w.SetStringItem(x, 1, str(x))
             w.SetStringItem(x, 2, str(x))
         self.DoWidget(w)
-    
+
+    def TestListCtrl_With_GridLines(self, p):
+        self.TestListCtrl(p, True)
+            
     def TestRadioBox(self, p):
         w = wx.RadioBox(p, -1, "RadioBox",
                         choices=testChoices2, majorDimension=3)
index dda9e983edee7c36332111c0367fe0b12cf7bc5b..ce8883a9cd7068a64d3cfa75419191a1577b492d 100644 (file)
 %rename(StopWatch)                          wxStopWatch;
 %rename(FileHistory)                        wxFileHistory;
 %rename(SingleInstanceChecker)              wxSingleInstanceChecker;
+%rename(DrawWindowOnDC)                     wxDrawWindowOnDC;
 %rename(TipProvider)                        wxTipProvider;
 %rename(PyTipProvider)                      wxPyTipProvider;
 %rename(ShowTip)                            wxShowTip;
index ef64c3ef7b5e67f0b6a45e7082faf2638cbc1065..291fca6802986766b4fe6d66dcc6b6b86e399743 100644 (file)
@@ -209,8 +209,6 @@ public:
 //---------------------------------------------------------------------------
 // Experimental...
 
-#if 0
-
 %{
 #ifdef __WXMSW__
 #include <wx/msw/private.h>
@@ -221,10 +219,14 @@ public:
 
 %inline %{
 
-void wxDrawWindowOnDC(wxWindow* window, const wxDC& dc, int method)
+bool wxDrawWindowOnDC(wxWindow* window, const wxDC& dc
+#if 0
+                      , int method
+#endif
+    )
 {
 #ifdef __WXMSW__
-
+#if 0
     switch (method)
     {
         case 1:
@@ -236,11 +238,14 @@ void wxDrawWindowOnDC(wxWindow* window, const wxDC& dc, int method)
             break;
 
         case 2:
-            // This one works much better, except for on XP.  On Win2k nearly
-            // all widgets and their children are captured correctly[**].  On
-            // XP with Themes activated most native widgets draw only
-            // partially, if at all.  Without themes it works just like on
-            // Win2k.
+#endif
+            // This one works much better, nearly all widgets and their
+            // children are captured correctly[**].  Prior to the big
+            // background erase changes that Vadim did in 2004-2005 this
+            // method failed badly on XP with Themes activated, most native
+            // widgets draw only partially, if at all.  Without themes it
+            // worked just like on Win2k.  After those changes this method
+            // works very well.
             //
             // ** For example the radio buttons in a wxRadioBox are not its
             // children by default, but you can capture it via the panel
@@ -248,6 +253,8 @@ void wxDrawWindowOnDC(wxWindow* window, const wxDC& dc, int method)
             ::SendMessage(GetHwndOf(window), WM_PRINT, (long)GetHdcOf(dc),
                           PRF_CLIENT | PRF_NONCLIENT | PRF_CHILDREN |
                           PRF_ERASEBKGND | PRF_OWNED );
+            return true;
+#if 0
             break;
 
         case 3:
@@ -292,12 +299,14 @@ void wxDrawWindowOnDC(wxWindow* window, const wxDC& dc, int method)
                               PRF_ERASEBKGND | PRF_OWNED );
             }
     }
-#endif
+#endif  // 0
+#else
+    return false;
+#endif  // __WXMSW__    
 }
 
 %}
 
-#endif
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------