[ 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:
parent
fa96a36ecf
commit
bc429ce01f
@ -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:
|
||||
|
@ -443,6 +443,7 @@ public:
|
||||
|
||||
|
||||
public:
|
||||
virtual wxFloatingPane * CreateFloatingFrame(wxWindow* parent, const wxPaneInfo& p);
|
||||
|
||||
void DrawHintRect(wxWindow* pane_window,
|
||||
const wxPoint& pt,
|
||||
|
@ -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)
|
||||
)
|
||||
{
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user