]> git.saurik.com Git - wxWidgets.git/commitdiff
[ 1578466 ] Support for custom floating panes
authorRobert Roebling <robert@roebling.de>
Mon, 16 Oct 2006 20:36:11 +0000 (20:36 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 16 Oct 2006 20:36:11 +0000 (20:36 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42062 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/aui/floatpane.h
include/wx/aui/framemanager.h
src/aui/floatpane.cpp
src/aui/framemanager.cpp

index 98f79fe07201f88de7fd0d08e05bef7a95105753..158c0a272ba9937d68fbf27abffb72a5ea9ceb2c 100644 (file)
@@ -35,18 +35,24 @@ public:
     wxFloatingPane(wxWindow* parent,
                    wxFrameManager* owner_mgr,
                    const wxPaneInfo& pane,
-                   wxWindowID id = wxID_ANY
+                   wxWindowID id = wxID_ANY,
+                   long style = wxRESIZE_BORDER | wxSYSTEM_MENU | wxCAPTION |
+                                wxFRAME_NO_TASKBAR | wxFRAME_FLOAT_ON_PARENT | 
+                                wxCLIP_CHILDREN
                    );
     virtual ~wxFloatingPane();
     void SetPaneWindow(const wxPaneInfo& pane);
+    
+protected:
+    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);
-    void OnMoveStart();
-    void OnMoving(const wxRect& window_rect, wxDirection dir);
-    void OnMoveFinished();
     void OnActivate(wxActivateEvent& event);
     static bool isMouseDown();
 private:
index a72a431aeffedddf4fc00bdbcaace9c1ae1c0d5f..29e3abf18f74a23f22ce5379582ed72af824b58f 100644 (file)
@@ -443,6 +443,7 @@ public:
 
 
 public:
+    virtual wxFloatingPane * CreateFloatingFrame(wxWindow* parent, const wxPaneInfo& p);
 
     void DrawHintRect(wxWindow* pane_window,
                        const wxPoint& pt,
index d8e436dc26039afc630e9e046e14a6f10b7461be..5d9c010da25341ee66148f86b5f32d43dcbb170a 100644 (file)
@@ -37,13 +37,15 @@ IMPLEMENT_CLASS( wxFloatingPane, wxFloatingPaneBaseClass )
 wxFloatingPane::wxFloatingPane(wxWindow* parent,
                 wxFrameManager* owner_mgr,
                 const wxPaneInfo& pane,
-                wxWindowID id /*= wxID_ANY*/)
+                wxWindowID id /*= wxID_ANY*/,
+                long style /*=wxRESIZE_BORDER | wxSYSTEM_MENU | wxCAPTION |
+                              wxFRAME_NO_TASKBAR | wxFRAME_FLOAT_ON_PARENT | 
+                              wxCLIP_CHILDREN
+                           */)
                 : wxFloatingPaneBaseClass(parent, id, wxEmptyString,
                         pane.floating_pos, pane.floating_size,
-                        wxRESIZE_BORDER | wxSYSTEM_MENU | wxCAPTION |
+                        style | 
                         (pane.HasCloseButton()?wxCLOSE_BOX:0) |
-                        wxFRAME_NO_TASKBAR |
-                        wxFRAME_FLOAT_ON_PARENT | wxCLIP_CHILDREN |
                         (pane.IsFixed()?0:wxRESIZE_BORDER)
                         )
 {
index 69657cfaf6f3fc94020ea9b10327bfa0499c91cc..6822196ead112dd61e361d8c0a19e4fba7ab3934 100644 (file)
@@ -494,6 +494,12 @@ wxFrameManager::~wxFrameManager()
     delete m_art;
 }
 
+// Creates a floating frame for the windows
+wxFloatingPane * wxFrameManager::CreateFloatingFrame(wxWindow* parent, const wxPaneInfo& p)
+{
+    return new wxFloatingPane(parent, this, p);
+}
+
 // GetPane() looks up a wxPaneInfo structure based
 // on the supplied window pointer.  Upon failure, GetPane()
 // returns an empty wxPaneInfo, a condition which can be checked
@@ -2038,9 +2044,7 @@ void wxFrameManager::Update()
             {
                 // we need to create a frame for this
                 // pane, which has recently been floated
-                wxFloatingPane* frame = new wxFloatingPane(m_frame,
-                                                  this,
-                                                  p);
+                wxFloatingPane* frame = CreateFloatingFrame(m_frame, p);
 
 #if wxCHECK_VERSION(2,7,0)
                 // on MSW and Mac, if the owner desires transparent dragging, and