]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/aui/floatpane.h
prevent crash if panel/kicker is killed, bug 1872724
[wxWidgets.git] / include / wx / aui / floatpane.h
index d2ef1b0600527564f22072febf7f3b54d4d71aea..6e98d624b9510aeb589e1c1370e2cd36a382aafd 100644 (file)
 
 #if wxUSE_AUI
 
 
 #if wxUSE_AUI
 
-#include "wx/frame.h"
-
-#if defined( __WXMSW__ ) || defined( __WXMAC__ )
-#include "wx/minifram.h"
-#define wxFloatingPaneBaseClass wxMiniFrame
+#if wxUSE_MINIFRAME
+    #include "wx/minifram.h"
+    #define wxAuiFloatingFrameBaseClass wxMiniFrame
 #else
 #else
-#define wxFloatingPaneBaseClass wxFrame
+    #include "wx/frame.h"
+    #define wxAuiFloatingFrameBaseClass wxFrame
 #endif
 
 #endif
 
-class WXDLLIMPEXP_AUI wxFloatingPane : public wxFloatingPaneBaseClass
+class WXDLLIMPEXP_AUI wxAuiFloatingFrame : public wxAuiFloatingFrameBaseClass
 {
 {
+    friend class wxAuiManager;
+
 public:
 public:
-    wxFloatingPane(wxWindow* parent,
-                   wxFrameManager* owner_mgr,
-                   const wxPaneInfo& pane,
-                   wxWindowID id = wxID_ANY
+    wxAuiFloatingFrame(wxWindow* parent,
+                   wxAuiManager* owner_mgr,
+                   const wxAuiPaneInfo& pane,
+                   wxWindowID id = wxID_ANY,
+                   long style = wxRESIZE_BORDER | wxSYSTEM_MENU | wxCAPTION |
+                                wxFRAME_NO_TASKBAR | wxFRAME_FLOAT_ON_PARENT | 
+                                wxCLIP_CHILDREN
                    );
                    );
-    ~wxFloatingPane();
-    void SetPaneWindow(const wxPaneInfo& pane);
+    virtual ~wxAuiFloatingFrame();
+    void SetPaneWindow(const wxAuiPaneInfo& pane);
+    wxAuiManager* GetOwnerManager() const;
+    
+protected:
+    void SetOwnerManager(wxAuiManager* owner_mgr);
+    virtual void OnMoveStart();
+    virtual void OnMoving(const wxRect& window_rect, wxDirection dir);
+    virtual void OnMoveFinished();
+    
 private:
     void OnSize(wxSizeEvent& event);
     void OnClose(wxCloseEvent& event);
     void OnMoveEvent(wxMoveEvent& event);
     void OnIdle(wxIdleEvent& event);
 private:
     void OnSize(wxSizeEvent& event);
     void OnClose(wxCloseEvent& event);
     void OnMoveEvent(wxMoveEvent& event);
     void OnIdle(wxIdleEvent& event);
-    void OnMoveStart();
-    void OnMoving(const wxRect& window_rect);
-    void OnMoveFinished();
     void OnActivate(wxActivateEvent& event);
     static bool isMouseDown();
     void OnActivate(wxActivateEvent& event);
     static bool isMouseDown();
+    
 private:
     wxWindow* m_pane_window;    // pane window being managed
 private:
     wxWindow* m_pane_window;    // pane window being managed
+    bool m_solid_drag;          // true if system uses solid window drag
     bool m_moving;
     wxRect m_last_rect;
     bool m_moving;
     wxRect m_last_rect;
+    wxRect m_last2_rect;
+    wxRect m_last3_rect;
     wxSize m_last_size;
     wxSize m_last_size;
+    wxDirection m_lastDirection;
 
 
-    wxFrameManager* m_owner_mgr;
-    wxFrameManager m_mgr;
+    wxAuiManager* m_owner_mgr;
+    wxAuiManager m_mgr;
 
 #ifndef SWIG
     DECLARE_EVENT_TABLE()
 
 #ifndef SWIG
     DECLARE_EVENT_TABLE()
-    DECLARE_CLASS(wxFloatingPaneBaseClass)
+    DECLARE_CLASS(wxAuiFloatingFrame)
 #endif // SWIG
 };
 
 #endif // SWIG
 };