From eb52044ee8682e015f7c1d5a4acb13319d450ab2 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Fri, 26 Aug 2005 10:05:52 +0000 Subject: [PATCH] Beginning implementation of Gecko focus handling. --- dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/nsembed.c | 5 +++++ dlls/mshtml/nsiface.idl | 16 ++++++++++++++++ dlls/mshtml/view.c | 1 + 4 files changed, 23 insertions(+) diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 6cbd8695be..8143025d22 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -82,6 +82,7 @@ struct NSContainer { nsIWebNavigation *navigation; nsIBaseWindow *window; nsIWebBrowserStream *stream; + nsIWebBrowserFocus *focus; HTMLDocument *doc; diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index 5610233625..8e7b48680b 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -599,6 +599,11 @@ void HTMLDocument_NSContainer_Init(HTMLDocument *This) if(NS_FAILED(nsres)) ERR("Could not get nsIWebNavigation interface: %08lx\n", nsres); + nsres = nsIWebBrowserFocus_QueryInterface(This->nscontainer->webbrowser, &IID_nsIWebBrowserFocus, + (void**)&This->nscontainer->focus); + if(NS_FAILED(nsres)) + ERR("Could not get nsIWebBrowserFocus interface: %08lx\n", nsres); + #if 0 nsres = nsIWebBrowserStream_QueryInterface(This->nscontainer->webbrowser, &IID_nsIWebBrowserStream, (void**)&This->nscontainer->stream); diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl index fc517dcdf3..d5457a3838 100644 --- a/dlls/mshtml/nsiface.idl +++ b/dlls/mshtml/nsiface.idl @@ -311,6 +311,22 @@ interface nsIIOService : nsISupports nsresult AllowPort(PRInt32 aPort, const char *aScheme, PRBool *_retval); } +[ + object, + uuid(9c5d3c58-1dd1-11b2-a1c9-f3699284657a) +] +interface nsIWebBrowserFocus : nsISupports +{ + nsresult Activate(); + nsresult Deactivate(); + nsresult SetFocusAtFirstElement(); + nsresult SetFocusAtLastElement(); + nsresult GetFocusedWindow(nsIDOMWindow **aFocusedWindow); + nsresult SetFocusedWindow(nsIDOMWindow *aFocusedWindow); + nsresult GetFocusedElement(nsIDOMElement **aFocusedElement); + nsresult SetFocusedElement(nsIDOMElement *aFocusedElement); +} + [ object, uuid(ba434c60-9d52-11d3-afb0-00a024ffc08c) diff --git a/dlls/mshtml/view.c b/dlls/mshtml/view.c index ba059c08c8..161d2a0a53 100644 --- a/dlls/mshtml/view.c +++ b/dlls/mshtml/view.c @@ -74,6 +74,7 @@ static void activate_gecko(HTMLDocument *This) nsIBaseWindow_SetVisibility(This->nscontainer->window, TRUE); nsIBaseWindow_SetEnabled(This->nscontainer->window, TRUE); + nsIWebBrowserFocus_Activate(This->nscontainer->focus); } static LRESULT WINAPI serverwnd_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)