Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
06884fb1
Commit
06884fb1
authored
Nov 30, 2009
by
Jacek Caban
Committed by
Alexandre Julliard
Dec 01, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mshtml: Added IHTMLWindow2::get_screen implementation.
parent
cb5a2bbb
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
270 additions
and
4 deletions
+270
-4
Makefile.in
dlls/mshtml/Makefile.in
+1
-0
htmlscreen.c
dlls/mshtml/htmlscreen.c
+230
-0
htmlwindow.c
dlls/mshtml/htmlwindow.c
+14
-2
mshtml_private.h
dlls/mshtml/mshtml_private.h
+4
-2
dom.c
dlls/mshtml/tests/dom.c
+21
-0
No files found.
dlls/mshtml/Makefile.in
View file @
06884fb1
...
...
@@ -33,6 +33,7 @@ C_SRCS = \
htmllocation.c
\
htmlnode.c
\
htmloption.c
\
htmlscreen.c
\
htmlscript.c
\
htmlselect.c
\
htmlstyle.c
\
...
...
dlls/mshtml/htmlscreen.c
0 → 100644
View file @
06884fb1
/*
* Copyright 2009 Jacek Caban for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <stdarg.h>
#define COBJMACROS
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "ole2.h"
#include "wine/debug.h"
#include "mshtml_private.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
mshtml
);
typedef
struct
{
const
IHTMLScreenVtbl
*
lpIHTMLScreenVtbl
;
LONG
ref
;
}
HTMLScreen
;
#define HTMLSCREEN(x) ((IHTMLScreen*) &(x)->lpIHTMLScreenVtbl)
#define HTMLSCREEN_THIS(iface) DEFINE_THIS(HTMLScreen, IHTMLScreen, iface)
static
HRESULT
WINAPI
HTMLScreen_QueryInterface
(
IHTMLScreen
*
iface
,
REFIID
riid
,
void
**
ppv
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
*
ppv
=
NULL
;
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
);
}
if
(
*
ppv
)
{
IUnknown_AddRef
((
IUnknown
*
)
*
ppv
);
return
S_OK
;
}
WARN
(
"(%p)->(%s %p)
\n
"
,
This
,
debugstr_guid
(
riid
),
ppv
);
return
E_NOINTERFACE
;
}
static
ULONG
WINAPI
HTMLScreen_AddRef
(
IHTMLScreen
*
iface
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
LONG
ref
=
InterlockedIncrement
(
&
This
->
ref
);
TRACE
(
"(%p) ref=%d
\n
"
,
This
,
ref
);
return
ref
;
}
static
ULONG
WINAPI
HTMLScreen_Release
(
IHTMLScreen
*
iface
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
LONG
ref
=
InterlockedDecrement
(
&
This
->
ref
);
TRACE
(
"(%p) ref=%d
\n
"
,
This
,
ref
);
if
(
!
ref
)
heap_free
(
This
);
return
ref
;
}
static
HRESULT
WINAPI
HTMLScreen_GetTypeInfoCount
(
IHTMLScreen
*
iface
,
UINT
*
pctinfo
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)
\n
"
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
HTMLScreen_GetTypeInfo
(
IHTMLScreen
*
iface
,
UINT
iTInfo
,
LCID
lcid
,
ITypeInfo
**
ppTInfo
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)
\n
"
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
HTMLScreen_GetIDsOfNames
(
IHTMLScreen
*
iface
,
REFIID
riid
,
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)
\n
"
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
HTMLScreen_Invoke
(
IHTMLScreen
*
iface
,
DISPID
dispIdMember
,
REFIID
riid
,
LCID
lcid
,
WORD
wFlags
,
DISPPARAMS
*
pDispParams
,
VARIANT
*
pVarResult
,
EXCEPINFO
*
pExcepInfo
,
UINT
*
puArgErr
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)
\n
"
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
HTMLScreen_get_colorDepth
(
IHTMLScreen
*
iface
,
LONG
*
p
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)->(%p)
\n
"
,
This
,
p
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
HTMLScreen_put_bufferDepth
(
IHTMLScreen
*
iface
,
LONG
v
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)->(%d)
\n
"
,
This
,
v
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
HTMLScreen_get_bufferDepth
(
IHTMLScreen
*
iface
,
LONG
*
p
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)->(%p)
\n
"
,
This
,
p
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
HTMLScreen_get_width
(
IHTMLScreen
*
iface
,
LONG
*
p
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)->(%p)
\n
"
,
This
,
p
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
HTMLScreen_get_height
(
IHTMLScreen
*
iface
,
LONG
*
p
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)->(%p)
\n
"
,
This
,
p
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
HTMLScreen_put_updateInterval
(
IHTMLScreen
*
iface
,
LONG
v
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)->(%d)
\n
"
,
This
,
v
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
HTMLScreen_get_updateInterval
(
IHTMLScreen
*
iface
,
LONG
*
p
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)->(%p)
\n
"
,
This
,
p
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
HTMLScreen_get_availHeight
(
IHTMLScreen
*
iface
,
LONG
*
p
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)->(%p)
\n
"
,
This
,
p
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
HTMLScreen_get_availWidth
(
IHTMLScreen
*
iface
,
LONG
*
p
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)->(%p)
\n
"
,
This
,
p
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
HTMLScreen_get_fontSmoothingEnabled
(
IHTMLScreen
*
iface
,
VARIANT_BOOL
*
p
)
{
HTMLScreen
*
This
=
HTMLSCREEN_THIS
(
iface
);
FIXME
(
"(%p)->(%p)
\n
"
,
This
,
p
);
return
E_NOTIMPL
;
}
#undef HTMLSCREEN_THIS
static
const
IHTMLScreenVtbl
HTMLSreenVtbl
=
{
HTMLScreen_QueryInterface
,
HTMLScreen_AddRef
,
HTMLScreen_Release
,
HTMLScreen_GetTypeInfoCount
,
HTMLScreen_GetTypeInfo
,
HTMLScreen_GetIDsOfNames
,
HTMLScreen_Invoke
,
HTMLScreen_get_colorDepth
,
HTMLScreen_put_bufferDepth
,
HTMLScreen_get_bufferDepth
,
HTMLScreen_get_width
,
HTMLScreen_get_height
,
HTMLScreen_put_updateInterval
,
HTMLScreen_get_updateInterval
,
HTMLScreen_get_availHeight
,
HTMLScreen_get_availWidth
,
HTMLScreen_get_fontSmoothingEnabled
};
HRESULT
HTMLScreen_Create
(
IHTMLScreen
**
ret
)
{
HTMLScreen
*
screen
;
screen
=
heap_alloc_zero
(
sizeof
(
HTMLScreen
));
if
(
!
screen
)
return
E_OUTOFMEMORY
;
screen
->
lpIHTMLScreenVtbl
=
&
HTMLSreenVtbl
;
screen
->
ref
=
1
;
*
ret
=
HTMLSCREEN
(
screen
);
return
S_OK
;
}
dlls/mshtml/htmlwindow.c
View file @
06884fb1
...
...
@@ -950,8 +950,20 @@ static HRESULT WINAPI HTMLWindow2_showHelp(IHTMLWindow2 *iface, BSTR helpURL, VA
static
HRESULT
WINAPI
HTMLWindow2_get_screen
(
IHTMLWindow2
*
iface
,
IHTMLScreen
**
p
)
{
HTMLWindow
*
This
=
HTMLWINDOW2_THIS
(
iface
);
FIXME
(
"(%p)->(%p)
\n
"
,
This
,
p
);
return
E_NOTIMPL
;
TRACE
(
"(%p)->(%p)
\n
"
,
This
,
p
);
if
(
!
This
->
screen
)
{
HRESULT
hres
;
hres
=
HTMLScreen_Create
(
&
This
->
screen
);
if
(
FAILED
(
hres
))
return
hres
;
}
*
p
=
This
->
screen
;
IHTMLScreen_AddRef
(
This
->
screen
);
return
S_OK
;
}
static
HRESULT
WINAPI
HTMLWindow2_get_Option
(
IHTMLWindow2
*
iface
,
IHTMLOptionElementFactory
**
p
)
...
...
dlls/mshtml/mshtml_private.h
View file @
06884fb1
...
...
@@ -247,6 +247,7 @@ struct HTMLWindow {
HTMLOptionElementFactory
*
option_factory
;
HTMLImageElementFactory
*
image_factory
;
HTMLLocation
*
location
;
IHTMLScreen
*
screen
;
global_prop_t
*
global_props
;
DWORD
global_prop_cnt
;
...
...
@@ -594,8 +595,8 @@ struct HTMLDocumentNode {
#define HTMLFRAMEBASE2(x) ((IHTMLFrameBase2*) &(x)->lpIHTMLFrameBase2Vtbl)
#define HTMLOPTFACTORY(x) ((IHTMLOptionElementFactory*) &(x)->lpHTMLOptionElementFactoryVtbl)
#define HTMLIMGFACTORY(x) ((IHTMLImageElementFactory*) &(x)->lpHTMLImageElementFactoryVtbl)
#define HTMLLOCATION(x)
((IHTMLLocation*)
&(x)->lpHTMLLocationVtbl)
#define HTMLIMGFACTORY(x) ((IHTMLImageElementFactory*)
&(x)->lpHTMLImageElementFactoryVtbl)
#define HTMLLOCATION(x)
((IHTMLLocation*)
&(x)->lpHTMLLocationVtbl)
#define DISPATCHEX(x) ((IDispatchEx*) &(x)->lpIDispatchExVtbl)
...
...
@@ -618,6 +619,7 @@ HTMLOptionElementFactory *HTMLOptionElementFactory_Create(HTMLWindow*);
HTMLImageElementFactory
*
HTMLImageElementFactory_Create
(
HTMLWindow
*
);
HRESULT
HTMLLocation_Create
(
HTMLWindow
*
,
HTMLLocation
**
);
IOmNavigator
*
OmNavigator_Create
(
void
);
HRESULT
HTMLScreen_Create
(
IHTMLScreen
**
);
void
HTMLDocument_HTMLDocument3_Init
(
HTMLDocument
*
);
void
HTMLDocument_HTMLDocument5_Init
(
HTMLDocument
*
);
...
...
dlls/mshtml/tests/dom.c
View file @
06884fb1
...
...
@@ -3032,6 +3032,26 @@ static void test_navigator(IHTMLDocument2 *doc)
ok
(
!
ref
,
"navigator should be destroyed here
\n
"
);
}
static
void
test_screen
(
IHTMLWindow2
*
window
)
{
IHTMLScreen
*
screen
,
*
screen2
;
HRESULT
hres
;
screen
=
NULL
;
hres
=
IHTMLWindow2_get_screen
(
window
,
&
screen
);
ok
(
hres
==
S_OK
,
"get_screen failed: %08x
\n
"
,
hres
);
ok
(
screen
!=
NULL
,
"screen == NULL
\n
"
);
screen2
=
NULL
;
hres
=
IHTMLWindow2_get_screen
(
window
,
&
screen2
);
ok
(
hres
==
S_OK
,
"get_screen failed: %08x
\n
"
,
hres
);
ok
(
screen2
!=
NULL
,
"screen == NULL
\n
"
);
ok
(
iface_cmp
((
IUnknown
*
)
screen2
,
(
IUnknown
*
)
screen
),
"screen2 != screen
\n
"
);
IHTMLScreen_Release
(
screen2
);
IHTMLScreen_Release
(
screen
);
}
static
void
test_current_style
(
IHTMLCurrentStyle
*
current_style
)
{
BSTR
str
;
...
...
@@ -4654,6 +4674,7 @@ static void test_window(IHTMLDocument2 *doc)
test_window_name
(
window
,
NULL
);
set_window_name
(
window
,
"test"
);
test_window_length
(
window
,
0
);
test_screen
(
window
);
IHTMLWindow2_Release
(
window
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment