added wxVListBox::GetItemRect() (#9711)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54601 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
1bf55f4cda
commit
293b15f78d
@ -127,6 +127,8 @@ public:
|
||||
// get the background colour of selected cells
|
||||
const wxColour& GetSelectionBackground() const { return m_colBgSel; }
|
||||
|
||||
// get the item rect, returns empty rect if the item is not visible
|
||||
wxRect GetItemRect(size_t n) const;
|
||||
|
||||
// operations
|
||||
// ----------
|
||||
|
@ -125,6 +125,13 @@ public:
|
||||
*/
|
||||
wxPoint GetMargins() const;
|
||||
|
||||
/**
|
||||
Returns the rectangle occupied by this item in physical coordinates.
|
||||
|
||||
If the item is not currently visible, returns an empty rectangle.
|
||||
*/
|
||||
wxRect GetItemRect(size_t item) const;
|
||||
|
||||
/**
|
||||
Returns the index of the next selected item or @c wxNOT_FOUND if there
|
||||
are no more.
|
||||
|
@ -116,6 +116,7 @@ public:
|
||||
void OnToggleMulti(wxCommandEvent& event);
|
||||
void OnSelectAll(wxCommandEvent& event);
|
||||
void OnUpdateItem(wxCommandEvent& event);
|
||||
void OnGetItemRect(wxCommandEvent& event);
|
||||
|
||||
void OnSetBgCol(wxCommandEvent& event);
|
||||
void OnSetSelBgCol(wxCommandEvent& event);
|
||||
@ -172,6 +173,7 @@ enum
|
||||
HtmlLbox_ToggleMulti,
|
||||
HtmlLbox_SelectAll,
|
||||
HtmlLbox_UpdateItem,
|
||||
HtmlLbox_GetItemRect,
|
||||
|
||||
HtmlLbox_SetBgCol,
|
||||
HtmlLbox_SetSelBgCol,
|
||||
@ -199,6 +201,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||
EVT_MENU(HtmlLbox_ToggleMulti, MyFrame::OnToggleMulti)
|
||||
EVT_MENU(HtmlLbox_SelectAll, MyFrame::OnSelectAll)
|
||||
EVT_MENU(HtmlLbox_UpdateItem, MyFrame::OnUpdateItem)
|
||||
EVT_MENU(HtmlLbox_GetItemRect, MyFrame::OnGetItemRect)
|
||||
|
||||
EVT_MENU(HtmlLbox_About, MyFrame::OnAbout)
|
||||
|
||||
@ -265,6 +268,7 @@ MyFrame::MyFrame()
|
||||
menuHLbox->AppendSeparator();
|
||||
menuHLbox->Append(HtmlLbox_SelectAll, _T("Select &all items\tCtrl-A"));
|
||||
menuHLbox->Append(HtmlLbox_UpdateItem, _T("Update &first item\tCtrl-U"));
|
||||
menuHLbox->Append(HtmlLbox_GetItemRect, _T("Show &rectangle of item #10\tCtrl-R"));
|
||||
menuHLbox->AppendSeparator();
|
||||
menuHLbox->Append(HtmlLbox_SetBgCol, _T("Set &background...\tCtrl-B"));
|
||||
menuHLbox->Append(HtmlLbox_SetSelBgCol,
|
||||
@ -434,6 +438,14 @@ void MyFrame::OnUpdateItem(wxCommandEvent& WXUNUSED(event))
|
||||
GetMyBox()->UpdateFirstItem();
|
||||
}
|
||||
|
||||
void MyFrame::OnGetItemRect(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
static const int ITEM = 10;
|
||||
const wxRect r = m_hlbox->GetItemRect(ITEM);
|
||||
wxLogMessage("Rect of item %d: (%d, %d)-(%d, %d)",
|
||||
ITEM, r.x, r.y, r.x + r.width, r.y + r.height);
|
||||
}
|
||||
|
||||
void MyFrame::OnSetBgCol(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
wxColour col = wxGetColourFromUser(this, m_hlbox->GetBackgroundColour());
|
||||
|
@ -325,6 +325,31 @@ void wxVListBox::RefreshSelected()
|
||||
}
|
||||
}
|
||||
|
||||
wxRect wxVListBox::GetItemRect(size_t n) const
|
||||
{
|
||||
wxRect itemrect;
|
||||
|
||||
// check that this item is visible
|
||||
const size_t lineMax = GetVisibleEnd();
|
||||
if ( n >= lineMax )
|
||||
return itemrect;
|
||||
size_t line = GetVisibleBegin();
|
||||
if ( n < line )
|
||||
return itemrect;
|
||||
|
||||
while ( line <= n )
|
||||
{
|
||||
itemrect.y += itemrect.height;
|
||||
itemrect.height = OnGetRowHeight(line);
|
||||
|
||||
line++;
|
||||
}
|
||||
|
||||
itemrect.width = GetClientSize().x;
|
||||
|
||||
return itemrect;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxVListBox appearance parameters
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user