diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c index 348eacc7e09..c327faa0a27 100644 --- a/dlls/mshtml/htmlstyle.c +++ b/dlls/mshtml/htmlstyle.c @@ -553,6 +553,11 @@ static const style_tbl_entry_t style_tbl[] = { DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT, DISPID_UNKNOWN }, + { + L"column-width", + DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH, + DISPID_UNKNOWN + }, { cursorW, DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR, @@ -8813,15 +8818,15 @@ static HRESULT WINAPI HTMLCSSStyleDeclaration2_get_columnCount(IHTMLCSSStyleDecl static HRESULT WINAPI HTMLCSSStyleDeclaration2_put_columnWidth(IHTMLCSSStyleDeclaration2 *iface, VARIANT v) { CSSStyle *This = impl_from_IHTMLCSSStyleDeclaration2(iface); - FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); - return E_NOTIMPL; + WARN("(%p)->(%s) semi-stub\n", This, debugstr_variant(&v)); + return set_style_property_var(This, STYLEID_COLUMN_WIDTH, &v); } static HRESULT WINAPI HTMLCSSStyleDeclaration2_get_columnWidth(IHTMLCSSStyleDeclaration2 *iface, VARIANT *p) { CSSStyle *This = impl_from_IHTMLCSSStyleDeclaration2(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + WARN("(%p)->(%p) semi-stub\n", This, p); + return get_style_property_var(This, STYLEID_COLUMN_WIDTH, p); } static HRESULT WINAPI HTMLCSSStyleDeclaration2_put_columnGap(IHTMLCSSStyleDeclaration2 *iface, VARIANT v) diff --git a/dlls/mshtml/htmlstyle.h b/dlls/mshtml/htmlstyle.h index 25dc12b69f2..09b044c84c5 100644 --- a/dlls/mshtml/htmlstyle.h +++ b/dlls/mshtml/htmlstyle.h @@ -82,6 +82,7 @@ typedef enum { STYLEID_CLIP, STYLEID_COLOR, STYLEID_COLUMN_COUNT, + STYLEID_COLUMN_WIDTH, STYLEID_CURSOR, STYLEID_DIRECTION, STYLEID_DISPLAY, diff --git a/dlls/mshtml/tests/style.c b/dlls/mshtml/tests/style.c index 1b481354fc8..6746cd048a9 100644 --- a/dlls/mshtml/tests/style.c +++ b/dlls/mshtml/tests/style.c @@ -921,6 +921,36 @@ static void test_css_style_declaration2(IHTMLCSSStyleDeclaration2 *css_style) todo_wine ok(V_VT(&v) == VT_BSTR && V_BSTR(&v) && !lstrcmpW(V_BSTR(&v), L"auto"), "columnCount = %s\n", wine_dbgstr_variant(&v)); VariantClear(&v); + + V_VT(&v) = VT_ERROR; + hres = IHTMLCSSStyleDeclaration2_get_columnWidth(css_style, &v); + ok(hres == S_OK, "get_columnWidth failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR && !V_BSTR(&v), "columnWidth = %s\n", wine_dbgstr_variant(&v)); + VariantClear(&v); + + V_VT(&v) = VT_I4; + V_I4(&v) = 20; + hres = IHTMLCSSStyleDeclaration2_put_columnWidth(css_style, v); + ok(hres == S_OK, "put_columnWidth failed: %08x\n", hres); + + V_VT(&v) = VT_ERROR; + hres = IHTMLCSSStyleDeclaration2_get_columnWidth(css_style, &v); + ok(hres == S_OK, "get_columnWidth failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR && !V_BSTR(&v), "columnWidth = %s\n", wine_dbgstr_variant(&v)); + VariantClear(&v); + + V_VT(&v) = VT_BSTR; + V_BSTR(&v) = SysAllocString(L"20px"); + hres = IHTMLCSSStyleDeclaration2_put_columnWidth(css_style, v); + ok(hres == S_OK, "put_columnWidth failed: %08x\n", hres); + VariantClear(&v); + + V_VT(&v) = VT_ERROR; + hres = IHTMLCSSStyleDeclaration2_get_columnWidth(css_style, &v); + ok(hres == S_OK, "get_columnWidth failed: %08x\n", hres); + todo_wine + ok(V_VT(&v) == VT_BSTR && V_BSTR(&v) && !lstrcmpW(V_BSTR(&v), L"20px"), "columnWidth = %s\n", wine_dbgstr_variant(&v)); + VariantClear(&v); } static void test_body_style(IHTMLStyle *style)