Moved line-drawing to splittree implementation.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12845 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -64,6 +64,7 @@ public:
|
|||||||
void OnSize(wxSizeEvent& event);
|
void OnSize(wxSizeEvent& event);
|
||||||
void OnExpand(wxTreeEvent& event);
|
void OnExpand(wxTreeEvent& event);
|
||||||
void OnScroll(wxScrollWinEvent& event);
|
void OnScroll(wxScrollWinEvent& event);
|
||||||
|
void OnPaint(wxPaintEvent& event);
|
||||||
|
|
||||||
//// Overrides
|
//// Overrides
|
||||||
// Override this in case we're using the generic tree control.
|
// Override this in case we're using the generic tree control.
|
||||||
|
@@ -169,8 +169,10 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
|
|||||||
m_splitter = new wxThinSplitterWindow(m_scrolledWindow, idSPLITTER_WINDOW, wxDefaultPosition,
|
m_splitter = new wxThinSplitterWindow(m_scrolledWindow, idSPLITTER_WINDOW, wxDefaultPosition,
|
||||||
wxDefaultSize, wxSP_3DBORDER | wxCLIP_CHILDREN /* | wxSP_LIVE_UPDATE */);
|
wxDefaultSize, wxSP_3DBORDER | wxCLIP_CHILDREN /* | wxSP_LIVE_UPDATE */);
|
||||||
m_splitter->SetSashSize(2);
|
m_splitter->SetSashSize(2);
|
||||||
m_tree = new TestTree(m_splitter, idTREE_CTRL, wxDefaultPosition,
|
|
||||||
wxDefaultSize, wxTR_HAS_BUTTONS | wxTR_NO_LINES | wxNO_BORDER );
|
/* Note the wxTR_ROW_LINES style: draws horizontal lines between items */
|
||||||
|
m_tree = new TestTree(m_splitter , idTREE_CTRL, wxDefaultPosition,
|
||||||
|
wxDefaultSize, wxTR_HAS_BUTTONS | wxTR_NO_LINES | wxNO_BORDER | wxTR_ROW_LINES );
|
||||||
m_valueWindow = new TestValueWindow(m_splitter, idVALUE_WINDOW, wxDefaultPosition,
|
m_valueWindow = new TestValueWindow(m_splitter, idVALUE_WINDOW, wxDefaultPosition,
|
||||||
wxDefaultSize, wxNO_BORDER);
|
wxDefaultSize, wxNO_BORDER);
|
||||||
m_splitter->SplitVertically(m_tree, m_valueWindow);
|
m_splitter->SplitVertically(m_tree, m_valueWindow);
|
||||||
@@ -230,7 +232,6 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
|
|||||||
IMPLEMENT_CLASS(TestTree, wxRemotelyScrolledTreeCtrl)
|
IMPLEMENT_CLASS(TestTree, wxRemotelyScrolledTreeCtrl)
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(TestTree, wxRemotelyScrolledTreeCtrl)
|
BEGIN_EVENT_TABLE(TestTree, wxRemotelyScrolledTreeCtrl)
|
||||||
EVT_PAINT(TestTree::OnPaint)
|
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
TestTree::TestTree(wxWindow* parent, wxWindowID id, const wxPoint& pt,
|
TestTree::TestTree(wxWindow* parent, wxWindowID id, const wxPoint& pt,
|
||||||
@@ -273,39 +274,6 @@ TestTree::~TestTree()
|
|||||||
delete m_imageList;
|
delete m_imageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestTree::OnPaint(wxPaintEvent& event)
|
|
||||||
{
|
|
||||||
wxPaintDC dc(this);
|
|
||||||
|
|
||||||
wxTreeCtrl::OnPaint(event);
|
|
||||||
|
|
||||||
// Reset the device origin since it may have been set
|
|
||||||
dc.SetDeviceOrigin(0, 0);
|
|
||||||
|
|
||||||
wxPen pen(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DLIGHT), 1, wxSOLID);
|
|
||||||
dc.SetPen(pen);
|
|
||||||
dc.SetBrush(* wxTRANSPARENT_BRUSH);
|
|
||||||
|
|
||||||
wxSize clientSize = GetClientSize();
|
|
||||||
wxRect itemRect;
|
|
||||||
int cy=0;
|
|
||||||
wxTreeItemId h, lastH;
|
|
||||||
for(h=GetFirstVisibleItem();h;h=GetNextVisible(h))
|
|
||||||
{
|
|
||||||
if (GetBoundingRect(h, itemRect))
|
|
||||||
{
|
|
||||||
cy = itemRect.GetTop();
|
|
||||||
dc.DrawLine(0, cy, clientSize.x, cy);
|
|
||||||
lastH = h;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (GetBoundingRect(lastH, itemRect))
|
|
||||||
{
|
|
||||||
cy = itemRect.GetBottom();
|
|
||||||
dc.DrawLine(0, cy, clientSize.x, cy);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TestValueWindow
|
* TestValueWindow
|
||||||
*/
|
*/
|
||||||
|
@@ -45,6 +45,7 @@ protected:
|
|||||||
wxRemotelyScrolledTreeCtrl* m_tree;
|
wxRemotelyScrolledTreeCtrl* m_tree;
|
||||||
wxThinSplitterWindow* m_splitter;
|
wxThinSplitterWindow* m_splitter;
|
||||||
wxSplitterScrolledWindow* m_scrolledWindow;
|
wxSplitterScrolledWindow* m_scrolledWindow;
|
||||||
|
//wxScrolledWindow* m_scrolledWindow;
|
||||||
TestValueWindow* m_valueWindow;
|
TestValueWindow* m_valueWindow;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -78,7 +79,6 @@ public:
|
|||||||
const wxSize& sz = wxDefaultSize, long style = wxTR_HAS_BUTTONS);
|
const wxSize& sz = wxDefaultSize, long style = wxTR_HAS_BUTTONS);
|
||||||
~TestTree();
|
~TestTree();
|
||||||
|
|
||||||
void OnPaint(wxPaintEvent& event);
|
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
protected:
|
protected:
|
||||||
wxImageList* m_imageList;
|
wxImageList* m_imageList;
|
||||||
|
@@ -59,6 +59,7 @@ BEGIN_EVENT_TABLE(wxRemotelyScrolledTreeCtrl, wxGenericTreeCtrl)
|
|||||||
BEGIN_EVENT_TABLE(wxRemotelyScrolledTreeCtrl, wxTreeCtrl)
|
BEGIN_EVENT_TABLE(wxRemotelyScrolledTreeCtrl, wxTreeCtrl)
|
||||||
#endif
|
#endif
|
||||||
EVT_SIZE(wxRemotelyScrolledTreeCtrl::OnSize)
|
EVT_SIZE(wxRemotelyScrolledTreeCtrl::OnSize)
|
||||||
|
EVT_PAINT(wxRemotelyScrolledTreeCtrl::OnPaint)
|
||||||
EVT_TREE_ITEM_EXPANDED(-1, wxRemotelyScrolledTreeCtrl::OnExpand)
|
EVT_TREE_ITEM_EXPANDED(-1, wxRemotelyScrolledTreeCtrl::OnExpand)
|
||||||
EVT_TREE_ITEM_COLLAPSED(-1, wxRemotelyScrolledTreeCtrl::OnExpand)
|
EVT_TREE_ITEM_COLLAPSED(-1, wxRemotelyScrolledTreeCtrl::OnExpand)
|
||||||
EVT_SCROLLWIN(wxRemotelyScrolledTreeCtrl::OnScroll)
|
EVT_SCROLLWIN(wxRemotelyScrolledTreeCtrl::OnScroll)
|
||||||
@@ -245,6 +246,43 @@ void wxRemotelyScrolledTreeCtrl::OnExpand(wxTreeEvent& event)
|
|||||||
m_companionWindow->GetEventHandler()->ProcessEvent(event);
|
m_companionWindow->GetEventHandler()->ProcessEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxRemotelyScrolledTreeCtrl::OnPaint(wxPaintEvent& event)
|
||||||
|
{
|
||||||
|
wxPaintDC dc(this);
|
||||||
|
|
||||||
|
wxTreeCtrl::OnPaint(event);
|
||||||
|
|
||||||
|
if ((GetWindowStyle() & wxTR_ROW_LINES) == 0)
|
||||||
|
return ;
|
||||||
|
|
||||||
|
// Reset the device origin since it may have been set
|
||||||
|
dc.SetDeviceOrigin(0, 0);
|
||||||
|
|
||||||
|
wxPen pen(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DLIGHT), 1, wxSOLID);
|
||||||
|
dc.SetPen(pen);
|
||||||
|
dc.SetBrush(* wxTRANSPARENT_BRUSH);
|
||||||
|
|
||||||
|
wxSize clientSize = GetClientSize();
|
||||||
|
wxRect itemRect;
|
||||||
|
int cy=0;
|
||||||
|
wxTreeItemId h, lastH;
|
||||||
|
for(h=GetFirstVisibleItem();h;h=GetNextVisible(h))
|
||||||
|
{
|
||||||
|
if (GetBoundingRect(h, itemRect))
|
||||||
|
{
|
||||||
|
cy = itemRect.GetTop();
|
||||||
|
dc.DrawLine(0, cy, clientSize.x, cy);
|
||||||
|
lastH = h;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (GetBoundingRect(lastH, itemRect))
|
||||||
|
{
|
||||||
|
cy = itemRect.GetBottom();
|
||||||
|
dc.DrawLine(0, cy, clientSize.x, cy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Adjust the containing wxScrolledWindow's scrollbars appropriately
|
// Adjust the containing wxScrolledWindow's scrollbars appropriately
|
||||||
void wxRemotelyScrolledTreeCtrl::AdjustRemoteScrollbars()
|
void wxRemotelyScrolledTreeCtrl::AdjustRemoteScrollbars()
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user