Commit ecc607c6 authored by Jinoh Kang's avatar Jinoh Kang Committed by Alexandre Julliard

riched20: Draw OLE objects with IViewObject implementation.

parent 164897e6
......@@ -5733,6 +5733,7 @@ void ME_GetOLEObjectSize(const ME_Context *c, ME_Run *run, SIZE *pSize)
void draw_ole( ME_Context *c, int x, int y, ME_Run *run, BOOL selected )
{
IDataObject* ido;
IViewObject* ivo;
FORMATETC fmt;
STGMEDIUM stgm;
DIBSECTION dibsect;
......@@ -5745,6 +5746,34 @@ void draw_ole( ME_Context *c, int x, int y, ME_Run *run, BOOL selected )
assert(run->nFlags & MERF_GRAPHICS);
assert(run->reobj);
if (SUCCEEDED(IOleObject_QueryInterface(run->reobj->obj.poleobj, &IID_IViewObject, (void**)&ivo)))
{
HRESULT hr;
RECTL bounds;
convert_sizel(c, &run->reobj->obj.sizel, &sz);
if (c->editor->nZoomNumerator != 0)
{
sz.cx = MulDiv(sz.cx, c->editor->nZoomNumerator, c->editor->nZoomDenominator);
sz.cy = MulDiv(sz.cy, c->editor->nZoomNumerator, c->editor->nZoomDenominator);
}
bounds.left = x;
bounds.top = y - sz.cy;
bounds.right = x + sz.cx;
bounds.bottom = y;
hr = IViewObject_Draw(ivo, DVASPECT_CONTENT, -1, 0, 0, 0, c->hDC, &bounds, NULL, NULL, 0);
if (FAILED(hr))
{
WARN("failed to draw object: %#08lx\n", hr);
}
IViewObject_Release(ivo);
return;
}
if (IOleObject_QueryInterface(run->reobj->obj.poleobj, &IID_IDataObject, (void**)&ido) != S_OK)
{
FIXME("Couldn't get interface\n");
......
......@@ -4193,7 +4193,6 @@ static void subtest_InsertObject(struct reolecb_obj *callback)
UpdateWindow(hwnd);
testobj->line = __LINE__;
flush_dispatch_messages();
todo_wine
ok(testobj->draw_count != 0, "expected draw_count to be nonzero, got %d\n", testobj->draw_count);
SendMessageA(hwnd, WM_SETTEXT, 0, (LPARAM)"");
......@@ -4225,7 +4224,6 @@ static void subtest_InsertObject(struct reolecb_obj *callback)
UpdateWindow(hwnd);
testobj->line = __LINE__;
flush_dispatch_messages();
todo_wine
ok(testobj->draw_count != 0, "expected draw_count to be nonzero, got %d\n", testobj->draw_count);
SendMessageA(hwnd, WM_SETTEXT, 0, (LPARAM)"");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment