moved wxNotebook::HitTest() to the base book control class; implemented it for wxList/Treebook
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39339 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -119,14 +119,8 @@ public:
|
|||||||
virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const = 0;
|
virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const = 0;
|
||||||
|
|
||||||
// get/set size of area between book control area and page area
|
// get/set size of area between book control area and page area
|
||||||
inline unsigned int GetInternalBorder() const
|
unsigned int GetInternalBorder() const { return m_internalBorder; }
|
||||||
{
|
void SetInternalBorder(unsigned int border) { m_internalBorder = border; }
|
||||||
return m_internalBorder;
|
|
||||||
}
|
|
||||||
void SetInternalBorder(unsigned int internalBorder)
|
|
||||||
{
|
|
||||||
m_internalBorder = internalBorder;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sets/gets the margin around the controller
|
// Sets/gets the margin around the controller
|
||||||
void SetControlMargin(int margin) { m_controlMargin = margin; }
|
void SetControlMargin(int margin) { m_controlMargin = margin; }
|
||||||
@@ -198,6 +192,13 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// hit test: returns which page is hit and, optionally, where (icon, label)
|
||||||
|
virtual int HitTest(const wxPoint& WXUNUSED(pt),
|
||||||
|
long * WXUNUSED(flags) = NULL) const
|
||||||
|
{
|
||||||
|
return wxNOT_FOUND;
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Should we accept NULL page pointers in Add/InsertPage()?
|
// Should we accept NULL page pointers in Add/InsertPage()?
|
||||||
//
|
//
|
||||||
|
@@ -78,6 +78,9 @@ protected:
|
|||||||
// get the size which the list control should have
|
// get the size which the list control should have
|
||||||
virtual wxSize GetControllerSize() const;
|
virtual wxSize GetControllerSize() const;
|
||||||
|
|
||||||
|
// return the page corresponding to the tab at the specified position
|
||||||
|
virtual int HitTest(const wxPoint& pt, long *flags = NULL) const;
|
||||||
|
|
||||||
// event handlers
|
// event handlers
|
||||||
void OnListSelected(wxListEvent& event);
|
void OnListSelected(wxListEvent& event);
|
||||||
void OnSize(wxSizeEvent& event);
|
void OnSize(wxSizeEvent& event);
|
||||||
|
@@ -144,6 +144,9 @@ protected:
|
|||||||
// This subclass of wxBookCtrlBase accepts NULL page pointers (empty pages)
|
// This subclass of wxBookCtrlBase accepts NULL page pointers (empty pages)
|
||||||
virtual bool AllowNullPage() const { return true; }
|
virtual bool AllowNullPage() const { return true; }
|
||||||
|
|
||||||
|
// return the page corresponding to the tab at the specified position
|
||||||
|
virtual int HitTest(const wxPoint& pt, long *flags = NULL) const;
|
||||||
|
|
||||||
// event handlers
|
// event handlers
|
||||||
void OnTreeSelectionChange(wxTreeEvent& event);
|
void OnTreeSelectionChange(wxTreeEvent& event);
|
||||||
void OnTreeNodeExpandedCollapsed(wxTreeEvent& event);
|
void OnTreeNodeExpandedCollapsed(wxTreeEvent& event);
|
||||||
|
@@ -161,6 +161,26 @@ void wxListbook::OnSize(wxSizeEvent& event)
|
|||||||
wxBookCtrlBase::OnSize(event);
|
wxBookCtrlBase::OnSize(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int wxListbook::HitTest(const wxPoint& pt, long * WXUNUSED(flags)) const
|
||||||
|
{
|
||||||
|
int pagePos = wxNOT_FOUND;
|
||||||
|
|
||||||
|
const wxPoint clientPt = ClientToScreen(GetListView()->ScreenToClient(pt));
|
||||||
|
|
||||||
|
if ( wxRect(GetListView()->GetSize()).Inside(clientPt) )
|
||||||
|
{
|
||||||
|
int flagsList;
|
||||||
|
pagePos = GetListView()->HitTest(clientPt, flagsList);
|
||||||
|
|
||||||
|
if ( !(flagsList & wxLIST_HITTEST_ONITEM) )
|
||||||
|
{
|
||||||
|
pagePos = wxNOT_FOUND;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pagePos;
|
||||||
|
}
|
||||||
|
|
||||||
wxSize wxListbook::CalcSizeFromPage(const wxSize& sizePage) const
|
wxSize wxListbook::CalcSizeFromPage(const wxSize& sizePage) const
|
||||||
{
|
{
|
||||||
// we need to add the size of the list control and the border between
|
// we need to add the size of the list control and the border between
|
||||||
|
@@ -650,6 +650,20 @@ int wxTreebook::DoSetSelection(size_t pagePos)
|
|||||||
return oldSel;
|
return oldSel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxTreebookPage *wxTreebook::DoGetCurrentPage() const
|
||||||
|
{
|
||||||
|
if ( m_selection == wxNOT_FOUND )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
wxTreebookPage *page = wxBookCtrlBase::GetPage(m_selection);
|
||||||
|
if ( !page && m_actualSelection != wxNOT_FOUND )
|
||||||
|
{
|
||||||
|
page = wxBookCtrlBase::GetPage(m_actualSelection);
|
||||||
|
}
|
||||||
|
|
||||||
|
return page;
|
||||||
|
}
|
||||||
|
|
||||||
void wxTreebook::SetImageList(wxImageList *imageList)
|
void wxTreebook::SetImageList(wxImageList *imageList)
|
||||||
{
|
{
|
||||||
wxBookCtrlBase::SetImageList(imageList);
|
wxBookCtrlBase::SetImageList(imageList);
|
||||||
@@ -709,18 +723,25 @@ void wxTreebook::OnTreeNodeExpandedCollapsed(wxTreeEvent & event)
|
|||||||
// wxTreebook geometry management
|
// wxTreebook geometry management
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
wxTreebookPage * wxTreebook::DoGetCurrentPage() const
|
int wxTreebook::HitTest(wxPoint const & pt, long * WXUNUSED(flags)) const
|
||||||
{
|
{
|
||||||
if ( m_selection == wxNOT_FOUND )
|
int pagePos = wxNOT_FOUND;
|
||||||
return NULL;
|
|
||||||
|
|
||||||
wxTreebookPage *page = wxBookCtrlBase::GetPage(m_selection);
|
wxTreeCtrl * const tree = GetTreeCtrl();
|
||||||
if ( !page && m_actualSelection != wxNOT_FOUND )
|
const wxPoint treePt = ClientToScreen(tree->ScreenToClient(pt));
|
||||||
|
|
||||||
|
if ( wxRect(tree->GetSize()).Inside(treePt) )
|
||||||
{
|
{
|
||||||
page = wxBookCtrlBase::GetPage(m_actualSelection);
|
int flagsTree;
|
||||||
|
wxTreeItemId id = tree->HitTest(treePt, flagsTree);
|
||||||
|
|
||||||
|
if ( id.IsOk() && (flagsTree & wxTREE_HITTEST_ONITEM) )
|
||||||
|
{
|
||||||
|
pagePos = DoInternalFindPageById(id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return page;
|
return pagePos;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_TREEBOOK
|
#endif // wxUSE_TREEBOOK
|
||||||
|
Reference in New Issue
Block a user