From d2356abe7073b77a6eca641d8580d3bbea7cc6dc Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 7 Dec 2009 05:01:21 +0000 Subject: [PATCH] Use white background by default for multiline readonly wxTextCtrl under MSW. The best default behaviour seems to be to use white background for multiline text controls even when they're read-only, as in previous wx versions. Also see #11521 which could be implemented to make this configurable. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62804 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/text/text.cpp | 2 +- src/msw/textctrl.cpp | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/samples/text/text.cpp b/samples/text/text.cpp index 3e1efc157f..575ac2b6f9 100644 --- a/samples/text/text.cpp +++ b/samples/text/text.cpp @@ -1031,7 +1031,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) #if wxUSE_LOG m_log = new wxTextCtrl( this, wxID_ANY, wxT("This is the log window.\n"), wxPoint(5,260), wxSize(630,100), - wxTE_MULTILINE | wxTE_READONLY | wxTE_RICH); + wxTE_MULTILINE | wxTE_READONLY); m_logOld = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) ); #endif // wxUSE_LOG diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp index 4c910b173e..8ffbfce0c1 100644 --- a/src/msw/textctrl.cpp +++ b/src/msw/textctrl.cpp @@ -544,7 +544,20 @@ bool wxTextCtrl::MSWCreateText(const wxString& value, ::SendMessage(GetHwnd(), EM_SETEVENTMASK, 0, mask); } + else #endif // wxUSE_RICHEDIT + if ( HasFlag(wxTE_MULTILINE) && HasFlag(wxTE_READONLY) ) + { + // non-rich read-only multiline controls have grey background by + // default under MSW but this is not always appropriate, so forcefully + // reset the background colour to normal default + // + // this is not ideal but, after a long discussion on wx-dev (see + // http://thread.gmane.org/gmane.comp.lib.wxwidgets.devel/116360/) it + // was finally deemed to be the best behaviour by default (and ideally + // we'd have a way to change this, see #11521) + SetBackgroundColour(GetClassDefaultAttributes().colBg); + } #ifndef __WXWINCE__ // Without this, if we pass the size in the constructor and then don't change it,