changeset 2235:bd642d04d7c6

Win: Turn on horizontal scrollbar when word wrap is off in rich edit MLE. Also work around rich edit EM_SCROLLCARET bug by showing the selection first.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 04 Jan 2021 14:29:24 +0000
parents b569023edb6f
children e7060d262939
files win/dw.c
diffstat 1 files changed, 8 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/win/dw.c	Mon Jan 04 12:33:20 2021 +0000
+++ b/win/dw.c	Mon Jan 04 14:29:24 2021 +0000
@@ -9367,16 +9367,12 @@
  */
 void API dw_mle_set_word_wrap(HWND handle, int state)
 {
-   /* If ES_AUTOHSCROLL is not set and there is no
-    * horizontal scrollbar it word wraps.
-    */
-   if(state)
-      dw_window_set_style(handle, 0, ES_AUTOHSCROLL);
-   else
-      dw_window_set_style(handle, ES_AUTOHSCROLL, ES_AUTOHSCROLL);
    /* If it is a rich edit control use the rich edit message */
    if(hrichedit || hmsftedit)
+   {
+      SendMessage(handle, EM_SHOWSCROLLBAR, (WPARAM)SB_HORZ, (LPARAM)(state ? FALSE : TRUE));
       SendMessage(handle, EM_SETTARGETDEVICE, 0, state ? 0 : 1);
+   }
 }
 
 /*
@@ -9397,7 +9393,9 @@
  */
 void API dw_mle_set_cursor(HWND handle, int point)
 {
-   SendMessage(handle, EM_SETSEL, 0, MAKELPARAM(point,point));
+   SendMessage(handle, EM_SETSEL, (WPARAM)point, (LPARAM)point);
+   if(hrichedit || hmsftedit)
+      SendMessage(handle, EM_HIDESELECTION, 0, 0);
    SendMessage(handle, EM_SCROLLCARET, 0, 0);
 }
 
@@ -9440,6 +9438,8 @@
    if(retval)
    {
       SendMessage(handle, EM_SETSEL, (WPARAM)retval - textlen, (LPARAM)retval);
+      if(hrichedit || hmsftedit)
+         SendMessage(handle, EM_HIDESELECTION, 0, 0);
       SendMessage(handle, EM_SCROLLCARET, 0, 0);
    }