]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/sashwin.h
maintaint the mouse capture stack in all ports, not just wxUniv
[wxWidgets.git] / include / wx / generic / sashwin.h
index 1b1d8e0e7e6cac314fda31cbd728fcbbb104cfba..2e90124cc75229c2c2ea7db6cfadbed2caf79bbe 100644 (file)
@@ -8,7 +8,7 @@
 // Created:     01/02/97
 // RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
-// Licence:    wxWindows license
+// Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_SASHWIN_H_G_
@@ -18,6 +18,8 @@
 #pragma interface "sashwin.h"
 #endif
 
+#if wxUSE_SASH
+
 #include "wx/defs.h"
 #include "wx/window.h"
 #include "wx/string.h"
@@ -52,7 +54,12 @@ public:
  * wxSashWindow flags
  */
 
-#define wxSW_3D             0x0004
+#define wxSW_NOBORDER         0x0000
+//#define wxSW_3D               0x0010
+#define wxSW_BORDER           0x0020
+#define wxSW_3DSASH           0x0040
+#define wxSW_3DBORDER         0x0080
+#define wxSW_3D (wxSW_3DSASH | wxSW_3DBORDER)
 
 /*
  * wxSashWindow allows any of its edges to have a sash which can be dragged
@@ -70,13 +77,24 @@ public:
 // Public API
 
     // Default constructor
-    wxSashWindow();
+    wxSashWindow()
+    {
+        Init();
+    }
 
     // Normal constructor
     wxSashWindow(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
-        const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "sashWindow");
+        const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "sashWindow")
+    {
+        Init();
+        Create(parent, id, pos, size, style, name);
+    }
+
     ~wxSashWindow();
 
+    bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
+        const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "sashWindow");
+
     // Set whether there's a sash in this position
     void SetSashVisible(wxSashEdgePosition edge, bool sash);
 
@@ -147,7 +165,9 @@ public:
     // Initialize colours
     void InitColours();
 
-protected:
+private:
+    void Init();
+
     wxSashEdge  m_sashes[4];
     int         m_dragMode;
     wxSashEdgePosition m_draggingEdge;
@@ -168,11 +188,16 @@ protected:
     wxColour    m_darkShadowColour;
     wxColour    m_hilightColour;
     wxColour    m_faceColour;
+    bool        m_mouseCaptured;
 
 DECLARE_EVENT_TABLE()
 };
 
-#define wxEVT_SASH_DRAGGED (wxEVT_FIRST + 1200)
+BEGIN_DECLARE_EVENT_TYPES()
+    DECLARE_EVENT_TYPE(wxEVT_SASH_DRAGGED, wxEVT_FIRST + 1200)
+END_DECLARE_EVENT_TYPES()
+
+// #define wxEVT_SASH_DRAGGED (wxEVT_FIRST + 1200)
 
 enum wxSashDragStatus
 {
@@ -207,8 +232,12 @@ class WXDLLEXPORT wxSashEvent: public wxCommandEvent
 
 typedef void (wxEvtHandler::*wxSashEventFunction)(wxSashEvent&);
 
-#define EVT_SASH_DRAGGED(id, fn) { wxEVT_SASH_DRAGGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSashEventFunction) & fn, NULL },
-#define EVT_SASH_DRAGGED_RANGE(id1, id2, fn) { wxEVT_SASH_DRAGGED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxSashEventFunction) & fn, NULL },
+#define EVT_SASH_DRAGGED(id, fn) \
+    DECLARE_EVENT_TABLE_ENTRY( wxEVT_SASH_DRAGGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSashEventFunction) & fn, NULL ),
+#define EVT_SASH_DRAGGED_RANGE(id1, id2, fn) \
+    DECLARE_EVENT_TABLE_ENTRY( wxEVT_SASH_DRAGGED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxSashEventFunction) & fn, NULL ),
+
+#endif // wxUSE_SASH
 
 #endif
   // _WX_SASHWIN_H_G_