diff --git a/echo.c b/echo.c index cf44b2b..88e042a 100644 --- a/echo.c +++ b/echo.c @@ -404,6 +404,13 @@ static void AddMessageBoxText(HWND hwnd, const wchar_t *text, const wchar_t *title, const wchar_t *from) { HWND hmsg = GetDlgItem(hwnd, ID_TXT_MESSAGE); + DWORD align[2] = {PFA_LEFT, PFA_RIGHT}; /* default alignments for text and title */ + + if (LangFlowDirection() == 1) + { + align[0] = PFA_RIGHT; + align[1] = PFA_LEFT; + } /* Start adding new message at the top */ SendMessage(hmsg, EM_SETSEL, 0, 0); @@ -413,7 +420,7 @@ AddMessageBoxText(HWND hwnd, const wchar_t *text, const wchar_t *title, const wc /* save current alignment */ PARAFORMAT pf = {.cbSize = sizeof(PARAFORMAT) }; SendMessage(hmsg, EM_GETPARAFORMAT, 0, (LPARAM) &pf); - WORD pf_align_saved = pf.dwMask & PFM_ALIGNMENT ? pf.wAlignment : PFA_LEFT; + WORD pf_align_saved = pf.dwMask & PFM_ALIGNMENT ? pf.wAlignment : align[0]; pf.dwMask |= PFM_ALIGNMENT; if (from && wcslen(from)) @@ -425,13 +432,13 @@ AddMessageBoxText(HWND hwnd, const wchar_t *text, const wchar_t *title, const wc SendMessage(hmsg, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cfm); /* Align to right */ - pf.wAlignment = PFA_RIGHT; + pf.wAlignment = align[1]; SendMessage(hmsg, EM_SETPARAFORMAT, 0, (LPARAM) &pf); SendMessage(hmsg, EM_REPLACESEL, FALSE, (LPARAM) from); SendMessage(hmsg, EM_REPLACESEL, FALSE, (LPARAM) L"\n"); } - pf.wAlignment = PFA_LEFT; + pf.wAlignment = align[0]; SendMessage(hmsg, EM_SETPARAFORMAT, 0, (LPARAM) &pf); if (title && wcslen(title)) @@ -503,6 +510,13 @@ MessageDialogFunc(HWND hwnd, UINT msg, UNUSED WPARAM wParam, LPARAM lParam) SetWindowText(hwnd, L"OpenVPN Messages"); SendMessage(hmsg, EM_SETMARGINS, EC_LEFTMARGIN|EC_RIGHTMARGIN, MAKELPARAM(side_margin, side_margin)); + if (LangFlowDirection() == 1) + { + LONG exstyle = GetWindowLong(hwnd, GWL_EXSTYLE); + SetWindowLong(hwnd, GWL_EXSTYLE, exstyle | WS_EX_RTLREADING | WS_EX_LAYOUTRTL); + exstyle = GetWindowLong(hmsg, GWL_EXSTYLE); + SetWindowLong(hmsg, GWL_EXSTYLE, exstyle | WS_EX_LEFTSCROLLBAR); + } enable_url_detection(hmsg);