]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/prntbase.cpp
Corrected wxImage for use with mono wxBitmaps,
[wxWidgets.git] / src / common / prntbase.cpp
index 0c2aba22e595c056eb1019d9dd500d3b944122e8..e363bd6b7629c5bc9cbfd419af6bc7f74b942496 100644 (file)
@@ -220,8 +220,9 @@ void wxPreviewCanvas::OnSysColourChanged(wxSysColourChangedEvent& event)
 BEGIN_EVENT_TABLE(wxPreviewControlBar, wxPanel)
     EVT_BUTTON(wxID_PREVIEW_CLOSE,    wxPreviewControlBar::OnWindowClose)
     EVT_BUTTON(wxID_PREVIEW_PRINT,    wxPreviewControlBar::OnPrint)
-    EVT_BUTTON(wxID_PREVIEW_PREVIOUS, wxPreviewControlBar::OnPrevious)
-    EVT_BUTTON(wxID_PREVIEW_NEXT,     wxPreviewControlBar::OnNext)
+    EVT_BUTTON(wxID_PREVIEW_PREVIOUS, wxPreviewControlBar::OnPreviousButton)
+    EVT_BUTTON(wxID_PREVIEW_NEXT,     wxPreviewControlBar::OnNextButton)
+    EVT_CHAR(wxPreviewControlBar::OnChar)
     EVT_CHOICE(wxID_PREVIEW_ZOOM,     wxPreviewControlBar::OnZoom)
     EVT_PAINT(wxPreviewControlBar::OnPaint)
 END_EVENT_TABLE()
@@ -267,7 +268,20 @@ void wxPreviewControlBar::OnPrint(wxCommandEvent& WXUNUSED(event))
     preview->Print(TRUE);
 }
 
-void wxPreviewControlBar::OnNext(wxCommandEvent& WXUNUSED(event))
+void wxPreviewControlBar::OnChar(wxKeyEvent &event)
+{
+   switch(event.KeyCode())
+   {
+   case WXK_NEXT:
+      OnNext(); break;
+   case WXK_PRIOR:
+      OnPrevious(); break;
+   default:
+      event.Skip();
+   }
+}
+
+void wxPreviewControlBar::OnNext(void)
 {
     wxPrintPreviewBase *preview = GetPrintPreview();
     if (preview)
@@ -282,7 +296,7 @@ void wxPreviewControlBar::OnNext(wxCommandEvent& WXUNUSED(event))
     }
 }
 
-void wxPreviewControlBar::OnPrevious(wxCommandEvent& WXUNUSED(event))
+void wxPreviewControlBar::OnPrevious(void)
 {
     wxPrintPreviewBase *preview = GetPrintPreview();
     if (preview)
@@ -395,7 +409,7 @@ void wxPreviewControlBar::SetZoomControl(int zoom)
 int wxPreviewControlBar::GetZoomControl()
 {
     wxChar buf[20];
-    if (m_zoomControl && (m_zoomControl->GetStringSelection() != _T("")))
+    if (m_zoomControl && (m_zoomControl->GetStringSelection() != wxT("")))
     {
         wxStrcpy(buf, m_zoomControl->GetStringSelection());
         buf[wxStrlen(buf) - 1] = 0;
@@ -410,7 +424,7 @@ int wxPreviewControlBar::GetZoomControl()
 */
 
 BEGIN_EVENT_TABLE(wxPreviewFrame, wxFrame)
-EVT_CLOSE(wxPreviewFrame::OnCloseWindow)
+    EVT_CLOSE(wxPreviewFrame::OnCloseWindow)
 END_EVENT_TABLE()
 
 wxPreviewFrame::wxPreviewFrame(wxPrintPreviewBase *preview, wxFrame *parent, const wxString& title,
@@ -549,8 +563,10 @@ void wxPrintPreviewBase::Init(wxPrintout *printout,
     m_leftMargin = 40;
     m_pageWidth = 0;
     m_pageHeight = 0;
+    m_printingPrepared = FALSE;
 
-    printout->OnPreparePrinting();
+    // Too soon! Moved to RenderPage.
+    // printout->OnPreparePrinting();
 
     // Get some parameters from the printout, if defined
     int selFrom, selTo;
@@ -664,6 +680,13 @@ bool wxPrintPreviewBase::RenderPage(int pageNum)
     m_previewPrintout->SetDC(&memoryDC);
     m_previewPrintout->SetPageSizePixels(m_pageWidth, m_pageHeight);
 
+    // Need to delay OnPreparePrinting until here, so we have enough information.
+    if (!m_printingPrepared)
+    {
+        m_previewPrintout->OnPreparePrinting();
+        m_printingPrepared = TRUE;
+    }
+
     m_previewPrintout->OnBeginPrinting();
 
     if (!m_previewPrintout->OnBeginDocument(m_printDialogData.GetFromPage(), m_printDialogData.GetToPage()))