[PATCH 5/5] riched20: Initialize a copy of the properties in the host.
Huw Davies
huw at codeweavers.com
Mon Mar 15 05:03:21 CDT 2021
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
dlls/riched20/txthost.c | 69 ++++++++++++++---------------------------
1 file changed, 23 insertions(+), 46 deletions(-)
diff --git a/dlls/riched20/txthost.c b/dlls/riched20/txthost.c
index 5bd11c5aba2..c810589b4a6 100644
--- a/dlls/riched20/txthost.c
+++ b/dlls/riched20/txthost.c
@@ -41,6 +41,7 @@ struct host
HWND window;
BOOL emulate_10;
PARAFORMAT2 para_fmt;
+ DWORD props;
};
static const ITextHostVtbl textHostVtbl;
@@ -48,6 +49,26 @@ static const ITextHostVtbl textHostVtbl;
static BOOL listbox_registered;
static BOOL combobox_registered;
+static void host_init_props( struct host *host )
+{
+ DWORD style, scrollbar;
+
+ host->props = TXTBIT_RICHTEXT | TXTBIT_AUTOWORDSEL | TXTBIT_ALLOWBEEP;
+
+ style = GetWindowLongW( host->window, GWL_STYLE );
+
+ if (style & ES_MULTILINE) host->props |= TXTBIT_MULTILINE;
+ if (style & ES_READONLY) host->props |= TXTBIT_READONLY;
+ if (style & ES_PASSWORD) host->props |= TXTBIT_USEPASSWORD;
+ if (!(style & ES_NOHIDESEL)) host->props |= TXTBIT_HIDESELECTION;
+ if (style & ES_SAVESEL) host->props |= TXTBIT_SAVESELECTION;
+ if (style & ES_VERTICAL) host->props |= TXTBIT_VERTICAL;
+ if (style & ES_NOOLEDRAGDROP) host->props |= TXTBIT_DISABLEDRAG;
+
+ ITextHost_TxGetScrollBars( &host->ITextHost_iface, &scrollbar );
+ if (!(scrollbar & ES_AUTOHSCROLL)) host->props |= TXTBIT_WORDWRAP;
+}
+
struct host *host_create( HWND hwnd, CREATESTRUCTW *cs, BOOL emulate_10 )
{
struct host *texthost;
@@ -68,6 +89,7 @@ struct host *host_create( HWND hwnd, CREATESTRUCTW *cs, BOOL emulate_10 )
if (cs->style & ES_CENTER)
texthost->para_fmt.wAlignment = PFA_CENTER;
texthost->editor = NULL;
+ host_init_props( texthost );
return texthost;
}
@@ -373,53 +395,8 @@ DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetPropertyBits,12)
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxGetPropertyBits( ITextHost *iface, DWORD mask, DWORD *bits )
{
struct host *host = impl_from_ITextHost( iface );
- DWORD style;
- DWORD dwBits = 0;
- DWORD dwScrollBar;
- style = GetWindowLongW( host->window, GWL_STYLE );
- ITextHostImpl_TxGetScrollBars(iface, &dwScrollBar);
-
- dwBits |= TXTBIT_RICHTEXT|TXTBIT_AUTOWORDSEL;
- if (!(dwScrollBar & ES_AUTOHSCROLL))
- dwBits |= TXTBIT_WORDWRAP;
-
- /* Bits that correspond to window styles. */
- if (style & ES_MULTILINE)
- dwBits |= TXTBIT_MULTILINE;
- if (style & ES_READONLY)
- dwBits |= TXTBIT_READONLY;
- if (style & ES_PASSWORD)
- dwBits |= TXTBIT_USEPASSWORD;
- if (!(style & ES_NOHIDESEL))
- dwBits |= TXTBIT_HIDESELECTION;
- if (style & ES_SAVESEL)
- dwBits |= TXTBIT_SAVESELECTION;
- if (style & ES_VERTICAL)
- dwBits |= TXTBIT_VERTICAL;
- if (style & ES_NOOLEDRAGDROP)
- dwBits |= TXTBIT_DISABLEDRAG;
-
- dwBits |= TXTBIT_ALLOWBEEP;
-
- /* The following bits are always FALSE because they are probably only
- * needed for ITextServices_OnTxPropertyBitsChange:
- * TXTBIT_VIEWINSETCHANGE
- * TXTBIT_BACKSTYLECHANGE
- * TXTBIT_MAXLENGTHCHANGE
- * TXTBIT_CHARFORMATCHANGE
- * TXTBIT_PARAFORMATCHANGE
- * TXTBIT_SHOWACCELERATOR
- * TXTBIT_EXTENTCHANGE
- * TXTBIT_SELBARCHANGE
- * TXTBIT_SCROLLBARCHANGE
- * TXTBIT_CLIENTRECTCHANGE
- *
- * Documented by MSDN as not supported:
- * TXTBIT_USECURRENTBKG
- */
-
- *bits = dwBits & mask;
+ *bits = host->props & mask;
return S_OK;
}
--
2.23.0
More information about the wine-devel
mailing list