mirror of
git://source.winehq.org/git/wine.git
synced 2024-08-31 23:53:37 +00:00
riched20: Draw OLE objects with IViewObject implementation.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52752 Signed-off-by: Jinoh Kang <jinoh.kang.kr@gmail.com>
This commit is contained in:
parent
164897e6c9
commit
ecc607c6da
|
@ -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)"");
|
||||
|
|
Loading…
Reference in a new issue