mshtml: Implement IHTMLStyle get/put posLeft (Try 7)

Jacek Caban jacek at codeweavers.com
Mon Oct 20 20:01:07 CDT 2008


Alistair Leslie-Hughes wrote:
> Hi,
>   Clean up the get function.
>   Make sure we round down the value passed in.
>   Corrected test to prove above.
>
> Changelog:
>     mshtml: Implement IHTMLStyle get/put posLeft
>
+
+    V_VT(&v) = VT_I4;
+    V_I4(&v) = floor(f);
+
+    if(VariantChangeType(&v, &v, 0, VT_BSTR) == S_OK)


- It won't work for some locales
- It's probably better to use sprintfW for this and set units to px for free

+    hres = get_style_attr(This, STYLEID_LEFT, &ret);
+    if(SUCCEEDED(hres))
+    {
+        if(ret)
+            *p = atoiW(ret);
+    }

- Your patch adds support only for px values, so you should check if we 
really return px value. Something like

for(ptr=ret; isdigitW(*ptr); ptr++);
if(*ptr || strcmp(ptr, pxW)) {
    FIXME(...);
    return E_NOTIMPL;
}

should be fine.

- You leak ret
- It's better to use get_nsstyle_attr_nsval to avoid one useless memory 
allocation.


And you really want to move these function to separated functions like 
[get|set]_style_pos that would take styleid_t as an argument to avoid 
code duplication.


Jacek



More information about the wine-devel mailing list