[ 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:
Robert Roebling 2006-10-16 20:36:11 +00:00
parent fa96a36ecf
commit bc429ce01f
4 changed files with 24 additions and 11 deletions

View 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:

View File

@ -443,6 +443,7 @@ public:
public:
virtual wxFloatingPane * CreateFloatingFrame(wxWindow* parent, const wxPaneInfo& p);
void DrawHintRect(wxWindow* pane_window,
const wxPoint& pt,

View 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)
)
{

View 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