[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: Gtk2::MozEmbed + DOM
- From: Scott Lanning <lannings who int>
- To: Torsten Schoenfeld <kaffeetisch gmx de>
- Cc: gtk-perl-list gnome org
- Subject: Re: Gtk2::MozEmbed + DOM
- Date: Wed, 6 Apr 2005 12:45:26 +0000 (UTC)
Using just-uploaded Mozilla::DOM 0.04 and the small attached
patch against CVS HEAD of Gtk2::MozEmbed, you can access the
DOM Window with
$browser = $embed->get_nsIWebBrowser();
$window = $browser->get_content_domwindow();
(Please see the XXX in pumzilla for a segfault problem, though.)
It isn't very functional yet, but it's getting there.
diff -ur cvs/gtk2-perl-xs/Gtk2-MozEmbed/examples/pumzilla Gtk2-MozEmbed-0.03/examples/pumzilla
--- cvs/gtk2-perl-xs/Gtk2-MozEmbed/examples/pumzilla 2005-04-05 13:53:19.000000000 +0000
+++ Gtk2-MozEmbed-0.03/examples/pumzilla 2005-04-06 12:33:50.291954312 +0000
@@ -133,6 +133,19 @@
$forward -> set_sensitive($embed -> can_go_forward());
$progress -> set_fraction(0);
+
+ # XXX: calling get_content_domwindow before $pumzilla->show_all()
+ # (at bottom) causes a segfault - not sure why
+ my $browser = $embed -> get_nsIWebBrowser();
+ my $window = $browser -> get_content_domwindow();
+ if (defined $window) {
+ print "original window name: ", $window -> get_name, $/;
+ $window -> set_name('pummy');
+ print "new window name: ", $window -> get_name, $/;
+ } else {
+ print "browser has no DOM Window\n";
+ }
+
});
$embed -> signal_connect(progress => sub {
@@ -167,7 +180,8 @@
my %props = ();
foreach my $prop (qw(char_code key_code
ctrl_key shift_key alt_key meta_key
- event_phase bubbles cancelable detail)) {
+ event_phase bubbles cancelable
+ type time_stamp detail)) {
my $method = "get_$prop";
$props{$prop} = $event -> $method;
}
@@ -191,7 +205,8 @@
my %props = ();
foreach my $prop (qw(screen_x screen_y client_x client_y
ctrl_key shift_key alt_key meta_key button
- event_phase bubbles cancelable detail)) {
+ event_phase bubbles cancelable
+ type detail)) {
next if ($prop eq 'button' or $prop eq 'detail')
and ($signal eq 'dom_mouse_over' or $signal eq 'dom_mouse_out');
my $method = "get_$prop";
diff -ur cvs/gtk2-perl-xs/Gtk2-MozEmbed/gtkmozembed2perl.h Gtk2-MozEmbed-0.03/gtkmozembed2perl.h
--- cvs/gtk2-perl-xs/Gtk2-MozEmbed/gtkmozembed2perl.h 2005-04-05 13:53:19.000000000 +0000
+++ Gtk2-MozEmbed-0.03/gtkmozembed2perl.h 2005-04-06 12:27:32.441396328 +0000
@@ -35,6 +35,7 @@
#endif
#include <gtkmozembed.h>
+#include <gtkmozembed_internal.h> /* XXX: uneasy that it says "internal" */
#include "gtkmozembed2perl-version.h"
#if 1 /* FIXME: !GTK_MOZ_EMBED_CHECK_VERSION (x, y, z) */
diff -ur cvs/gtk2-perl-xs/Gtk2-MozEmbed/xs/GtkMozEmbed.xs Gtk2-MozEmbed-0.03/xs/GtkMozEmbed.xs
--- cvs/gtk2-perl-xs/Gtk2-MozEmbed/xs/GtkMozEmbed.xs 2005-04-05 13:53:19.000000000 +0000
+++ Gtk2-MozEmbed-0.03/xs/GtkMozEmbed.xs 2005-04-06 12:29:38.316260440 +0000
@@ -537,6 +537,34 @@
OUTPUT:
RETVAL
+=for apidoc
+
+This method gets the nsIWebBrowser for this window.
+It is only available if Mozilla::DOM was installed
+before building Gtk2::MozEmbed.
+
+Note: it seems that this will return NULL before you've called `show_all'
+on your Gtk2::Window object, so check if this returns undef.
+
+=cut
+
+## void gtk_moz_embed_get_nsIWebBrowser (GtkMozEmbed *embed, nsIWebBrowser **retval)
+
+#ifdef __cplusplus /* implies Mozilla::DOM is installed */
+
+nsIWebBrowser *
+gtk_moz_embed_get_nsIWebBrowser (embed)
+ GtkMozEmbed *embed
+ PREINIT:
+ nsIWebBrowser *browser;
+ CODE:
+ gtk_moz_embed_get_nsIWebBrowser (embed, &browser);
+ RETVAL = browser;
+ OUTPUT:
+ RETVAL
+
+#endif
+
# --------------------------------------------------------------------------- #
=for object Gtk2::MozEmbed::main
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]