]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/aui/framemanager.h
reverted Julian's r44600, it broke help window behavior so that it prevented apps...
[wxWidgets.git] / include / wx / aui / framemanager.h
index 801c64f44f2c52916a29e2114d6652b0a6f633af..11f3b2508ff10524e3849bcf17437514dc6e2531 100644 (file)
@@ -121,6 +121,7 @@ enum wxAuiPaneInsertLevel
 
 
 // forwards and array declarations
+class WXDLLIMPEXP_FWD_AUI wxAuiFloatingFrame;
 class wxAuiDockUIPart;
 class wxAuiPaneButton;
 class wxAuiPaneInfo;
@@ -133,6 +134,7 @@ WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiDockInfo, wxAuiDockInfoArray, WXDLLIMPEXP
 WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiDockUIPart, wxAuiDockUIPartArray, WXDLLIMPEXP_AUI);
 WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiPaneButton, wxAuiPaneButtonArray, WXDLLIMPEXP_AUI);
 WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiPaneInfo, wxAuiPaneInfoArray, WXDLLIMPEXP_AUI);
+WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxAuiFloatingFrame*, wxAuiFloatingFramePtrArray, class WXDLLIMPEXP_AUI);
 WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxAuiPaneInfo*, wxAuiPaneInfoPtrArray, class WXDLLIMPEXP_AUI);
 WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxAuiDockInfo*, wxAuiDockInfoPtrArray, class WXDLLIMPEXP_AUI);
 #endif // SWIG
@@ -298,6 +300,7 @@ public:
     wxAuiPaneInfo& RightDockable(bool b = true) { return SetFlag(optionRightDockable, b); }
     wxAuiPaneInfo& Floatable(bool b = true) { return SetFlag(optionFloatable, b); }
     wxAuiPaneInfo& Movable(bool b = true) { return SetFlag(optionMovable, b); }
+    wxAuiPaneInfo& DockFixed(bool b = true) { return SetFlag(optionDockFixed, b); }
 
     wxAuiPaneInfo& Dockable(bool b = true)
     {
@@ -375,6 +378,7 @@ public:
         optionActive          = 1 << 14,
         optionGripperTop      = 1 << 15,
         optionMaximized       = 1 << 16,
+        optionDockFixed       = 1 << 17,
 
         buttonClose           = 1 << 21,
         buttonMaximize        = 1 << 22,
@@ -417,11 +421,9 @@ public:
 
 
 
-class WXDLLIMPEXP_FWD_AUI wxAuiFloatingFrame;
-
 class WXDLLIMPEXP_AUI wxAuiManager : public wxEvtHandler
 {
-friend class wxAuiFloatingFrame;
+    friend class wxAuiFloatingFrame;
 
 public:
 
@@ -438,9 +440,6 @@ public:
 
     static wxAuiManager* GetManager(wxWindow* window);
 
-#ifdef SWIG
-    %disownarg( wxAuiDockArt* art_provider );
-#endif
     void SetArtProvider(wxAuiDockArt* art_provider);
     wxAuiDockArt* GetArtProvider() const;
 
@@ -512,6 +511,12 @@ public:
 
 protected:
 
+    // Sometimes floating frames are deleted after wxAuiManager, so we need
+    // to clear m_owner_mgr in the floating frame to avoid a crash. To do so,
+    // we register frames with wxAuiManager so it can keep track.
+    void RegisterFloatingFrame(wxAuiFloatingFrame* frame);
+    void UnregisterFloatingFrame(wxAuiFloatingFrame* frame);
+
     void UpdateHintWindowConfig();
 
     void DoFrameLayout();
@@ -602,6 +607,7 @@ protected:
     wxAuiPaneInfoArray m_panes;     // array of panes structures
     wxAuiDockInfoArray m_docks;     // array of docks structures
     wxAuiDockUIPartArray m_uiparts; // array of UI parts (captions, buttons, etc)
+    wxAuiFloatingFramePtrArray m_floating_frames; // array of floating frames
 
     int m_action;                // current mouse action
     wxPoint m_action_start;      // position where the action click started
@@ -798,16 +804,13 @@ public:
 
 
 #ifndef SWIG
-// wx event machinery
-
-BEGIN_DECLARE_EVENT_TYPES()
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_AUI_PANE_BUTTON, 0)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_AUI_PANE_CLOSE, 0)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_AUI_PANE_MAXIMIZE, 0)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_AUI_PANE_RESTORE, 0)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_AUI_RENDER, 0)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_AUI_FIND_MANAGER, 0)
-END_DECLARE_EVENT_TYPES()
+
+extern WXDLLIMPEXP_AUI const wxEventType wxEVT_AUI_PANE_BUTTON;
+extern WXDLLIMPEXP_AUI const wxEventType wxEVT_AUI_PANE_CLOSE;
+extern WXDLLIMPEXP_AUI const wxEventType wxEVT_AUI_PANE_MAXIMIZE;
+extern WXDLLIMPEXP_AUI const wxEventType wxEVT_AUI_PANE_RESTORE;
+extern WXDLLIMPEXP_AUI const wxEventType wxEVT_AUI_RENDER;
+extern WXDLLIMPEXP_AUI const wxEventType wxEVT_AUI_FIND_MANAGER;
 
 typedef void (wxEvtHandler::*wxAuiManagerEventFunction)(wxAuiManagerEvent&);