X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2b5f62a0b2db198609b45dec622a018dae37008e..51623cc53f350935337e57930eaaf1afe9a48c3b:/include/wx/generic/sashwin.h diff --git a/include/wx/generic/sashwin.h b/include/wx/generic/sashwin.h index dcd39f47f5..88af9589e9 100644 --- a/include/wx/generic/sashwin.h +++ b/include/wx/generic/sashwin.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: sashwin.h +// Name: wx/generic/sashwin.h // Purpose: wxSashWindow implementation. A sash window has an optional // sash on each edge, allowing it to be dragged. An event // is generated when the sash is released. @@ -8,16 +8,12 @@ // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_SASHWIN_H_G_ #define _WX_SASHWIN_H_G_ -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface "sashwin.h" -#endif - #if wxUSE_SASH #include "wx/defs.h" @@ -40,13 +36,20 @@ enum wxSashEdgePosition { * wxSashEdge represents one of the four edges of a window. */ -class WXDLLEXPORT wxSashEdge +class WXDLLIMPEXP_ADV wxSashEdge { public: - wxSashEdge() { m_show = FALSE; m_border = FALSE; m_margin = 0; } + wxSashEdge() + { m_show = false; +#if WXWIN_COMPATIBILITY_2_6 + m_border = false; +#endif + m_margin = 0; } bool m_show; // Is the sash showing? +#if WXWIN_COMPATIBILITY_2_6 bool m_border; // Do we draw a border? +#endif int m_margin; // The margin size }; @@ -67,7 +70,7 @@ public: * of wxSashWindow. */ -class WXDLLEXPORT wxSashWindow: public wxWindow +class WXDLLIMPEXP_ADV wxSashWindow: public wxWindow { public: // Default constructor @@ -77,44 +80,48 @@ public: } // Normal constructor - wxSashWindow(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, + wxSashWindow(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = wxT("sashWindow")) { Init(); Create(parent, id, pos, size, style, name); } - ~wxSashWindow(); + virtual ~wxSashWindow(); - bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, + bool Create(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = wxT("sashWindow")); // Set whether there's a sash in this position void SetSashVisible(wxSashEdgePosition edge, bool sash); // Get whether there's a sash in this position - inline bool GetSashVisible(wxSashEdgePosition edge) const { return m_sashes[edge].m_show; } + bool GetSashVisible(wxSashEdgePosition edge) const { return m_sashes[edge].m_show; } +#if WXWIN_COMPATIBILITY_2_6 // Set whether there's a border in this position - inline void SetSashBorder(wxSashEdgePosition edge, bool border) { m_sashes[edge].m_border = border; } + // This value is unused in wxSashWindow. + void SetSashBorder(wxSashEdgePosition edge, bool border) { m_sashes[edge].m_border = border; } // Get whether there's a border in this position - inline bool HasBorder(wxSashEdgePosition edge) const { return m_sashes[edge].m_border; } + // This value is unused in wxSashWindow. + bool HasBorder(wxSashEdgePosition edge) const { return m_sashes[edge].m_border; } +#endif // Get border size - inline int GetEdgeMargin(wxSashEdgePosition edge) const { return m_sashes[edge].m_margin; } + int GetEdgeMargin(wxSashEdgePosition edge) const { return m_sashes[edge].m_margin; } // Sets the default sash border size - inline void SetDefaultBorderSize(int width) { m_borderSize = width; } + void SetDefaultBorderSize(int width) { m_borderSize = width; } // Gets the default sash border size - inline int GetDefaultBorderSize() const { return m_borderSize; } + int GetDefaultBorderSize() const { return m_borderSize; } // Sets the addition border size between child and sash window - inline void SetExtraBorderSize(int width) { m_extraBorderSize = width; } + void SetExtraBorderSize(int width) { m_extraBorderSize = width; } // Gets the addition border size between child and sash window - inline int GetExtraBorderSize() const { return m_extraBorderSize; } + int GetExtraBorderSize() const { return m_extraBorderSize; } virtual void SetMinimumSizeX(int min) { m_minimumPaneSizeX = min; } virtual void SetMinimumSizeY(int min) { m_minimumPaneSizeY = min; } @@ -138,7 +145,7 @@ public: // Adjusts the panes void OnSize(wxSizeEvent& event); -#ifdef __WXMSW__ +#if defined(__WXMSW__) || defined(__WXMAC__) // Handle cursor correctly void OnSetCursor(wxSetCursorEvent& event); #endif // wxMSW @@ -193,13 +200,12 @@ private: private: DECLARE_DYNAMIC_CLASS(wxSashWindow) DECLARE_EVENT_TABLE() + wxDECLARE_NO_COPY_CLASS(wxSashWindow); }; -BEGIN_DECLARE_EVENT_TYPES() - DECLARE_EVENT_TYPE(wxEVT_SASH_DRAGGED, wxEVT_FIRST + 1200) -END_DECLARE_EVENT_TYPES() +class WXDLLIMPEXP_FWD_ADV wxSashEvent; -// #define wxEVT_SASH_DRAGGED (wxEVT_FIRST + 1200) +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_SASH_DRAGGED, wxSashEvent ); enum wxSashDragStatus { @@ -207,39 +213,54 @@ enum wxSashDragStatus wxSASH_STATUS_OUT_OF_RANGE }; -class WXDLLEXPORT wxSashEvent: public wxCommandEvent +class WXDLLIMPEXP_ADV wxSashEvent: public wxCommandEvent { public: - inline wxSashEvent(int id = 0, wxSashEdgePosition edge = wxSASH_NONE) { - m_eventType = (wxEventType) wxEVT_SASH_DRAGGED; m_id = id; m_edge = edge; } + wxSashEvent(int id = 0, wxSashEdgePosition edge = wxSASH_NONE) + { + m_eventType = (wxEventType) wxEVT_SASH_DRAGGED; + m_id = id; + m_edge = edge; + } + + wxSashEvent(const wxSashEvent& event) + : wxCommandEvent(event), + m_edge(event.m_edge), + m_dragRect(event.m_dragRect), + m_dragStatus(event.m_dragStatus) { } - inline void SetEdge(wxSashEdgePosition edge) { m_edge = edge; } - inline wxSashEdgePosition GetEdge() const { return m_edge; } + void SetEdge(wxSashEdgePosition edge) { m_edge = edge; } + wxSashEdgePosition GetEdge() const { return m_edge; } //// The rectangle formed by the drag operation - inline void SetDragRect(const wxRect& rect) { m_dragRect = rect; } - inline wxRect GetDragRect() const { return m_dragRect; } + void SetDragRect(const wxRect& rect) { m_dragRect = rect; } + wxRect GetDragRect() const { return m_dragRect; } //// Whether the drag caused the rectangle to be reversed (e.g. //// dragging the top below the bottom) - inline void SetDragStatus(wxSashDragStatus status) { m_dragStatus = status; } - inline wxSashDragStatus GetDragStatus() const { return m_dragStatus; } - + void SetDragStatus(wxSashDragStatus status) { m_dragStatus = status; } + wxSashDragStatus GetDragStatus() const { return m_dragStatus; } + + virtual wxEvent *Clone() const { return new wxSashEvent(*this); } + private: wxSashEdgePosition m_edge; wxRect m_dragRect; wxSashDragStatus m_dragStatus; private: - DECLARE_DYNAMIC_CLASS(wxSashEvent) + DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxSashEvent) }; typedef void (wxEvtHandler::*wxSashEventFunction)(wxSashEvent&); +#define wxSashEventHandler(func) \ + wxEVENT_HANDLER_CAST(wxSashEventFunction, func) + #define EVT_SASH_DRAGGED(id, fn) \ - DECLARE_EVENT_TABLE_ENTRY( wxEVT_SASH_DRAGGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSashEventFunction) & fn, NULL ), + wx__DECLARE_EVT1(wxEVT_SASH_DRAGGED, id, wxSashEventHandler(fn)) #define EVT_SASH_DRAGGED_RANGE(id1, id2, fn) \ - DECLARE_EVENT_TABLE_ENTRY( wxEVT_SASH_DRAGGED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxSashEventFunction) & fn, NULL ), + wx__DECLARE_EVT2(wxEVT_SASH_DRAGGED, id1, id2, wxSashEventHandler(fn)) #endif // wxUSE_SASH