]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/prntbase.cpp
really show the window after creation (calling Show(TRUE) doesn't do it any more)
[wxWidgets.git] / src / common / prntbase.cpp
index c047f6d3cd258c909bccea78d6013b450d227a2b..afd9f47e2591949200a1e928457bc2efd00c9e2e 100644 (file)
@@ -184,9 +184,13 @@ void wxPrintout::GetPageInfo(int *minPage, int *maxPage, int *fromPage, int *toP
 * Preview canvas
 */
 
+// VZ: the current code doesn't refresh properly without
+//     wxFULL_REPAINT_ON_RESIZE, this must be fixed as otherwise we have
+//     really horrible flicker when resizing the preview frame, but without
+//     this style it simply doesn't work correctly at all...
 wxPreviewCanvas::wxPreviewCanvas(wxPrintPreviewBase *preview, wxWindow *parent,
                                  const wxPoint& pos, const wxSize& size, long style, const wxString& name):
-wxScrolledWindow(parent, -1, pos, size, style, name)
+wxScrolledWindow(parent, -1, pos, size, style | wxFULL_REPAINT_ON_RESIZE, name)
 {
     m_printPreview = preview;
 #ifdef __WXMAC__
@@ -496,23 +500,34 @@ void wxPreviewControlBar::CreateButtons()
 
 void wxPreviewControlBar::SetZoomControl(int zoom)
 {
-    wxChar buf[20];
-    wxSprintf( buf, wxT("%d%%"), zoom );
-
     if (m_zoomControl)
-        m_zoomControl->SetStringSelection(buf);
+    {
+        int n, count = m_zoomControl->GetCount();
+        long val;
+        for (n=0; n<count; n++)
+        {
+            if (m_zoomControl->GetString(n).BeforeFirst(wxT('%')).ToLong(&val) &&
+                (val >= long(zoom)))
+            {
+                m_zoomControl->SetSelection(n);
+                return;
+            }
+        }
+        
+        m_zoomControl->SetSelection(count-1);
+    }
 }
 
 int wxPreviewControlBar::GetZoomControl()
 {
-    wxChar buf[20];
-    if (m_zoomControl && (m_zoomControl->GetStringSelection() != wxT("")))
+    if (m_zoomControl && (m_zoomControl->GetStringSelection() != wxEmptyString))
     {
-        wxStrcpy(buf, m_zoomControl->GetStringSelection());
-        buf[wxStrlen(buf) - 1] = 0;
-        return (int)wxAtoi(buf);
+        long val;
+        if (m_zoomControl->GetStringSelection().BeforeFirst(wxT('%')).ToLong(&val))
+            return int(val);
     }
-    else return 0;
+    
+    return 0;
 }