]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/splitter.h
MSVC 5 fix.
[wxWidgets.git] / include / wx / generic / splitter.h
index 40a07464de48fe15b13060a9c6b6bcc308d095c8..61e4c08008f18da636658118b9aa3a8e60ae0ceb 100644 (file)
@@ -12,7 +12,7 @@
 #ifndef __SPLITTERH_G__
 #define __SPLITTERH_G__
 
 #ifndef __SPLITTERH_G__
 #define __SPLITTERH_G__
 
-#if defined(__GNUG__) && !defined(__APPLE__)
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma interface "splitter.h"
 #endif
 
     #pragma interface "splitter.h"
 #endif
 
@@ -108,7 +108,7 @@ public:
 
     // Associates the given window with window 2, drawing the appropriate sash
     // and changing the split mode.
 
     // Associates the given window with window 2, drawing the appropriate sash
     // and changing the split mode.
-    // Does nothing and returns FALSE if the window is already split.
+    // Does nothing and returns false if the window is already split.
     // A sashPosition of 0 means choose a default sash position,
     // negative sashPosition specifies the size of right/lower pane as it's
     // absolute value rather than the size of left/upper pane.
     // A sashPosition of 0 means choose a default sash position,
     // negative sashPosition specifies the size of right/lower pane as it's
     // absolute value rather than the size of left/upper pane.
@@ -129,6 +129,11 @@ public:
     // parameter should be NULL)
     bool ReplaceWindow(wxWindow *winOld, wxWindow *winNew);
 
     // parameter should be NULL)
     bool ReplaceWindow(wxWindow *winOld, wxWindow *winNew);
 
+    // Make sure the child window sizes are updated. This is useful
+    // for reducing flicker by updating the sizes before a
+    // window is shown, if you know the overall size is correct.
+    void UpdateSize();
+
     // Is the window split?
     bool IsSplit() const { return (m_windowTwo != NULL); }
 
     // Is the window split?
     bool IsSplit() const { return (m_windowTwo != NULL); }
 
@@ -145,7 +150,7 @@ public:
     int GetBorderSize() const;
 
     // Set the sash position
     int GetBorderSize() const;
 
     // Set the sash position
-    void SetSashPosition(int position, bool redraw = TRUE);
+    void SetSashPosition(int position, bool redraw = true);
 
     // Gets the sash position
     int GetSashPosition() const { return m_sashPosition; }
 
     // Gets the sash position
     int GetSashPosition() const { return m_sashPosition; }
@@ -162,7 +167,7 @@ public:
     virtual int OnSashPositionChanging(int newSashPosition);
 
     // Called when the sash position is about to be changed, return
     virtual int OnSashPositionChanging(int newSashPosition);
 
     // Called when the sash position is about to be changed, return
-    // FALSE from here to prevent the change from taking place.
+    // false from here to prevent the change from taking place.
     // Repositions sash to minimum position if pane would be too small.
     // newSashPosition here is always positive or zero.
     virtual bool OnSashPositionChange(int newSashPosition);
     // Repositions sash to minimum position if pane would be too small.
     // newSashPosition here is always positive or zero.
     virtual bool OnSashPositionChange(int newSashPosition);
@@ -213,7 +218,7 @@ protected:
     void OnSetCursor(wxSetCursorEvent& event);
 #endif // wxMSW
 
     void OnSetCursor(wxSetCursorEvent& event);
 #endif // wxMSW
 
-    // send the given event, return FALSE if the event was processed and vetoed
+    // send the given event, return false if the event was processed and vetoed
     // by the user code
     inline bool DoSendEvent(wxSplitterEvent& event);
 
     // by the user code
     inline bool DoSendEvent(wxSplitterEvent& event);
 
@@ -239,18 +244,24 @@ protected:
 
     // set the real sash position, sashPos here must be positive
     //
 
     // set the real sash position, sashPos here must be positive
     //
-    // returns TRUE if the sash position has been changed, FALSE otherwise
+    // 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);
 
     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();
 
     // 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;
     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;
     wxWindow*   m_windowOne;
     wxWindow*   m_windowTwo;
     int         m_dragMode;
@@ -266,6 +277,12 @@ protected:
     wxCursor    m_sashCursorNS;
     wxPen      *m_sashTrackerPen;
 
     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;
+    bool        m_checkRequestedSashPosition:1;
+
 private:
     WX_DECLARE_CONTROL_CONTAINER();
 
 private:
     WX_DECLARE_CONTROL_CONTAINER();
 
@@ -360,7 +377,7 @@ typedef void (wxEvtHandler::*wxSplitterEventFunction)(wxSplitterEvent&);
     wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED,                                \
     id,                                                                     \
     -1,                                                                     \
     wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED,                                \
     id,                                                                     \
     -1,                                                                     \
-    (wxObjectEventFunction)(wxEventFunction)(wxSplitterEventFunction) &fn,  \
+    (wxObjectEventFunction)(wxEventFunction) wxStaticCastEvent( wxSplitterEventFunction, &fn ),  \
     NULL                                                                    \
   ),
 
     NULL                                                                    \
   ),
 
@@ -369,7 +386,7 @@ typedef void (wxEvtHandler::*wxSplitterEventFunction)(wxSplitterEvent&);
     wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING,                               \
     id,                                                                     \
     -1,                                                                     \
     wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING,                               \
     id,                                                                     \
     -1,                                                                     \
-    (wxObjectEventFunction)(wxEventFunction)(wxSplitterEventFunction) &fn,  \
+    (wxObjectEventFunction)(wxEventFunction) wxStaticCastEvent( wxSplitterEventFunction, &fn ),  \
     NULL                                                                    \
   ),
 
     NULL                                                                    \
   ),
 
@@ -378,7 +395,7 @@ typedef void (wxEvtHandler::*wxSplitterEventFunction)(wxSplitterEvent&);
     wxEVT_COMMAND_SPLITTER_DOUBLECLICKED,                                   \
     id,                                                                     \
     -1,                                                                     \
     wxEVT_COMMAND_SPLITTER_DOUBLECLICKED,                                   \
     id,                                                                     \
     -1,                                                                     \
-    (wxObjectEventFunction)(wxEventFunction)(wxSplitterEventFunction) &fn,  \
+    (wxObjectEventFunction)(wxEventFunction) wxStaticCastEvent( wxSplitterEventFunction, &fn ),  \
     NULL                                                                    \
   ),
 
     NULL                                                                    \
   ),
 
@@ -387,7 +404,7 @@ typedef void (wxEvtHandler::*wxSplitterEventFunction)(wxSplitterEvent&);
     wxEVT_COMMAND_SPLITTER_UNSPLIT,                                         \
     id,                                                                     \
     -1,                                                                     \
     wxEVT_COMMAND_SPLITTER_UNSPLIT,                                         \
     id,                                                                     \
     -1,                                                                     \
-    (wxObjectEventFunction)(wxEventFunction)(wxSplitterEventFunction) &fn,  \
+    (wxObjectEventFunction)(wxEventFunction) wxStaticCastEvent( wxSplitterEventFunction, &fn ),  \
     NULL                                                                    \
   ),
 
     NULL                                                                    \
   ),