X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fc7a2a602b4bd9308be21bc07e40a680f483438e..f5e0b4bc7c729ff41e66fb7894fb1387f860bdb2:/include/wx/generic/splitter.h diff --git a/include/wx/generic/splitter.h b/include/wx/generic/splitter.h index 40a07464de..2102a1bb51 100644 --- a/include/wx/generic/splitter.h +++ b/include/wx/generic/splitter.h @@ -12,7 +12,7 @@ #ifndef __SPLITTERH_G__ #define __SPLITTERH_G__ -#if defined(__GNUG__) && !defined(__APPLE__) +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "splitter.h" #endif @@ -49,7 +49,7 @@ enum // The MFC splitter window manages scrollbars as well so is able to // put sash buttons on the scrollbars, but we probably don't want to go down // this path. -// 2) for wxWindows 2.0, we must find a way to set the WS_CLIPCHILDREN style +// 2) for wxWidgets 2.0, we must find a way to set the WS_CLIPCHILDREN style // to prevent flickering. (WS_CLIPCHILDREN doesn't work in all cases so can't be // standard). @@ -67,7 +67,7 @@ public: } // Normal constructor - wxSplitterWindow(wxWindow *parent, wxWindowID id = -1, + wxSplitterWindow(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSP_3D, @@ -79,7 +79,7 @@ public: virtual ~wxSplitterWindow(); - bool Create(wxWindow *parent, wxWindowID id = -1, + bool Create(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSP_3D, @@ -108,7 +108,7 @@ public: // 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. @@ -129,6 +129,11 @@ public: // 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); } @@ -145,7 +150,7 @@ public: 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; } @@ -162,7 +167,7 @@ public: 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); @@ -213,7 +218,7 @@ protected: 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); @@ -239,18 +244,24 @@ protected: // 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); + // 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; @@ -266,6 +277,12 @@ protected: 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(); @@ -359,8 +376,8 @@ typedef void (wxEvtHandler::*wxSplitterEventFunction)(wxSplitterEvent&); DECLARE_EVENT_TABLE_ENTRY( \ wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, \ id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxSplitterEventFunction) &fn, \ + wxID_ANY, \ + (wxObjectEventFunction)(wxEventFunction) wxStaticCastEvent( wxSplitterEventFunction, &fn ), \ NULL \ ), @@ -368,8 +385,8 @@ typedef void (wxEvtHandler::*wxSplitterEventFunction)(wxSplitterEvent&); DECLARE_EVENT_TABLE_ENTRY( \ wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING, \ id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxSplitterEventFunction) &fn, \ + wxID_ANY, \ + (wxObjectEventFunction)(wxEventFunction) wxStaticCastEvent( wxSplitterEventFunction, &fn ), \ NULL \ ), @@ -377,8 +394,8 @@ typedef void (wxEvtHandler::*wxSplitterEventFunction)(wxSplitterEvent&); DECLARE_EVENT_TABLE_ENTRY( \ wxEVT_COMMAND_SPLITTER_DOUBLECLICKED, \ id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxSplitterEventFunction) &fn, \ + wxID_ANY, \ + (wxObjectEventFunction)(wxEventFunction) wxStaticCastEvent( wxSplitterEventFunction, &fn ), \ NULL \ ), @@ -386,8 +403,8 @@ typedef void (wxEvtHandler::*wxSplitterEventFunction)(wxSplitterEvent&); DECLARE_EVENT_TABLE_ENTRY( \ wxEVT_COMMAND_SPLITTER_UNSPLIT, \ id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxSplitterEventFunction) &fn, \ + wxID_ANY, \ + (wxObjectEventFunction)(wxEventFunction) wxStaticCastEvent( wxSplitterEventFunction, &fn ), \ NULL \ ),