X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0b8558681e8c69b749f64b891111f5ea72c04550..284b4c8866ab36694b6ec2a308690bba4db4fed2:/src/generic/listctrl.cpp diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index cded1af243..36d171b2cc 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -875,22 +875,37 @@ void wxListHeaderWindow::OnMouse( wxMouseEvent &event ) for (int j = 0; j < m_owner->GetColumnCount(); j++) { xpos += m_owner->GetColumnWidth( j ); + m_column = j; if ((abs(x-xpos) < 3) && (y < 22)) { hit_border = TRUE; - m_column = j; break; } + if (x-xpos < 0) + { + break; + } m_minX = xpos; } - if (event.LeftDown() && hit_border) + if (event.LeftDown()) { - m_isDragging = TRUE; - m_currentX = x; - DrawCurrent(); - CaptureMouse(); - return; + if (hit_border) + { + m_isDragging = TRUE; + m_currentX = x; + DrawCurrent(); + CaptureMouse(); + return; + } + else + { + wxListEvent le( wxEVT_COMMAND_LIST_COL_CLICK, GetParent()->GetId() ); + le.SetEventObject( GetParent() ); + le.m_col = m_column; + GetParent()->GetEventHandler()->ProcessEvent( le ); + return; + } } if (event.Moving()) @@ -1645,12 +1660,20 @@ void wxListMainWindow::OnChar( wxKeyEvent &event ) m_usedKeys = TRUE; } +#ifdef __WXGTK__ +extern wxWindow *g_focusWindow; +#endif + void wxListMainWindow::OnSetFocus( wxFocusEvent &WXUNUSED(event) ) { m_hasFocus = TRUE; RefreshLine( m_current ); if (!GetParent()) return; + +#ifdef __WXGTK__ + g_focusWindow = GetParent(); +#endif wxFocusEvent event( wxEVT_SET_FOCUS, GetParent()->GetId() ); event.SetEventObject( GetParent() ); @@ -2562,16 +2585,21 @@ void wxListCtrl::SetWindowStyleFlag( long flag ) { m_headerWin = new wxListHeaderWindow( this, -1, m_mainWin, wxPoint(0,0), wxSize(width,23), wxTAB_TRAVERSAL ); + if (HasFlag(wxLC_NO_HEADER)) + m_headerWin->Show( FALSE ); } else { - m_headerWin->Show( TRUE ); + if (flag & wxLC_NO_HEADER) + m_headerWin->Show( FALSE ); + else + m_headerWin->Show( TRUE ); } } } else { - if (HasFlag(wxLC_REPORT)) + if (HasFlag(wxLC_REPORT) && !(HasFlag(wxLC_NO_HEADER))) { m_headerWin->Show( FALSE ); } @@ -2935,7 +2963,7 @@ void wxListCtrl::OnIdle( wxIdleEvent &WXUNUSED(event) ) int w = 0; int h = 0; - if (HasFlag(wxLC_REPORT)) + if (HasFlag(wxLC_REPORT) && !HasFlag(wxLC_NO_HEADER)) { m_headerWin->GetPosition( &x, &y ); m_headerWin->GetSize( &w, &h );