All pastes #45480 Raw Edit

Untitled

public text v1 · immutable
#45480 ·published 2006-03-13 18:53 UTC
rendered paste body
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 <stdlib.h>
 
@@ -488,54 +489,23 @@
   }
 }
 
-// handle focus in and focus out events
-void
-GeckoBrowser::TopLevelFocusIn(void)
-{
-  if (mIsDestroyed)
-    return;
-
-  nsCOMPtr<nsPIDOMWindow> 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<nsPIDOMWindow> 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<nsPIDOMWindow> piWin;
-  GetPIDOMWindow(getter_AddRefs(piWin));
+  nsresult rv;
+  nsCOMPtr<nsIWebBrowser> webBrowser;
+  rv = mWindow->GetWebBrowser(getter_AddRefs(webBrowser));
+  if (NS_FAILED(rv))
+    return;
 
-  if (!piWin)
+  nsCOMPtr<nsIWebBrowserFocus> webBrowserFocus(do_QueryInterface(webBrowser));
+  if (!webBrowserFocus)
     return;
 
-  piWin->Activate();
+  webBrowserFocus->Activate();
 }
 
 void
@@ -544,20 +514,17 @@
   if (mIsDestroyed)
     return;
 
-  nsCOMPtr<nsPIDOMWindow> piWin;
-  GetPIDOMWindow(getter_AddRefs(piWin));
-
-  if (!piWin)
+  nsresult rv;
+  nsCOMPtr<nsIWebBrowser> 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<nsIWebBrowserFocus> 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 <nsIWebBrowserChrome.h>
 #include <nsIAppShell.h>
 #include <nsIDOMEventReceiver.h>
-// for profiles
-#include <nsIPref.h>
 // app component registration
 #include <nsIGenericFactory.h>
 #include <nsIComponentRegistrar.h>
@@ -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;
 }