diff --git a/include/wx/prntbase.h b/include/wx/prntbase.h index fbeeca8090..7e74c3b235 100644 --- a/include/wx/prntbase.h +++ b/include/wx/prntbase.h @@ -388,8 +388,10 @@ protected: wxWindowDisabler* m_windowDisabler; private: - DECLARE_CLASS(wxPreviewFrame) + void OnChar(wxKeyEvent& event); + DECLARE_EVENT_TABLE() + DECLARE_CLASS(wxPreviewFrame) DECLARE_NO_COPY_CLASS(wxPreviewFrame) }; diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp index 25bbd8ae09..9ca0f726c3 100644 --- a/src/common/prntbase.cpp +++ b/src/common/prntbase.cpp @@ -878,20 +878,14 @@ void wxPreviewCanvas::OnSysColourChanged(wxSysColourChangedEvent& event) void wxPreviewCanvas::OnChar(wxKeyEvent &event) { wxPreviewControlBar* controlBar = ((wxPreviewFrame*) GetParent())->GetControlBar(); - if (event.GetKeyCode() == WXK_ESCAPE) + switch (event.GetKeyCode()) { - ((wxPreviewFrame*) GetParent())->Close(true); - return; - } - else if (event.GetKeyCode() == WXK_TAB) - { - controlBar->OnGoto(); - return; - } - else if (event.GetKeyCode() == WXK_RETURN) - { - controlBar->OnPrint(); - return; + case WXK_TAB: + controlBar->OnGoto(); + return; + case WXK_RETURN: + controlBar->OnPrint(); + return; } if (!event.ControlDown()) @@ -1224,9 +1218,22 @@ int wxPreviewControlBar::GetZoomControl() IMPLEMENT_CLASS(wxPreviewFrame, wxFrame) BEGIN_EVENT_TABLE(wxPreviewFrame, wxFrame) + EVT_CHAR_HOOK(wxPreviewFrame::OnChar) EVT_CLOSE(wxPreviewFrame::OnCloseWindow) END_EVENT_TABLE() +void wxPreviewFrame::OnChar(wxKeyEvent &event) +{ + if ( event.GetKeyCode() == WXK_ESCAPE ) + { + Close(true); + } + else + { + event.Skip(); + } +} + 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)