]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/textctrl.cpp
Style listbox now shows current style
[wxWidgets.git] / src / msw / textctrl.cpp
index ab2e41b7a853d6bbd6440a415ad0d9b915e617ba..f4193cf875a4b74848e0011e4aa8714a30b642cf 100644 (file)
@@ -27,6 +27,7 @@
 #if wxUSE_TEXTCTRL && !(defined(__SMARTPHONE__) && defined(__WXWINCE__))
 
 #ifndef WX_PRECOMP
+    #include "wx/msw/missing.h"
     #include "wx/textctrl.h"
     #include "wx/settings.h"
     #include "wx/brush.h"
@@ -36,9 +37,9 @@
     #include "wx/app.h"
     #include "wx/menu.h"
     #include "wx/math.h"
+    #include "wx/module.h"
 #endif
 
-#include "wx/module.h"
 #include "wx/sysopt.h"
 
 #if wxUSE_CLIPBOARD
@@ -50,7 +51,7 @@
 #include <windowsx.h>
 
 #include "wx/msw/private.h"
-#include "wx/msw/wrapshl.h"
+#include "wx/msw/winundef.h"
 
 #include <string.h>
 #include <stdlib.h>
@@ -71,8 +72,6 @@
     #include <richedit.h>
 #endif
 
-#include "wx/msw/missing.h"
-
 #endif // wxUSE_RICHEDIT
 
 // ----------------------------------------------------------------------------
@@ -287,16 +286,17 @@ LRESULT APIENTRY _EXPORT wxTextCtrlWndProc(HWND hWnd,
                                            WPARAM wParam,
                                            LPARAM lParam)
 {
-    wxWindow *win = wxFindWinFromHandle((WXHWND)hWnd);
-
     switch ( message )
     {
         case WM_CUT:
         case WM_COPY:
         case WM_PASTE:
-            if( win->HandleClipboardEvent( message ) )
-                return 0;
-            break;
+            {
+                wxWindow *win = wxFindWinFromHandle((WXHWND)hWnd);
+                if( win->HandleClipboardEvent( message ) )
+                    return 0;
+                break;
+            }
     }
     return ::CallWindowProc(CASTWNDPROC gs_wndprocEdit, hWnd, message, wParam, lParam);
 }
@@ -518,9 +518,6 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
     }
 #endif // wxUSE_RICHEDIT
 
-    if ( style & wxTE_FILENAME )
-        wxEnableFileNameAutoComplete(GetHwnd());
-
     gs_wndprocEdit = wxSetWindowProc((HWND)GetHwnd(),
                                      wxTextCtrlWndProc);
 
@@ -1233,7 +1230,8 @@ void wxTextCtrl::SetInsertionPointEnd()
     // if it doesn't actually move the caret anywhere and so the simple fact of
     // doing it results in horrible flicker when appending big amounts of text
     // to the control in a few chunks (see DoAddText() test in the text sample)
-    if ( GetInsertionPoint() == GetLastPosition() )
+    const wxTextPos lastPosition = GetLastPosition();
+    if ( GetInsertionPoint() == lastPosition )
     {
         return;
     }
@@ -1249,7 +1247,7 @@ void wxTextCtrl::SetInsertionPointEnd()
     else // !RichEdit 1.0
 #endif // wxUSE_RICHEDIT
     {
-        pos = GetLastPosition();
+        pos = lastPosition;
     }
 
     SetInsertionPoint(pos);
@@ -1812,7 +1810,7 @@ bool wxTextCtrl::MSWShouldPreProcessMessage(WXMSG* msg)
                     // fall through
 
                 case 0:
-                    if ( vkey == VK_RETURN )
+                    if ( IsMultiLine() && vkey == VK_RETURN )
                         return false;
                     // fall through
                 case 2:
@@ -2566,11 +2564,23 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style)
         }
     }
 
-    if (pf.dwMask != 0)
+#if wxUSE_RICHEDIT2
+    if ( m_verRichEdit > 1 )
+    {
+        if ( wxTheApp->GetLayoutDirection() == wxLayout_RightToLeft )
+        {
+            // Use RTL paragraphs in RTL mode to get proper layout
+            pf.dwMask |= PFM_RTLPARA;
+            pf.wEffects |= PFE_RTLPARA;
+        }
+    }
+#endif // wxUSE_RICHEDIT2
+
+    if ( pf.dwMask )
     {
         // do format the selection
         bool ok = ::SendMessage(GetHwnd(), EM_SETPARAFORMAT,
-            0, (LPARAM) &pf) != 0;
+                                0, (LPARAM) &pf) != 0;
         if ( !ok )
         {
             wxLogDebug(_T("SendMessage(EM_SETPARAFORMAT, 0) failed"));