]> git.saurik.com Git - wxWidgets.git/commitdiff
Fixed bug #778299 - wxTE_RICH2 causes SetValue to show control.
authorJamie Gadd <jrgadd2@cs.latrobe.edu.au>
Thu, 19 Jan 2006 15:27:17 +0000 (15:27 +0000)
committerJamie Gadd <jrgadd2@cs.latrobe.edu.au>
Thu, 19 Jan 2006 15:27:17 +0000 (15:27 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37000 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
src/msw/textctrl.cpp

index 8617a58f4d3ec3b00fa027b7ea22eddf970baed6..3eb8bb1ed28ced96fd332a18ff39205bbb893188 100644 (file)
@@ -75,6 +75,8 @@ wxMSW:
 - wxStatusBar no longer corrupts surrounding windows on resize.
 - Enable wxListCtrl in report mode to be able to use images in other
   columns, if ComCtl32 >= 470.
+- Fixed problem where using SetValue and wxTE_RICH2 would cause control to
+  show.
 
 wxGTK:
 
index a69a4543635f40c30ca0c7a716065296f54ed84e..0dd0da0b7b9f23f4d39c0bb0badb9fb326d8d742 100644 (file)
@@ -1261,10 +1261,14 @@ void wxTextCtrl::DoSetSelection(long from, long to, bool scrollCaret)
         // ES_DISABLENOSCROLL
         //
         // this is very ugly but I don't see any other way to make this work
+        long style = 0;
         if ( GetRichVersion() > 1 )
         {
             if ( !HasFlag(wxTE_NOHIDESEL) )
             {
+                // setting ECO_NOHIDESEL also sets WS_VISIBLE and possibly
+                // others, remember the style so we can reset it later if needed
+                style = ::GetWindowLong(GetHwnd(), GWL_STYLE);
                 ::SendMessage(GetHwnd(), EM_SETOPTIONS,
                               ECOOP_OR, ECO_NOHIDESEL);
             }
@@ -1280,6 +1284,8 @@ void wxTextCtrl::DoSetSelection(long from, long to, bool scrollCaret)
         {
             ::SendMessage(GetHwnd(), EM_SETOPTIONS,
                           ECOOP_AND, ~ECO_NOHIDESEL);
+            if ( style != ::GetWindowLong(GetHwnd(), GWL_STYLE) )
+                ::SetWindowLong(GetHwnd(), GWL_STYLE, style);
         }
 #endif // wxUSE_RICHEDIT
     }
@@ -1963,7 +1969,7 @@ wxSize wxTextCtrl::DoGetBestSize() const
     int hText = cy;
     if ( m_windowStyle & wxTE_MULTILINE )
     {
-        hText *= wxMax(wxMin(GetNumberOfLines(), 10), 2); 
+        hText *= wxMax(wxMin(GetNumberOfLines(), 10), 2);
     }
     //else: for single line control everything is ok