Jacek Caban : mshtml: Added support for ZoomFactor registry value.
Alexandre Julliard
julliard at winehq.org
Wed Feb 19 14:48:17 CST 2014
Module: wine
Branch: master
Commit: 92517e2c5ee6067a2a4cc2560679a6842a7ae209
URL: http://source.winehq.org/git/wine.git/?a=commit;h=92517e2c5ee6067a2a4cc2560679a6842a7ae209
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Feb 19 17:24:24 2014 +0100
mshtml: Added support for ZoomFactor registry value.
---
dlls/mshtml/nsiface.idl | 41 ++++++++++++++++++++++++++++++++++++
dlls/mshtml/oleobj.c | 53 +++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 92 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl
index ddb6d85..c0959f5 100644
--- a/dlls/mshtml/nsiface.idl
+++ b/dlls/mshtml/nsiface.idl
@@ -3703,6 +3703,47 @@ interface nsIDocShell : nsIDocShellTreeItem
[
object,
+ uuid(02d37b31-e654-4b74-9bc3-14dfe0020bb3),
+ local
+]
+interface nsIMarkupDocumentViewer : nsISupports
+{
+ nsresult ScrollToNode(nsIDOMNode *node);
+ nsresult GetTextZoom(float *aTextZoom);
+ nsresult SetTextZoom(float aTextZoom);
+ nsresult GetFullZoom(float *aFullZoom);
+ nsresult SetFullZoom(float aFullZoom);
+ nsresult GetAuthorStyleDisabled(bool *aAuthorStyleDisabled);
+ nsresult SetAuthorStyleDisabled(bool aAuthorStyleDisabled);
+ nsresult GetDefaultCharacterSet(nsACString *aDefaultCharacterSet);
+ nsresult SetDefaultCharacterSet(const nsACString *aDefaultCharacterSet);
+ nsresult GetForceCharacterSet(nsACString *aForceCharacterSet);
+ nsresult SetForceCharacterSet(const nsACString *aForceCharacterSet);
+ nsresult GetHintCharacterSet(nsACString *aHintCharacterSet);
+ nsresult SetHintCharacterSet(const nsACString *aHintCharacterSet);
+ nsresult GetHintCharacterSetSource(int32_t *aHintCharacterSetSource);
+ nsresult SetHintCharacterSetSource(int32_t aHintCharacterSetSource);
+ nsresult GetPrevDocCharacterSet(nsACString *aPrevDocCharacterSet);
+ nsresult SetPrevDocCharacterSet(const nsACString *aPrevDocCharacterSet);
+ nsresult GetContentSize(int32_t *width, int32_t *height);
+ nsresult GetBidiTextDirection(uint8_t *aBidiTextDirection);
+ nsresult SetBidiTextDirection(uint8_t aBidiTextDirection);
+ nsresult GetBidiTextType(uint8_t *aBidiTextType);
+ nsresult SetBidiTextType(uint8_t aBidiTextType);
+ nsresult GetBidiNumeral(uint8_t *aBidiNumeral);
+ nsresult SetBidiNumeral(uint8_t aBidiNumeral);
+ nsresult GetBidiSupport(uint8_t *aBidiSupport);
+ nsresult SetBidiSupport(uint8_t aBidiSupport);
+ nsresult GetBidiOptions(uint32_t *aBidiOptions);
+ nsresult SetBidiOptions(uint32_t aBidiOptions);
+ nsresult GetMinFontSize(int32_t *aMinFontSize);
+ nsresult SetMinFontSize(int32_t aMinFontSize);
+ nsresult AppendSubtree(void /* nsTArray<nsCOMPtr<nsIMarkupDocumentViewer>> */ *array);
+ nsresult ChangeMaxLineBoxWidth(int32_t maxLineBoxWidth);
+}
+
+[
+ object,
uuid(16fe5e3e-eadc-4312-9d44-b6bedd6b5474),
local
]
diff --git a/dlls/mshtml/oleobj.c b/dlls/mshtml/oleobj.c
index 1a123ac..ea8cea6 100644
--- a/dlls/mshtml/oleobj.c
+++ b/dlls/mshtml/oleobj.c
@@ -20,6 +20,7 @@
#include <stdarg.h>
#include <stdio.h>
+#include <assert.h>
#define COBJMACROS
@@ -226,6 +227,52 @@ void set_document_navigation(HTMLDocumentObj *doc, BOOL doc_can_navigate)
doc_can_navigate ? &var : NULL, NULL);
}
+static void load_settings(HTMLDocumentObj *doc)
+{
+ nsIMarkupDocumentViewer *markup_document_viewer;
+ nsIContentViewer *content_viewer;
+ nsIDocShell *doc_shell;
+ HKEY settings_key;
+ DWORD val, size;
+ LONG res;
+ nsresult nsres;
+
+ static const WCHAR ie_keyW[] = {
+ 'S','O','F','T','W','A','R','E','\\',
+ 'M','i','c','r','o','s','o','f','t','\\',
+ 'I','n','t','e','r','n','e','t',' ','E','x','p','l','o','r','e','r',0};
+ static const WCHAR zoomW[] = {'Z','o','o','m',0};
+ static const WCHAR zoom_factorW[] = {'Z','o','o','m','F','a','c','t','o','r',0};
+
+ res = RegOpenKeyW(HKEY_CURRENT_USER, ie_keyW, &settings_key);
+ if(res != ERROR_SUCCESS)
+ return;
+
+ size = sizeof(val);
+ res = RegGetValueW(settings_key, zoomW, zoom_factorW, RRF_RT_REG_DWORD, NULL, &val, &size);
+ RegCloseKey(settings_key);
+ if(res != ERROR_SUCCESS)
+ return;
+
+ TRACE("Setting ZoomFactor to %u\n", val);
+
+ nsres = get_nsinterface((nsISupports*)doc->nscontainer->navigation, &IID_nsIDocShell, (void**)&doc_shell);
+ assert(nsres == NS_OK);
+
+ nsres = nsIDocShell_GetContentViewer(doc_shell, &content_viewer);
+ assert(nsres == NS_OK && content_viewer);
+
+ nsres = nsISupports_QueryInterface(content_viewer, &IID_nsIMarkupDocumentViewer, (void**)&markup_document_viewer);
+ nsISupports_Release(content_viewer);
+ assert(nsres == NS_OK);
+
+ nsres = nsIMarkupDocumentViewer_SetFullZoom(markup_document_viewer, (float)val/100000);
+ if(NS_FAILED(nsres))
+ ERR("SetFullZoom failed: %08x\n", nsres);
+
+ nsIDocShell_Release(doc_shell);
+}
+
static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite *pClientSite)
{
HTMLDocument *This = impl_from_IOleObject(iface);
@@ -319,7 +366,7 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite
if(hres == S_OK && key_path) {
if(key_path[0]) {
/* FIXME: use key_path */
- TRACE("key_path = %s\n", debugstr_w(key_path));
+ FIXME("key_path = %s\n", debugstr_w(key_path));
}
CoTaskMemFree(key_path);
}
@@ -331,7 +378,7 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite
if(hres == S_OK && override_key_path && override_key_path[0]) {
if(override_key_path[0]) {
/*FIXME: use override_key_path */
- TRACE("override_key_path = %s\n", debugstr_w(override_key_path));
+ FIXME("override_key_path = %s\n", debugstr_w(override_key_path));
}
CoTaskMemFree(override_key_path);
}
@@ -342,6 +389,8 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite
}
}
+ load_settings(This->doc_obj);
+
/* Native calls here GetWindow. What is it for?
* We don't have anything to do with it here (yet). */
hres = IOleClientSite_QueryInterface(pClientSite, &IID_IOleWindow, (void**)&ole_window);
More information about the wine-cvs
mailing list