X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/36a03ed8c3d4670649eaf7b0bc7b44c39ea24505..bdb7278a27d12c030edd59307b09103e5ade1501:/src/generic/listctrl.cpp diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index f040ab1d53..4e49115d1a 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -42,6 +42,7 @@ #include "wx/dcclient.h" #include "wx/dcscreen.h" #include "wx/math.h" + #include "wx/settings.h" #endif #include "wx/imaglist.h" @@ -1906,6 +1907,9 @@ void wxListHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) void wxListHeaderWindow::DrawCurrent() { +#if 1 + m_owner->SetColumnWidth( m_column, m_currentX - m_minX ); +#else int x1 = m_currentX; int y1 = 0; m_owner->ClientToScreen( &x1, &y1 ); @@ -1928,6 +1932,7 @@ void wxListHeaderWindow::DrawCurrent() dc.SetPen( wxNullPen ); dc.SetBrush( wxNullBrush ); +#endif } void wxListHeaderWindow::OnMouse( wxMouseEvent &event ) @@ -2458,9 +2463,9 @@ wxRect wxListMainWindow::GetLineLabelRect(size_t line) const } wxRect rect; - rect.x = HEADER_OFFSET_X; + rect.x = image_x + HEADER_OFFSET_X; rect.y = GetLineY(line); - rect.width = GetColumnWidth(0); + rect.width = GetColumnWidth(0) - image_x; rect.height = GetLineHeight(); return rect; @@ -3005,7 +3010,7 @@ void wxListMainWindow::OnMouse( wxMouseEvent &event ) #endif // __WXMAC__ if ( event.LeftDown() ) - SetFocus(); + SetFocusIgnoringChildren(); event.SetEventObject( GetParent() ); if ( GetParent()->GetEventHandler()->ProcessEvent( event) ) @@ -3023,8 +3028,13 @@ void wxListMainWindow::OnMouse( wxMouseEvent &event ) if (event.RightDown()) { SendNotify( (size_t)-1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, event.GetPosition() ); - // Allow generation of context menu event - event.Skip(); + + wxContextMenuEvent evtCtx( + wxEVT_CONTEXT_MENU, + GetParent()->GetId(), + ClientToScreen(event.GetPosition())); + evtCtx.SetEventObject(GetParent()); + GetParent()->GetEventHandler()->ProcessEvent(evtCtx); } return; } @@ -3101,8 +3111,13 @@ void wxListMainWindow::OnMouse( wxMouseEvent &event ) if (event.RightDown()) { SendNotify( (size_t) -1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, event.GetPosition() ); - // Allow generation of context menu event - event.Skip(); + + wxContextMenuEvent evtCtx( + wxEVT_CONTEXT_MENU, + GetParent()->GetId(), + ClientToScreen(event.GetPosition())); + evtCtx.SetEventObject(GetParent()); + GetParent()->GetEventHandler()->ProcessEvent(evtCtx); } else { @@ -3150,15 +3165,12 @@ void wxListMainWindow::OnMouse( wxMouseEvent &event ) (hitResult == wxLIST_HITTEST_ONITEMLABEL) && HasFlag(wxLC_EDIT_LABELS) ) { - if (InReportView()) + if ( !InReportView() || + GetLineLabelRect(current).Contains(x, y) ) { - wxRect label = GetLineLabelRect( current ); - if (label.Contains( x, y )) - m_renameTimer->Start( 250, true ); - + int dclick = wxSystemSettings::GetMetric(wxSYS_DCLICK_MSEC); + m_renameTimer->Start(dclick > 0 ? dclick : 250, true); } - else - m_renameTimer->Start( 250, true ); } }