home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / src / generic / panelg.cpp < prev    next >
C/C++ Source or Header  |  2002-09-28  |  4KB  |  141 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        src/generic/panelg.cpp
  3. // Purpose:     wxPanel and the keyboard handling code
  4. // Author:      Julian Smart, Robert Roebling, Vadim Zeitlin
  5. // Modified by:
  6. // Created:     04/01/98
  7. // RCS-ID:      $Id: panelg.cpp,v 1.56.2.1 2002/09/28 07:01:33 RL Exp $
  8. // Copyright:   (c) Julian Smart and Markus Holzem
  9. // Licence:     wxWindows license
  10. /////////////////////////////////////////////////////////////////////////////
  11.  
  12. // ============================================================================
  13. // declarations
  14. // ============================================================================
  15.  
  16. // ----------------------------------------------------------------------------
  17. // headers
  18. // ----------------------------------------------------------------------------
  19.  
  20. #ifdef __GNUG__
  21.     #pragma implementation "panelg.h"
  22. #endif
  23.  
  24. // For compilers that support precompilation, includes "wx.h".
  25. #include "wx/wxprec.h"
  26.  
  27. #ifdef __BORLANDC__
  28.     #pragma hdrstop
  29. #endif
  30.  
  31. #ifndef WX_PRECOMP
  32.     #include "wx/object.h"
  33.     #include "wx/font.h"
  34.     #include "wx/colour.h"
  35.     #include "wx/settings.h"
  36.     #include "wx/log.h"
  37. #endif
  38.  
  39. #include "wx/containr.h"
  40. #include "wx/panel.h"
  41.  
  42. // ----------------------------------------------------------------------------
  43. // wxWin macros
  44. // ----------------------------------------------------------------------------
  45.  
  46. IMPLEMENT_DYNAMIC_CLASS(wxPanel, wxWindow)
  47.  
  48. BEGIN_EVENT_TABLE(wxPanel, wxWindow)
  49.     EVT_SYS_COLOUR_CHANGED(wxPanel::OnSysColourChanged)
  50.  
  51.     EVT_SIZE(wxPanel::OnSize)
  52.  
  53.     WX_EVENT_TABLE_CONTROL_CONTAINER(wxPanel)
  54. END_EVENT_TABLE()
  55.  
  56. // ============================================================================
  57. // implementation
  58. // ============================================================================
  59.  
  60. WX_DELEGATE_TO_CONTROL_CONTAINER(wxPanel)
  61.  
  62. // ----------------------------------------------------------------------------
  63. // wxPanel creation
  64. // ----------------------------------------------------------------------------
  65.  
  66. void wxPanel::Init()
  67. {
  68.     m_container.SetContainerWindow(this);
  69. }
  70.  
  71. bool wxPanel::Create(wxWindow *parent, wxWindowID id,
  72.                      const wxPoint& pos,
  73.                      const wxSize& size,
  74.                      long style,
  75.                      const wxString& name)
  76. {
  77.     return wxWindow::Create(parent, id, pos, size, style, name);
  78. }
  79.  
  80. wxPanel::~wxPanel()
  81. {
  82. }
  83.  
  84. void wxPanel::InitDialog()
  85. {
  86.     wxInitDialogEvent event(GetId());
  87.     event.SetEventObject(this);
  88.     GetEventHandler()->ProcessEvent(event);
  89. }
  90.  
  91. // ----------------------------------------------------------------------------
  92. // event handlers
  93. // ----------------------------------------------------------------------------
  94.  
  95. // Responds to colour changes, and passes event on to children.
  96. void wxPanel::OnSysColourChanged(wxSysColourChangedEvent& event)
  97. {
  98.     SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE));
  99.     Refresh();
  100.  
  101.     // Propagate the event to the non-top-level children
  102.     wxWindow::OnSysColourChanged(event);
  103. }
  104.  
  105. void wxPanel::OnSize(wxSizeEvent& event)
  106. {
  107. #if wxUSE_CONSTRAINTS
  108.     if (GetAutoLayout())
  109.         Layout();
  110. #if defined(__WXPM__)
  111.     else
  112.     {
  113.         // Need to properly move child windows under OS/2
  114.  
  115.         PSWP                        pWinSwp = GetSwp();
  116.  
  117.         if (pWinSwp->cx == 0 && pWinSwp->cy == 0 && pWinSwp->fl == 0)
  118.         {
  119.             // Uninitialized
  120.  
  121.             ::WinQueryWindowPos(GetHWND(), pWinSwp);
  122.     }
  123.     else
  124.         {
  125.             SWP                     vSwp;
  126.             int                     nYDiff;
  127.  
  128.             ::WinQueryWindowPos(GetHWND(), &vSwp);
  129.             nYDiff = pWinSwp->cy - vSwp.cy;
  130.             MoveChildren(nYDiff);
  131.             pWinSwp->cx = vSwp.cx;
  132.             pWinSwp->cy = vSwp.cy;
  133.         }
  134.     }
  135. #endif
  136. #endif // wxUSE_CONSTRAINTS
  137.  
  138.     event.Skip();
  139. }
  140.  
  141.