Commit 1ddc01c0 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

mshtml.idl: Added DispHTMLScreen declaration and use it in HTMLScreen object.

parent 06884fb1
......@@ -97,6 +97,7 @@ static REFIID tid_ids[] = {
&DIID_DispHTMLLocation,
&DIID_DispHTMLNavigator,
&DIID_DispHTMLOptionElement,
&DIID_DispHTMLScreen,
&DIID_DispHTMLSelectElement,
&DIID_DispHTMLStyle,
&DIID_DispHTMLTable,
......@@ -134,6 +135,7 @@ static REFIID tid_ids[] = {
&IID_IHTMLInputElement,
&IID_IHTMLLocation,
&IID_IHTMLOptionElement,
&IID_IHTMLScreen,
&IID_IHTMLSelectElement,
&IID_IHTMLStyle,
&IID_IHTMLStyle2,
......
......@@ -32,6 +32,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
typedef struct {
DispatchEx dispex;
const IHTMLScreenVtbl *lpIHTMLScreenVtbl;
LONG ref;
......@@ -50,12 +51,11 @@ static HRESULT WINAPI HTMLScreen_QueryInterface(IHTMLScreen *iface, REFIID riid,
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = HTMLSCREEN(This);
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = HTMLSCREEN(This);
}else if(IsEqualGUID(&IID_IHTMLScreen, riid)) {
TRACE("(%p)->(IID_IHTMLScreen %p)\n", This, ppv);
*ppv = HTMLSCREEN(This);
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}
if(*ppv) {
......@@ -84,8 +84,10 @@ static ULONG WINAPI HTMLScreen_Release(IHTMLScreen *iface)
TRACE("(%p) ref=%d\n", This, ref);
if(!ref)
if(!ref) {
release_dispex(&This->dispex);
heap_free(This);
}
return ref;
}
......@@ -214,6 +216,17 @@ static const IHTMLScreenVtbl HTMLSreenVtbl = {
HTMLScreen_get_fontSmoothingEnabled
};
static const tid_t HTMLScreen_iface_tids[] = {
IHTMLScreen_tid,
0
};
static dispex_static_data_t HTMLScreen_dispex = {
NULL,
DispHTMLScreen_tid,
NULL,
HTMLScreen_iface_tids
};
HRESULT HTMLScreen_Create(IHTMLScreen **ret)
{
HTMLScreen *screen;
......@@ -225,6 +238,8 @@ HRESULT HTMLScreen_Create(IHTMLScreen **ret)
screen->lpIHTMLScreenVtbl = &HTMLSreenVtbl;
screen->ref = 1;
init_dispex(&screen->dispex, (IUnknown*)HTMLSCREEN(screen), &HTMLScreen_dispex);
*ret = HTMLSCREEN(screen);
return S_OK;
}
......@@ -74,6 +74,7 @@ typedef enum {
DispHTMLLocation_tid,
DispHTMLNavigator_tid,
DispHTMLOptionElement_tid,
DispHTMLScreen_tid,
DispHTMLSelectElement_tid,
DispHTMLStyle_tid,
DispHTMLTable_tid,
......@@ -111,6 +112,7 @@ typedef enum {
IHTMLInputElement_tid,
IHTMLLocation_tid,
IHTMLOptionElement_tid,
IHTMLScreen_tid,
IHTMLSelectElement_tid,
IHTMLStyle_tid,
IHTMLStyle2_tid,
......
......@@ -3049,6 +3049,8 @@ static void test_screen(IHTMLWindow2 *window)
ok(iface_cmp((IUnknown*)screen2, (IUnknown*)screen), "screen2 != screen\n");
IHTMLScreen_Release(screen2);
test_disp((IUnknown*)screen, &DIID_DispHTMLScreen, "[object]");
IHTMLScreen_Release(screen);
}
......
......@@ -1781,6 +1781,16 @@
#define DISPID_IHTMLSCREEN_AVAILWIDTH (DISPID_SCREEN+7)
#define DISPID_IHTMLSCREEN_FONTSMOOTHINGENABLED (DISPID_SCREEN+8)
/* IHTMLScreen2 */
#define DISPID_IHTMLSCREEN2_LOGICALXDPI DISPID_SCREEN+9
#define DISPID_IHTMLSCREEN2_LOGICALYDPI DISPID_SCREEN+10
#define DISPID_IHTMLSCREEN2_DEVICEXDPI DISPID_SCREEN+11
#define DISPID_IHTMLSCREEN2_DEVICEYDPI DISPID_SCREEN+12
/* IHTMLScreen3 */
#define DISPID_IHTMLSCREEN3_SYSTEMXDPI DISPID_SCREEN+13
#define DISPID_IHTMLSCREEN3_SYSTEMYDPI DISPID_SCREEN+14
/* IHTMLOptionElementFactory */
#define DISPID_IHTMLOPTIONELEMENTFACTORY_CREATE DISPID_VALUE
......
......@@ -9759,6 +9759,69 @@ interface IHTMLWindow5 : IDispatch
};
/*****************************************************************************
* DispHTMLScreen dispinterface
*/
[
hidden,
uuid(3050f591-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLScreen
{
properties:
methods:
[propget, id(DISPID_IHTMLSCREEN_COLORDEPTH)]
long colorDepth();
[propput, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)]
void bufferDepth(long v);
[propget, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)]
long bufferDepth();
[propget, id(DISPID_IHTMLSCREEN_WIDTH)]
long width();
[propget, id(DISPID_IHTMLSCREEN_HEIGHT)]
long height();
[propput, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)]
void updateInterval(long v);
[propget, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)]
long updateInterval();
[propget, id(DISPID_IHTMLSCREEN_AVAILHEIGHT)]
long availHeight();
[propget, id(DISPID_IHTMLSCREEN_AVAILWIDTH)]
long availWidth();
[propget, id(DISPID_IHTMLSCREEN_FONTSMOOTHINGENABLED)]
VARIANT_BOOL fontSmoothingEnabled();
[propget, id(DISPID_IHTMLSCREEN2_LOGICALXDPI)]
long logicalXDPI();
[propget, id(DISPID_IHTMLSCREEN2_LOGICALYDPI)]
long logicalYDPI();
[propget, id(DISPID_IHTMLSCREEN2_DEVICEXDPI)]
long deviceXDPI();
[propget, id(DISPID_IHTMLSCREEN2_DEVICEYDPI)]
long deviceYDPI();
[propget, id(DISPID_IHTMLSCREEN3_SYSTEMXDPI)]
long systemXDPI();
[propget, id(DISPID_IHTMLSCREEN3_SYSTEMYDPI)]
long systemYDPI();
[propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]
IDispatch *constructor();
}
/*****************************************************************************
* DispHTMLWindow2 dispinterface
*/
[
......
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