diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 6cbd8695be2..8143025d22c 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 5610233625f..8e7b48680b7 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 fc517dcdf35..d5457a38383 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 ba059c08c8e..161d2a0a533 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)