Index: src/GeckoBrowser.cpp =================================================================== RCS file: /cvs/gnome/gnome-gecko-embed/src/GeckoBrowser.cpp,v retrieving revision 1.4 diff -u -r1.4 GeckoBrowser.cpp --- src/GeckoBrowser.cpp 13 Mar 2006 18:07:14 -0000 1.4 +++ src/GeckoBrowser.cpp 13 Mar 2006 18:52:46 -0000 @@ -46,6 +46,7 @@ #include "nsIDocShell.h" #include "nsIWebProgress.h" #include "nsIWebBrowserStream.h" +#include "nsIWebBrowserFocus.h" #include "nsIWidget.h" #include @@ -488,54 +489,23 @@ } } -// handle focus in and focus out events -void -GeckoBrowser::TopLevelFocusIn(void) -{ - if (mIsDestroyed) - return; - - nsCOMPtr piWin; - GetPIDOMWindow(getter_AddRefs(piWin)); - - if (!piWin) - return; - - nsIFocusController *focusController = piWin->GetRootFocusController(); - if (focusController) - focusController->SetActive(PR_TRUE); -} - -void -GeckoBrowser::TopLevelFocusOut(void) -{ - if (mIsDestroyed) - return; - - nsCOMPtr piWin; - GetPIDOMWindow(getter_AddRefs(piWin)); - - if (!piWin) - return; - - nsIFocusController *focusController = piWin->GetRootFocusController(); - if (focusController) - focusController->SetActive(PR_FALSE); -} - void GeckoBrowser::ChildFocusIn(void) { if (mIsDestroyed) return; - nsCOMPtr piWin; - GetPIDOMWindow(getter_AddRefs(piWin)); + nsresult rv; + nsCOMPtr webBrowser; + rv = mWindow->GetWebBrowser(getter_AddRefs(webBrowser)); + if (NS_FAILED(rv)) + return; - if (!piWin) + nsCOMPtr webBrowserFocus(do_QueryInterface(webBrowser)); + if (!webBrowserFocus) return; - piWin->Activate(); + webBrowserFocus->Activate(); } void @@ -544,20 +514,17 @@ if (mIsDestroyed) return; - nsCOMPtr piWin; - GetPIDOMWindow(getter_AddRefs(piWin)); - - if (!piWin) + nsresult rv; + nsCOMPtr webBrowser; + rv = mWindow->GetWebBrowser(getter_AddRefs(webBrowser)); + if (NS_FAILED(rv)) return; - piWin->Deactivate(); - - // but the window is still active until the toplevel gets a focus - // out - nsIFocusController *focusController = piWin->GetRootFocusController(); - if (focusController) - focusController->SetActive(PR_TRUE); + nsCOMPtr webBrowserFocus(do_QueryInterface(webBrowser)); + if (!webBrowserFocus) + return; + webBrowserFocus->Deactivate(); } // Get the event listener for the chrome event handler. Index: src/GeckoSingle.h =================================================================== RCS file: /cvs/gnome/gnome-gecko-embed/src/GeckoSingle.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 GeckoSingle.h --- src/GeckoSingle.h 13 Mar 2006 12:44:57 -0000 1.1.1.1 +++ src/GeckoSingle.h 13 Mar 2006 18:52:47 -0000 @@ -47,8 +47,6 @@ #include #include #include -// for profiles -#include // app component registration #include #include @@ -109,7 +107,6 @@ static char *sProfileName; // for profiles static nsProfileDirServiceProvider *sProfileDirServiceProvider; - static nsIPref *sPrefs; static nsIDirectoryServiceProvider * sAppFileLocProvider; Index: src/gecko-embed.cpp =================================================================== RCS file: /cvs/gnome/gnome-gecko-embed/src/gecko-embed.cpp,v retrieving revision 1.4 diff -u -r1.4 gecko-embed.cpp --- src/gecko-embed.cpp 13 Mar 2006 18:07:14 -0000 1.4 +++ src/gecko-embed.cpp 13 Mar 2006 18:52:50 -0000 @@ -97,16 +97,6 @@ GdkEventFocus *aGdkFocusEvent, GeckoEmbed *aEmbed); -// signal handlers for tracking the focus in and focus out events on -// the toplevel window. - -static gint handle_toplevel_focus_in(GtkWidget *aWidget, - GdkEventFocus *aEvent, - GeckoBrowser *aPrivate); -static gint handle_toplevel_focus_out(GtkWidget *aWidget, - GdkEventFocus *aEvent, - GeckoBrowser *aPrivate); - static PRInt32 sWidgetCount; // globals for this type of widget @@ -121,8 +111,6 @@ struct _GeckoEmbedPrivate { - gulong toplevel_focus_in_handler_id; - gulong toplevel_focus_out_handler_id; GeckoBrowser *browser; }; @@ -222,35 +210,6 @@ rv = browser->Realize(&alreadyRealized); g_return_if_fail(NS_SUCCEEDED(rv)); - if (priv->toplevel_focus_in_handler_id == 0) - { - GClosure *closure; - closure = g_cclosure_new (G_CALLBACK (handle_toplevel_focus_in), browser, NULL); - g_object_watch_closure (G_OBJECT (child_widget), closure); - priv->toplevel_focus_in_handler_id = - g_signal_connect_closure (toplevel, "focus_in_event", closure, FALSE); - } - if (priv->toplevel_focus_out_handler_id == 0) - { - GClosure *closure; - closure = g_cclosure_new (G_CALLBACK (handle_toplevel_focus_out), browser, NULL); - g_object_watch_closure (G_OBJECT (child_widget), closure); - priv->toplevel_focus_out_handler_id = - g_signal_connect_closure (toplevel, "focus_out_event", closure, FALSE); - } -#if 0 - gtk_signal_connect_while_alive(GTK_OBJECT(toplevel), - "focus_in_event", - GTK_SIGNAL_FUNC(handle_toplevel_focus_in), - browser, - GTK_OBJECT(child_widget)); - gtk_signal_connect_while_alive(GTK_OBJECT(toplevel), - "focus_out_event", - GTK_SIGNAL_FUNC(handle_toplevel_focus_out), - browser, - GTK_OBJECT(child_widget)); -#endif - // if we're already realized we don't need to hook up to anything below if (alreadyRealized) return; @@ -290,19 +249,6 @@ browser->Unrealize(); } - g_signal_handler_disconnect (toplevel, priv->toplevel_focus_in_handler_id); - g_signal_handler_disconnect (toplevel, priv->toplevel_focus_out_handler_id); - priv->toplevel_focus_in_handler_id = 0; - priv->toplevel_focus_out_handler_id = 0; -#if 0 - gtk_signal_disconnect_by_func(GTK_OBJECT(toplevel), - GTK_SIGNAL_FUNC(handle_toplevel_focus_in), - browser); - gtk_signal_disconnect_by_func(GTK_OBJECT(toplevel), - GTK_SIGNAL_FUNC(handle_toplevel_focus_out), - browser); -#endif - if (GTK_WIDGET_CLASS(parent_class)->unrealize) GTK_WIDGET_CLASS(parent_class)->unrealize (widget); } @@ -386,28 +332,6 @@ browser->ChildFocusOut(); - return FALSE; -} - -/* static */ -gint -handle_toplevel_focus_in (GtkWidget *aWidget, - GdkEventFocus *aEvent, - GeckoBrowser *aPrivate) -{ - aPrivate->TopLevelFocusIn(); - - return FALSE; -} - -/* static */ -gint -handle_toplevel_focus_out (GtkWidget *aWidget, - GdkEventFocus *aEvent, - GeckoBrowser *aPrivate) -{ - aPrivate->TopLevelFocusOut(); - return FALSE; }