From 90014d154fc8523149f376405ad3191fe2f8df6f Mon Sep 17 00:00:00 2001 From: Zhenbo Li Date: Mon, 18 Aug 2014 23:30:46 +0800 Subject: [PATCH] mshtml: Added IHTMLStyle2::tableLayout property implementation. --- dlls/mshtml/htmlstyle.c | 3 +++ dlls/mshtml/htmlstyle.h | 1 + dlls/mshtml/htmlstyle2.c | 12 ++++++++---- dlls/mshtml/tests/style.c | 12 ++++++++++++ 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c index 1dca647daca..420c687fdc1 100644 --- a/dlls/mshtml/htmlstyle.c +++ b/dlls/mshtml/htmlstyle.c @@ -168,6 +168,8 @@ static const WCHAR attrPosition[] = {'p','o','s','i','t','i','o','n',0}; static const WCHAR attrRight[] = {'r','i','g','h','t',0}; +static const WCHAR attrTableLayout[] = + {'t','a','b','l','e','-','l','a','y','o','u','t',0}; static const WCHAR attrTextAlign[] = {'t','e','x','t','-','a','l','i','g','n',0}; static const WCHAR attrTextDecoration[] = @@ -268,6 +270,7 @@ static const style_tbl_entry_t style_tbl[] = { {attrPageBreakBefore, DISPID_IHTMLSTYLE_PAGEBREAKBEFORE}, {attrPosition, DISPID_IHTMLSTYLE2_POSITION}, {attrRight, DISPID_IHTMLSTYLE2_RIGHT}, + {attrTableLayout, DISPID_IHTMLSTYLE2_TABLELAYOUT}, {attrTextAlign, DISPID_IHTMLSTYLE_TEXTALIGN}, {attrTextDecoration, DISPID_IHTMLSTYLE_TEXTDECORATION}, {attrTextIndent, DISPID_IHTMLSTYLE_TEXTINDENT}, diff --git a/dlls/mshtml/htmlstyle.h b/dlls/mshtml/htmlstyle.h index 813c782c59a..c9f2156d4a7 100644 --- a/dlls/mshtml/htmlstyle.h +++ b/dlls/mshtml/htmlstyle.h @@ -99,6 +99,7 @@ typedef enum { STYLEID_PAGE_BREAK_BEFORE, STYLEID_POSITION, STYLEID_RIGHT, + STYLEID_TABLE_LAYOUT, STYLEID_TEXT_ALIGN, STYLEID_TEXT_DECORATION, STYLEID_TEXT_INDENT, diff --git a/dlls/mshtml/htmlstyle2.c b/dlls/mshtml/htmlstyle2.c index b2740d56414..15f941f4a2d 100644 --- a/dlls/mshtml/htmlstyle2.c +++ b/dlls/mshtml/htmlstyle2.c @@ -92,15 +92,19 @@ static HRESULT WINAPI HTMLStyle2_Invoke(IHTMLStyle2 *iface, DISPID dispIdMember, static HRESULT WINAPI HTMLStyle2_put_tableLayout(IHTMLStyle2 *iface, BSTR v) { HTMLStyle *This = impl_from_IHTMLStyle2(iface); - FIXME("(%p)->(%s)\n", This, debugstr_w(v)); - return E_NOTIMPL; + + TRACE("(%p)->(%s)\n", This, debugstr_w(v)); + + return set_nsstyle_attr(This->nsstyle, STYLEID_TABLE_LAYOUT, v, 0); } static HRESULT WINAPI HTMLStyle2_get_tableLayout(IHTMLStyle2 *iface, BSTR *p) { HTMLStyle *This = impl_from_IHTMLStyle2(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + + TRACE("(%p)->(%p)\n", This, p); + + return get_nsstyle_attr(This->nsstyle, STYLEID_TABLE_LAYOUT, p, 0); } static HRESULT WINAPI HTMLStyle2_put_borderCollapse(IHTMLStyle2 *iface, BSTR v) diff --git a/dlls/mshtml/tests/style.c b/dlls/mshtml/tests/style.c index a454eff787e..f279fb37d13 100644 --- a/dlls/mshtml/tests/style.c +++ b/dlls/mshtml/tests/style.c @@ -421,6 +421,18 @@ static void test_style2(IHTMLStyle2 *style2) hres = IHTMLStyle2_get_overflowY(style2, &str); ok(hres == S_OK, "get_overflowY failed: %08x\n", hres); ok(!strcmp_wa(str, "hidden"), "overflowX = %s\n", wine_dbgstr_w(str)); + + /* tableLayout */ + str = a2bstr("fixed"); + hres = IHTMLStyle2_put_tableLayout(style2, str); + ok(hres == S_OK, "put_tableLayout failed: %08x\n", hres); + SysFreeString(str); + + str = (void*)0xdeadbeef; + hres = IHTMLStyle2_get_tableLayout(style2, &str); + ok(hres == S_OK, "get_tableLayout failed: %08x\n", hres); + ok(!strcmp_wa(str, "fixed"), "tableLayout = %s\n", wine_dbgstr_w(str)); + SysFreeString(str); } static void test_style3(IHTMLStyle3 *style3)