Apply wxListCtrl patch which fixes some crashes
and let the generic wxListCtrl show context menus like the MSW one. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38402 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
b260e323ea
commit
8b1464af32
@ -2858,6 +2858,7 @@ void wxListMainWindow::OnRenameCancelled(size_t itemEdit)
|
|||||||
|
|
||||||
void wxListMainWindow::OnMouse( wxMouseEvent &event )
|
void wxListMainWindow::OnMouse( wxMouseEvent &event )
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef __WXMAC__
|
#ifdef __WXMAC__
|
||||||
// On wxMac we can't depend on the EVT_KILL_FOCUS event to properly
|
// On wxMac we can't depend on the EVT_KILL_FOCUS event to properly
|
||||||
// shutdown the edit control when the mouse is clicked elsewhere on the
|
// shutdown the edit control when the mouse is clicked elsewhere on the
|
||||||
@ -2879,7 +2880,15 @@ void wxListMainWindow::OnMouse( wxMouseEvent &event )
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( !HasCurrent() || IsEmpty() )
|
if ( !HasCurrent() || IsEmpty() )
|
||||||
|
{
|
||||||
|
if (event.RightDown())
|
||||||
|
{
|
||||||
|
SendNotify( (size_t)-1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, event.GetPosition() );
|
||||||
|
// Allow generation of context menu event
|
||||||
|
event.Skip();
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_dirty)
|
if (m_dirty)
|
||||||
return;
|
return;
|
||||||
@ -2949,8 +2958,19 @@ void wxListMainWindow::OnMouse( wxMouseEvent &event )
|
|||||||
|
|
||||||
if ( !hitResult )
|
if ( !hitResult )
|
||||||
{
|
{
|
||||||
// outside of any item, reset the selection and bail out
|
// outside of any item
|
||||||
HighlightAll(false);
|
if (event.RightDown())
|
||||||
|
{
|
||||||
|
SendNotify( (size_t) -1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, event.GetPosition() );
|
||||||
|
// Allow generation of context menu event
|
||||||
|
event.Skip();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// reset the selection and bail out
|
||||||
|
HighlightAll(false);
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3264,6 +3284,10 @@ void wxListMainWindow::OnChar( wxKeyEvent &event )
|
|||||||
|
|
||||||
case WXK_PAGEUP:
|
case WXK_PAGEUP:
|
||||||
{
|
{
|
||||||
|
// we get a floating point exception without this
|
||||||
|
if (m_linesPerPage == 0)
|
||||||
|
m_linesPerPage = 1;
|
||||||
|
|
||||||
int steps = InReportView() ? m_linesPerPage - 1 : m_current % m_linesPerPage;
|
int steps = InReportView() ? m_linesPerPage - 1 : m_current % m_linesPerPage;
|
||||||
|
|
||||||
int index = m_current - steps;
|
int index = m_current - steps;
|
||||||
@ -3276,6 +3300,10 @@ void wxListMainWindow::OnChar( wxKeyEvent &event )
|
|||||||
|
|
||||||
case WXK_PAGEDOWN:
|
case WXK_PAGEDOWN:
|
||||||
{
|
{
|
||||||
|
// we get a floating point exception without this
|
||||||
|
if (m_linesPerPage == 0)
|
||||||
|
m_linesPerPage = 1;
|
||||||
|
|
||||||
int steps = InReportView()
|
int steps = InReportView()
|
||||||
? m_linesPerPage - 1
|
? m_linesPerPage - 1
|
||||||
: m_linesPerPage - (m_current % m_linesPerPage) - 1;
|
: m_linesPerPage - (m_current % m_linesPerPage) - 1;
|
||||||
@ -4588,7 +4616,13 @@ void wxListMainWindow::SortItems( wxListCtrlCompare fn, long data )
|
|||||||
|
|
||||||
void wxListMainWindow::OnScroll(wxScrollWinEvent& event)
|
void wxListMainWindow::OnScroll(wxScrollWinEvent& event)
|
||||||
{
|
{
|
||||||
// update our idea of which lines are shown when we redraw the window the
|
int cw, ch, vw, vh;
|
||||||
|
GetVirtualSize(&vw, &vh);
|
||||||
|
GetClientSize(&cw, &ch);
|
||||||
|
|
||||||
|
if( event.GetOrientation() == wxVERTICAL && ch >= vh)
|
||||||
|
return;
|
||||||
|
// update our idea of which lines are shown when we redraw the window the
|
||||||
// next time
|
// next time
|
||||||
ResetVisibleLinesRange();
|
ResetVisibleLinesRange();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user