From 27dc7e21d9bc78c7c0c991eb9c0c0350278d163d Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Wed, 20 Oct 1999 04:57:45 +0000 Subject: [PATCH] made wxPanel be auto layout aware git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4075 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/panelg.h | 12 +++++++----- src/generic/panelg.cpp | 13 +++++++++++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/include/wx/generic/panelg.h b/include/wx/generic/panelg.h index f47c9afc41..c5442a15e0 100644 --- a/include/wx/generic/panelg.h +++ b/include/wx/generic/panelg.h @@ -25,7 +25,7 @@ class WXDLLEXPORT wxPanel : public wxWindow { public: wxPanel() { Init(); } - + // Old-style constructor (no default values for coordinates to avoid // ambiguity with the new one) wxPanel(wxWindow *parent, @@ -37,7 +37,7 @@ public: Create(parent, -1, wxPoint(x, y), wxSize(width, height), style, name); } - + // Constructor wxPanel(wxWindow *parent, wxWindowID id = -1, @@ -57,7 +57,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL | wxNO_BORDER, const wxString& name = wxPanelNameStr); - + // Sends an OnInitDialog event, which in turns transfers data to // to the dialog via validators. virtual void InitDialog(); @@ -71,13 +71,15 @@ public: // responds to colour changes void OnSysColourChanged(wxSysColourChangedEvent& event); - + // process a keyboard navigation message (Tab traversal) void OnNavigationKey(wxNavigationKeyEvent& event); - + // set the focus to the first child if we get it void OnFocus(wxFocusEvent& event); + void OnSize(wxSizeEvent& event); + // called by wxWindow whenever it gets focus void SetLastFocus(wxWindow *win) { m_winLastFocused = win; } wxWindow *GetLastFocus() const { return m_winLastFocused; } diff --git a/src/generic/panelg.cpp b/src/generic/panelg.cpp index 567a882de6..e9339b481a 100644 --- a/src/generic/panelg.cpp +++ b/src/generic/panelg.cpp @@ -36,6 +36,7 @@ BEGIN_EVENT_TABLE(wxPanel, wxWindow) EVT_SYS_COLOUR_CHANGED(wxPanel::OnSysColourChanged) EVT_SET_FOCUS(wxPanel::OnFocus) EVT_NAVIGATION_KEY(wxPanel::OnNavigationKey) + EVT_SIZE(wxPanel::OnSize) END_EVENT_TABLE() #endif @@ -101,7 +102,7 @@ void wxPanel::OnNavigationKey( wxNavigationKeyEvent& event ) wxWindow *winFocus = event.GetCurrentFocus(); if (!winFocus) winFocus = wxWindow::FindFocus(); - + if (!winFocus) { event.Skip(); @@ -132,7 +133,7 @@ void wxPanel::OnNavigationKey( wxNavigationKeyEvent& event ) // we don't want to tab into a different dialog or frame if ( focussed_child_of_p->IsTopLevel() ) break; - + if ( wxDynamicCast(p, wxPanel) ) { event.SetCurrentFocus( focussed_child_of_p ); @@ -166,6 +167,14 @@ void wxPanel::OnNavigationKey( wxNavigationKeyEvent& event ) event.Skip(); } + +void wxPanel::OnSize(wxSizeEvent& WXUNUSED(event)) +{ +#if wxUSE_CONSTRAINTS + if (GetAutoLayout()) Layout(); +#endif +} + void wxPanel::OnFocus(wxFocusEvent& event) { if ( m_winLastFocused ) -- 2.45.2