[ 1578466 ] Support for custom floating panes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42062 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -35,18 +35,24 @@ public:
|
|||||||
wxFloatingPane(wxWindow* parent,
|
wxFloatingPane(wxWindow* parent,
|
||||||
wxFrameManager* owner_mgr,
|
wxFrameManager* owner_mgr,
|
||||||
const wxPaneInfo& pane,
|
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();
|
virtual ~wxFloatingPane();
|
||||||
void SetPaneWindow(const wxPaneInfo& pane);
|
void SetPaneWindow(const wxPaneInfo& pane);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void OnMoveStart();
|
||||||
|
virtual void OnMoving(const wxRect& window_rect, wxDirection dir);
|
||||||
|
virtual void OnMoveFinished();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void OnSize(wxSizeEvent& event);
|
void OnSize(wxSizeEvent& event);
|
||||||
void OnClose(wxCloseEvent& event);
|
void OnClose(wxCloseEvent& event);
|
||||||
void OnMoveEvent(wxMoveEvent& event);
|
void OnMoveEvent(wxMoveEvent& event);
|
||||||
void OnIdle(wxIdleEvent& event);
|
void OnIdle(wxIdleEvent& event);
|
||||||
void OnMoveStart();
|
|
||||||
void OnMoving(const wxRect& window_rect, wxDirection dir);
|
|
||||||
void OnMoveFinished();
|
|
||||||
void OnActivate(wxActivateEvent& event);
|
void OnActivate(wxActivateEvent& event);
|
||||||
static bool isMouseDown();
|
static bool isMouseDown();
|
||||||
private:
|
private:
|
||||||
|
@@ -443,6 +443,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
virtual wxFloatingPane * CreateFloatingFrame(wxWindow* parent, const wxPaneInfo& p);
|
||||||
|
|
||||||
void DrawHintRect(wxWindow* pane_window,
|
void DrawHintRect(wxWindow* pane_window,
|
||||||
const wxPoint& pt,
|
const wxPoint& pt,
|
||||||
|
@@ -37,13 +37,15 @@ IMPLEMENT_CLASS( wxFloatingPane, wxFloatingPaneBaseClass )
|
|||||||
wxFloatingPane::wxFloatingPane(wxWindow* parent,
|
wxFloatingPane::wxFloatingPane(wxWindow* parent,
|
||||||
wxFrameManager* owner_mgr,
|
wxFrameManager* owner_mgr,
|
||||||
const wxPaneInfo& pane,
|
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,
|
: wxFloatingPaneBaseClass(parent, id, wxEmptyString,
|
||||||
pane.floating_pos, pane.floating_size,
|
pane.floating_pos, pane.floating_size,
|
||||||
wxRESIZE_BORDER | wxSYSTEM_MENU | wxCAPTION |
|
style |
|
||||||
(pane.HasCloseButton()?wxCLOSE_BOX:0) |
|
(pane.HasCloseButton()?wxCLOSE_BOX:0) |
|
||||||
wxFRAME_NO_TASKBAR |
|
|
||||||
wxFRAME_FLOAT_ON_PARENT | wxCLIP_CHILDREN |
|
|
||||||
(pane.IsFixed()?0:wxRESIZE_BORDER)
|
(pane.IsFixed()?0:wxRESIZE_BORDER)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@@ -494,6 +494,12 @@ wxFrameManager::~wxFrameManager()
|
|||||||
delete m_art;
|
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
|
// GetPane() looks up a wxPaneInfo structure based
|
||||||
// on the supplied window pointer. Upon failure, GetPane()
|
// on the supplied window pointer. Upon failure, GetPane()
|
||||||
// returns an empty wxPaneInfo, a condition which can be checked
|
// 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
|
// we need to create a frame for this
|
||||||
// pane, which has recently been floated
|
// pane, which has recently been floated
|
||||||
wxFloatingPane* frame = new wxFloatingPane(m_frame,
|
wxFloatingPane* frame = CreateFloatingFrame(m_frame, p);
|
||||||
this,
|
|
||||||
p);
|
|
||||||
|
|
||||||
#if wxCHECK_VERSION(2,7,0)
|
#if wxCHECK_VERSION(2,7,0)
|
||||||
// on MSW and Mac, if the owner desires transparent dragging, and
|
// on MSW and Mac, if the owner desires transparent dragging, and
|
||||||
|
Reference in New Issue
Block a user