]> git.saurik.com Git - wxWidgets.git/commitdiff
1. We don't need GetTopLevelParent() here, we already have wxGetTopLevelParent()
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 22 Oct 2006 23:23:12 +0000 (23:23 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 22 Oct 2006 23:23:12 +0000 (23:23 +0000)
2. Don't hardcode button id in the generic version
3. Don't include unneeded headers from the header

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42263 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/collpaneg.h
src/generic/collpaneg.cpp
src/gtk/collpane.cpp

index 32f26c17da27ccb8d7f25c77e524687b195ed335..b58bf5a395228fa485737d1fe57e7ba3d76e172e 100644 (file)
 #ifndef _WX_COLLAPSABLE_PANE_H_GENERIC_
 #define _WX_COLLAPSABLE_PANE_H_GENERIC_
 
-#include "wx/button.h"
-
-
-// the ID of the wxButton used to collapse/expand the panel
-#define wxCP_BUTTON_ID      12356
-
-// the number of pixels to leave between the button and the static line and
-// between the button and the pane
-#define wxCP_MARGIN         10
-
 // forward declared
+class WXDLLEXPORT wxButton;
 class WXDLLEXPORT wxStaticLine;
 
 // class name
 extern WXDLLEXPORT_DATA(const wxChar) wxGenericCollapsiblePaneNameStr[];
 
 
-
 // ----------------------------------------------------------------------------
 // wxGenericCollapsiblePane
 // ----------------------------------------------------------------------------
@@ -70,34 +60,28 @@ public:
                 const wxString& name = wxGenericCollapsiblePaneNameStr);
 
 
-public:     // public API
+    // public wxCollapsiblePane API
+    virtual void Collapse(bool collapse = true);
+    virtual void SetLabel(const wxString &label);
 
-    void Collapse(bool collapse = true);
-    void SetLabel(const wxString &label);
-
-    bool IsCollapsed() const
+    virtual bool IsCollapsed() const
         { return m_pPane==NULL || !m_pPane->IsShown(); }
-    wxWindow *GetPane() const
+    virtual wxWindow *GetPane() const
         { return m_pPane; }
-    wxString GetLabel() const
+    virtual wxString GetLabel() const
         { return m_strLabel; }
 
-    wxWindow *GetTopLevelParent();
-
-public:         // event handlers
-
-    void OnButton(wxCommandEvent &ev);
-    void OnSize(wxSizeEvent &ev);
-
-protected:      // internal utils
+protected: 
+    // overridden methods
+    virtual wxSize DoGetBestSize() const;
 
+    // internal helpers
     void LayoutChildren();
 
     wxString GetBtnLabel() const;
-    virtual wxSize DoGetBestSize() const;
 
-protected:
 
+    // child controls
     wxButton *m_pButton;
     wxStaticLine *m_pStatLine;
     wxWindow *m_pPane;
@@ -106,10 +90,14 @@ protected:
     wxString m_strLabel;
 
 private:
+    // event handlers
+    void OnButton(wxCommandEvent &ev);
+    void OnSize(wxSizeEvent &ev);
+
     DECLARE_DYNAMIC_CLASS(wxGenericCollapsiblePane)
     DECLARE_EVENT_TABLE()
 };
 
 
-#endif
-    // _WX_COLLAPSABLE_PANE_H_GENERIC_
+#endif // _WX_COLLAPSABLE_PANE_H_GENERIC_
+
index b7e0dd6e9e2e9487271e6b50f1cbde36c4e923e0..962ccce1056210e4ab20bfa7949ae4080617c10b 100644 (file)
 
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/button.h"
+#endif // !WX_PRECOMP
+
 #include "wx/collpane.h"
 #include "wx/statline.h"
 
+// ----------------------------------------------------------------------------
+// constants
+// ----------------------------------------------------------------------------
+
+// the number of pixels to leave between the button and the static line and
+// between the button and the pane
+#define wxCP_MARGIN         10
+
 // ============================================================================
 // implementation
 // ============================================================================
@@ -34,18 +47,19 @@ IMPLEMENT_DYNAMIC_CLASS(wxGenericCollapsiblePane, wxControl)
 IMPLEMENT_DYNAMIC_CLASS(wxCollapsiblePaneEvent, wxCommandEvent)
 
 BEGIN_EVENT_TABLE(wxGenericCollapsiblePane, wxControl)
-    EVT_BUTTON(wxCP_BUTTON_ID, wxGenericCollapsiblePane::OnButton)
+    EVT_BUTTON(wxID_ANY, wxGenericCollapsiblePane::OnButton)
     EVT_SIZE(wxGenericCollapsiblePane::OnSize)
 END_EVENT_TABLE()
 
 
-bool wxGenericCollapsiblePane::Create( wxWindow *parent, wxWindowID id,
-                                        const wxString& label,
-                                        const wxPoint& pos,
-                                        const wxSize& size,
-                                        long style,
-                                        const wxValidator& val,
-                                        const wxString& name)
+bool wxGenericCollapsiblePane::Create(wxWindow *parent,
+                                      wxWindowID id,
+                                      const wxString& label,
+                                      const wxPoint& pos,
+                                      const wxSize& size,
+                                      long style,
+                                      const wxValidator& val,
+                                      const wxString& name)
 {
     if ( !wxControl::Create(parent, id, pos, size, style, val, name) )
         return false;
@@ -53,7 +67,7 @@ bool wxGenericCollapsiblePane::Create( wxWindow *parent, wxWindowID id,
     m_strLabel = label;
 
     // create children; their size & position is set in OnSize()
-    m_pButton = new wxButton(this, wxCP_BUTTON_ID, GetBtnLabel(), wxPoint(0, 0),
+    m_pButton = new wxButton(this, wxID_ANY, GetBtnLabel(), wxPoint(0, 0),
                              wxDefaultSize, wxBU_EXACTFIT);
     m_pStatLine = new wxStaticLine(this, wxID_ANY);
     m_pPane = new wxWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
@@ -106,7 +120,7 @@ void wxGenericCollapsiblePane::Collapse(bool collapse)
     SetMinSize(sz);
     SetSize(sz);
 
-    wxWindow *top = GetTopLevelParent();
+    wxWindow *top = wxGetTopLevelParent(this);
     if (top)
     {
         // we've changed our size, thus our top level parent needs to relayout
@@ -143,15 +157,6 @@ void wxGenericCollapsiblePane::Collapse(bool collapse)
     }
 }
 
-wxWindow *wxGenericCollapsiblePane::GetTopLevelParent()
-{
-    wxWindow *parent = GetParent();
-    while (parent && !parent->IsTopLevel())
-        parent = parent->GetParent();
-
-    return parent;
-}
-
 void wxGenericCollapsiblePane::SetLabel(const wxString &label)
 {
     m_strLabel = label;
@@ -183,8 +188,14 @@ void wxGenericCollapsiblePane::LayoutChildren()
 // wxGenericCollapsiblePane - event handlers
 //-----------------------------------------------------------------------------
 
-void wxGenericCollapsiblePane::OnButton(wxCommandEvent &WXUNUSED(event))
+void wxGenericCollapsiblePane::OnButton(wxCommandEvent& event)
 {
+    if ( event.GetEventObject() != m_pButton )
+    {
+        event.Skip();
+        return;
+    }
+
     Collapse(!IsCollapsed());
 
     // this change was generated by the user - send the event
index 24f0215b2d4fb35b56febd851081d857cccc9a68..9bd6522d51f5e8fa814f41a94e3b5a87c191a2d0 100644 (file)
@@ -20,9 +20,9 @@
 #ifdef __WXGTK24__
 
 #include "wx/collpane.h"
+#include "wx/gtk/private.h"
 
 #include <gtk/gtkexpander.h>
-#include <gtk/gtk.h>
 
 const wxChar wxCollapsiblePaneNameStr[] = wxT("CollapsiblePane");
 
@@ -76,7 +76,7 @@ static void gtk_collapsiblepane_expanded_callback (GObject    *object,
     p->SetMinSize(sz);
     p->SetSize(sz);
 
-    wxWindow *top = p->GetTopLevelParent();
+    wxWindow *top = wxGetTopLevelParent(p);
     if (top)
     {
         // we've changed our size, thus our top level parent needs to relayout