]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/splitter.h
added and documented wxDYNLIB_FUNCTION
[wxWidgets.git] / include / wx / generic / splitter.h
index 3d1745b0a11d639e11c10d9673b057732eb149b9..38420cdd652421b00856077f62d6864c31b1d514 100644 (file)
@@ -5,14 +5,14 @@
 // Modified by:
 // Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) Julian Smart and Markus Holzem
-// Licence:     wxWindows license
+// Copyright:   (c) Julian Smart
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef __SPLITTERH_G__
 #define __SPLITTERH_G__
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
     #pragma interface "splitter.h"
 #endif
 
@@ -71,7 +71,7 @@ public:
                      const wxPoint& pos = wxDefaultPosition,
                      const wxSize& size = wxDefaultSize,
                      long style = wxSP_3D,
-                     const wxString& name = "splitter")
+                     const wxString& name = wxT("splitter"))
     {
         Init();
         Create(parent, id, pos, size, style, name);
@@ -83,7 +83,7 @@ public:
                      const wxPoint& pos = wxDefaultPosition,
                      const wxSize& size = wxDefaultSize,
                      long style = wxSP_3D,
-                     const wxString& name = "splitter");
+                     const wxString& name = wxT("splitter"));
 
     // Gets the only or left/top pane
     wxWindow *GetWindow1() const { return m_windowOne; }
@@ -133,16 +133,16 @@ public:
     bool IsSplit() const { return (m_windowTwo != NULL); }
 
     // Sets the sash size
-    void SetSashSize(int width) { m_sashSize = width; }
+    void SetSashSize(int WXUNUSED(width)) { }
 
     // Sets the border size
-    void SetBorderSize(int width) { m_borderSize = width; }
+    void SetBorderSize(int WXUNUSED(width)) { }
 
     // Gets the sash size
-    int GetSashSize() const { return m_sashSize; }
+    int GetSashSize() const;
 
     // Gets the border size
-    int GetBorderSize() const { return m_borderSize; }
+    int GetBorderSize() const;
 
     // Set the sash position
     void SetSashPosition(int position, bool redraw = TRUE);
@@ -190,10 +190,7 @@ public:
     void OnSize(wxSizeEvent& event);
 
     // In live mode, resize child windows in idle time
-    void OnIdle(wxIdleEvent& event);
-
-    // Draws borders
-    virtual void DrawBorders(wxDC& dc);
+    void OnInternalIdle();
 
     // Draws the sash
     virtual void DrawSash(wxDC& dc);
@@ -202,20 +199,17 @@ public:
     virtual void DrawSashTracker(int x, int y);
 
     // Tests for x, y over sash
-    virtual bool SashHitTest(int x, int y, int tolerance = 2);
+    virtual bool SashHitTest(int x, int y, int tolerance = 5);
 
     // Resizes subwindows
     virtual void SizeWindows();
 
-    // Initialize colours
-    void InitColours();
-
     void SetNeedUpdating(bool needUpdating) { m_needUpdating = needUpdating; }
     bool GetNeedUpdating() const { return m_needUpdating ; }
 
 protected:
     // event handlers
-#ifdef __WXMSW__
+#if defined(__WXMSW__) || defined(__WXMAC__)
     void OnSetCursor(wxSetCursorEvent& event);
 #endif // wxMSW
 
@@ -244,38 +238,51 @@ protected:
     int ConvertSashPosition(int sashPos) const;
 
     // set the real sash position, sashPos here must be positive
-    void DoSetSashPosition(int sashPos);
+    //
+    // returns TRUE if the sash position has been changed, FALSE otherwise
+    bool DoSetSashPosition(int sashPos);
+
+    // set the sash position and send an event about it having been changed
+    void SetSashPositionAndNotify(int sashPos);
+
+    // callbacks executed when we detect that the mouse has entered or left
+    // the sash
+    virtual void OnEnterSash();
+    virtual void OnLeaveSash();
+
+    // set the cursor appropriate for the current split mode
+    void SetResizeCursor();
+
+    // redraw the splitter if its "hotness" changed if necessary
+    void RedrawIfHotSensitive(bool isHot);
 
     wxSplitMode m_splitMode;
-    bool        m_permitUnsplitAlways;
-    bool        m_needUpdating; // when in live mode, set this to TRUE to resize children in idle
     wxWindow*   m_windowOne;
     wxWindow*   m_windowTwo;
     int         m_dragMode;
     int         m_oldX;
     int         m_oldY;
-    int         m_borderSize;
-    int         m_sashSize;     // Sash width or height
     int         m_sashPosition; // Number of pixels from left or top
     int         m_requestedSashPosition;
+    int         m_sashPositionCurrent; // while dragging
     int         m_firstX;
     int         m_firstY;
     int         m_minimumPaneSize;
-    wxCursor*   m_sashCursorWE;
-    wxCursor*   m_sashCursorNS;
-    wxPen*      m_sashTrackerPen;
-    wxPen*      m_lightShadowPen;
-    wxPen*      m_mediumShadowPen;
-    wxPen*      m_darkShadowPen;
-    wxPen*      m_hilightPen;
-    wxBrush*    m_faceBrush;
-    wxPen*      m_facePen;
+    wxCursor    m_sashCursorWE;
+    wxCursor    m_sashCursorNS;
+    wxPen      *m_sashTrackerPen;
+
+    // when in live mode, set this to TRUE to resize children in idle
+    bool        m_needUpdating:1;
+    bool        m_permitUnsplitAlways:1;
+    bool        m_isHot:1;
 
 private:
     WX_DECLARE_CONTROL_CONTAINER();
 
     DECLARE_DYNAMIC_CLASS(wxSplitterWindow)
     DECLARE_EVENT_TABLE()
+    DECLARE_NO_COPY_CLASS(wxSplitterWindow)
 };
 
 // ----------------------------------------------------------------------------
@@ -354,7 +361,7 @@ private:
         } pt;               // position of double click for DCLICK event
     } m_data;
 
-    DECLARE_DYNAMIC_CLASS(wxSplitterEvent)
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxSplitterEvent)
 };
 
 typedef void (wxEvtHandler::*wxSplitterEventFunction)(wxSplitterEvent&);