Merge branch 'print-preview-layout'
Print preview layout and appearance fixes. See #22441.
This commit is contained in:
@@ -55,11 +55,9 @@ case WXPRINT_PREVIEW:
|
||||
// Pass two printout objects: for preview, and possible printing.
|
||||
wxPrintPreview *preview = new wxPrintPreview(new MyPrintout, new MyPrintout);
|
||||
wxPreviewFrame *frame = new wxPreviewFrame(preview, this,
|
||||
"Demo Print Preview",
|
||||
wxPoint(100, 100),
|
||||
wxSize(600, 650));
|
||||
frame->Centre(wxBOTH);
|
||||
"Demo Print Preview");
|
||||
frame->Initialize();
|
||||
frame->Centre(wxBOTH);
|
||||
frame->Show(true);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -444,6 +444,8 @@ protected:
|
||||
private:
|
||||
void OnChar(wxKeyEvent& event);
|
||||
|
||||
const wxSize m_initialSize;
|
||||
|
||||
wxDECLARE_EVENT_TABLE();
|
||||
wxDECLARE_CLASS(wxPreviewFrame);
|
||||
wxDECLARE_NO_COPY_CLASS(wxPreviewFrame);
|
||||
|
||||
@@ -195,6 +195,9 @@ public:
|
||||
|
||||
Pass a print preview object plus other normal frame arguments.
|
||||
The print preview object will be destroyed by the frame when it closes.
|
||||
|
||||
Note that @a size typically should @e not be specified explicitly to
|
||||
let the frame use its default size, adapted to its contents.
|
||||
*/
|
||||
wxPreviewFrame(wxPrintPreviewBase* preview, wxWindow* parent,
|
||||
const wxString& title = "Print Preview",
|
||||
|
||||
@@ -390,10 +390,9 @@ void MyFrame::OnPrintPreview(wxCommandEvent& WXUNUSED(event))
|
||||
return;
|
||||
}
|
||||
|
||||
wxPreviewFrame *frame =
|
||||
new wxPreviewFrame(preview, this, "Demo Print Preview", wxDefaultPosition, FromDIP(wxSize(600, 700)));
|
||||
frame->Centre(wxBOTH);
|
||||
wxPreviewFrame *frame = new wxPreviewFrame(preview, this, "Demo Print Preview");
|
||||
frame->InitializeWithModality(m_previewModality);
|
||||
frame->Centre(wxBOTH);
|
||||
frame->Show();
|
||||
}
|
||||
|
||||
@@ -425,10 +424,9 @@ void MyFrame::OnPrintPreviewPS(wxCommandEvent& WXUNUSED(event))
|
||||
// Pass two printout objects: for preview, and possible printing.
|
||||
wxPrintDialogData printDialogData(* g_printData);
|
||||
wxPrintPreview *preview = new wxPrintPreview(new MyPrintout(this), new MyPrintout(this), &printDialogData);
|
||||
wxPreviewFrame *frame =
|
||||
new wxPreviewFrame(preview, this, "Demo Print Preview", wxDefaultPosition, FromDIP(wxSize(600, 700)));
|
||||
frame->Centre(wxBOTH);
|
||||
wxPreviewFrame *frame = new wxPreviewFrame(preview, this, "Demo Print Preview");
|
||||
frame->Initialize();
|
||||
frame->Centre(wxBOTH);
|
||||
frame->Show();
|
||||
}
|
||||
|
||||
|
||||
@@ -936,6 +936,10 @@ wxScrolledWindow(parent, wxID_ANY, pos, size, style | wxFULL_REPAINT_ON_RESIZE,
|
||||
SetBackgroundColour(wxSystemSettings::GetColour(colourIndex));
|
||||
|
||||
SetScrollbars(10, 10, 100, 100);
|
||||
|
||||
// Use some reasonable default size for this window, roughly proportional
|
||||
// to the paper sheet.
|
||||
SetInitialSize(wxSize(600, 750));
|
||||
}
|
||||
|
||||
wxPreviewCanvas::~wxPreviewCanvas()
|
||||
@@ -1486,7 +1490,6 @@ public:
|
||||
~SizerWithButtons()
|
||||
{
|
||||
m_parent->SetSizer(m_sizer);
|
||||
m_sizer->Fit(m_parent);
|
||||
}
|
||||
|
||||
|
||||
@@ -1497,7 +1500,7 @@ public:
|
||||
{
|
||||
m_needsSeparator = false;
|
||||
|
||||
m_sizer->AddSpacer(2*wxSizerFlags::GetDefaultBorder());
|
||||
m_sizer->AddSpacer(wxRound(2*wxSizerFlags::GetDefaultBorderFractional()));
|
||||
}
|
||||
|
||||
m_hasContents = true;
|
||||
@@ -1525,9 +1528,13 @@ public:
|
||||
// as everything else added after it will be added on the right side too.
|
||||
void AddAtEnd(wxWindow *win)
|
||||
{
|
||||
// Ensure there is at least the same gap before the final button as
|
||||
// between the other groups.
|
||||
m_sizer->AddSpacer(wxRound(2*wxSizerFlags::GetDefaultBorderFractional()));
|
||||
|
||||
m_sizer->AddStretchSpacer();
|
||||
m_sizer->Add(win,
|
||||
wxSizerFlags().Border(wxTOP | wxBOTTOM | wxRIGHT).Center());
|
||||
wxSizerFlags().Border().Center());
|
||||
}
|
||||
|
||||
// Indicates the end of a group of buttons, a separator will be added after
|
||||
@@ -1614,7 +1621,7 @@ void wxPreviewControlBar::CreateButtons()
|
||||
};
|
||||
int n = WXSIZEOF(choices);
|
||||
|
||||
m_zoomControl = new wxChoice( this, wxID_PREVIEW_ZOOM, wxDefaultPosition, wxSize(FromDIP(70),wxDefaultCoord), n, choices, 0 );
|
||||
m_zoomControl = new wxChoice( this, wxID_PREVIEW_ZOOM, wxDefaultPosition, wxDefaultSize, n, choices, 0 );
|
||||
sizer.Add(m_zoomControl);
|
||||
SetZoomControl(m_printPreview->GetZoom());
|
||||
|
||||
@@ -1695,7 +1702,8 @@ void wxPreviewFrame::OnChar(wxKeyEvent &event)
|
||||
|
||||
wxPreviewFrame::wxPreviewFrame(wxPrintPreviewBase *preview, wxWindow *parent, const wxString& title,
|
||||
const wxPoint& pos, const wxSize& size, long style, const wxString& name):
|
||||
wxFrame(parent, wxID_ANY, title, pos, size, style, name)
|
||||
wxFrame(parent, wxID_ANY, title, pos, size, style, name),
|
||||
m_initialSize(size)
|
||||
{
|
||||
m_printPreview = preview;
|
||||
m_controlBar = NULL;
|
||||
@@ -1762,11 +1770,27 @@ void wxPreviewFrame::InitializeWithModality(wxPreviewFrameModalityKind kind)
|
||||
|
||||
wxBoxSizer* const sizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
sizer->Add( m_controlBar, wxSizerFlags().Expand().Border() );
|
||||
sizer->Add( m_previewCanvas, wxSizerFlags(1).Expand().Border() );
|
||||
sizer->Add( m_controlBar, wxSizerFlags().Expand() );
|
||||
sizer->Add( m_previewCanvas, wxSizerFlags(1).Expand() );
|
||||
|
||||
SetSizer( sizer );
|
||||
|
||||
// Respect the user-specified size, if any, but use the best appropriate
|
||||
// size by default if none was explicitly given.
|
||||
if ( !m_initialSize.IsFullySpecified() )
|
||||
{
|
||||
wxSize size = m_initialSize;
|
||||
size.SetDefaults(sizer->ComputeFittingWindowSize(this));
|
||||
SetSize(size);
|
||||
}
|
||||
|
||||
// We don't want to restrict shrinking the window vertically as it might be
|
||||
// too tall (see SetInitialSize() call in wxPreviewCanvas ctor), but we do
|
||||
// want to make it at least as wide as the control bar, as otherwise the
|
||||
// buttons wouldn't fit, and restricting it to at least its height
|
||||
// vertically is also quite reasonable.
|
||||
SetSizeHints(ClientToWindowSize(m_controlBar->GetBestSize()));
|
||||
|
||||
m_modalityKind = kind;
|
||||
switch ( m_modalityKind )
|
||||
{
|
||||
@@ -1794,8 +1818,6 @@ void wxPreviewFrame::InitializeWithModality(wxPreviewFrameModalityKind kind)
|
||||
SetWindowStyle((GetWindowStyle() & ~wxMINIMIZE_BOX) | wxFRAME_NO_TASKBAR);
|
||||
}
|
||||
|
||||
Layout();
|
||||
|
||||
m_printPreview->AdjustScrollbars(m_previewCanvas);
|
||||
m_previewCanvas->SetFocus();
|
||||
m_controlBar->SetFocus();
|
||||
@@ -1859,7 +1881,7 @@ void wxPrintPreviewBase::Init(wxPrintout *printout,
|
||||
m_currentPage = 1;
|
||||
m_currentZoom = 70;
|
||||
m_topMargin =
|
||||
m_leftMargin = 2*wxSizerFlags::GetDefaultBorder();
|
||||
m_leftMargin = wxRound(2*wxSizerFlags::GetDefaultBorderFractional());
|
||||
m_pageWidth = 0;
|
||||
m_pageHeight = 0;
|
||||
m_printingPrepared = false;
|
||||
|
||||
Reference in New Issue
Block a user