From cc6d111a24dc2ad85b1cd2114249c01a18f25607 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 13 Feb 2008 22:46:30 +0000 Subject: [PATCH] set listview extended styles after switching to report view and not only when creating it (bug 1874996) [backport of 51390 from trunk] git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@51773 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 2 ++ include/wx/msw/listctrl.h | 5 +++++ src/msw/listctrl.cpp | 17 ++++++++++++++--- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 79e8774988..d6b4aa73ff 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -135,6 +135,8 @@ wxMSW: a custom wxEVT_COMMAND_TEXT_* event handler. - Fix wxComboBox to not lose the current value if it was programmatically set to a value not in a list of choices on popup close (Kolya Kosenko) +- Switching wxListCtrl to report mode from another one now uses full row + highlight, just as if the control were created in report mode initially wxGTK: diff --git a/include/wx/msw/listctrl.h b/include/wx/msw/listctrl.h index 3f854eb479..42d0472c1d 100644 --- a/include/wx/msw/listctrl.h +++ b/include/wx/msw/listctrl.h @@ -431,6 +431,11 @@ private: // process NM_CUSTOMDRAW notification message WXLPARAM OnCustomDraw(WXLPARAM lParam); + // set the extended styles for the control (used by Create() and + // UpdateStyle()), only should be called if InReportView() + void MSWSetExListStyles(); + + DECLARE_DYNAMIC_CLASS(wxListCtrl) DECLARE_EVENT_TABLE() DECLARE_NO_COPY_CLASS(wxListCtrl) diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index 4f66abf45b..d39d80529a 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -338,15 +338,21 @@ bool wxListCtrl::Create(wxWindow *parent, // GetTextColour will always return black SetTextColour(GetDefaultAttributes().colFg); + if ( InReportView() ) + MSWSetExListStyles(); + + return true; +} + +void wxListCtrl::MSWSetExListStyles() +{ // for comctl32.dll v 4.70+ we want to have some non default extended // styles because it's prettier (and also because wxGTK does it like this) - if ( InReportView() && wxApp::GetComCtl32Version() >= 470 ) + if ( wxApp::GetComCtl32Version() >= 470 ) { ::SendMessage(GetHwnd(), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_LABELTIP | LVS_EX_FULLROWSELECT | LVS_EX_SUBITEMIMAGES); } - - return true; } WXDWORD wxListCtrl::MSWGetStyle(long style, WXDWORD *exstyle) const @@ -445,6 +451,11 @@ void wxListCtrl::UpdateStyle() if ( dwStyleOld != dwStyleNew ) { ::SetWindowLong(GetHwnd(), GWL_STYLE, dwStyleNew); + + // if we switched to the report view, set the extended styles for + // it too + if ( !(dwStyleOld & LVS_REPORT) && (dwStyleNew & LVS_REPORT) ) + MSWSetExListStyles(); } } }