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:
Julian Smart
2001-12-03 20:52:06 +00:00
parent 78e8819c2e
commit a18b162dc1
4 changed files with 44 additions and 37 deletions

View File

@@ -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.

View File

@@ -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
*/ */

View File

@@ -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;

View File

@@ -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()
{ {