bring the gtk embedded code back from the dead. this is a fix for bug #20396.

git-svn-id: svn://10.0.0.236/trunk@55441 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
blizzard%redhat.com
1999-12-06 20:28:47 +00:00
parent 2f490e6acb
commit 1e97cfb9b6
6 changed files with 37 additions and 19 deletions

View File

@@ -36,13 +36,14 @@ GtkMozillaContainer::GtkMozillaContainer(GtkMozilla *moz, nsIPref * aPrefs)
{
mWebShell = nsnull;
width = height = 0;
mStream = nsnull;
mChannel = nsnull;
mLoadGroup = nsnull;
mContext = nsnull;
mMozArea = nsnull;
mSuperWin = nsnull;
mozilla = moz;
@@ -79,9 +80,17 @@ GtkMozillaContainer::Show()
{
width = alloc->width;
height = alloc->height;
// we need to create the mozbox here that will shim
// between the superwin and the widget.
mMozArea = gtk_mozarea_new();
gtk_container_add(GTK_CONTAINER(mozilla), mMozArea);
gtk_widget_realize(mMozArea);
mSuperWin = GTK_MOZAREA(mMozArea)->superwin;
//printf("Init, size: %d, %d\n", width, height);
mWebShell->Init((nsNativeWidget *)mozilla,
mWebShell->Init((nsNativeWidget *)mSuperWin,
0,
0,
width,
@@ -95,6 +104,9 @@ GtkMozillaContainer::Show()
}
}
gdk_window_show(mSuperWin->bin_window);
gdk_window_show(mSuperWin->shell_window);
if (mWebShell)
{
mWebShell->Show();
@@ -105,13 +117,19 @@ void
GtkMozillaContainer::Resize(gint w, gint h)
{
int new_size;
GtkAllocation alloc;
// printf("GtkMozillaContainer::Resize called width: %d, %d\n", w, h);
new_size = ((width != w) || (height != h));
if (new_size && mWebShell) {
width = w;
height = h;
//printf("GtkMozillaContainer::Resize setting to: %d, %d\n", width, height);
gtk_layout_set_size(GTK_LAYOUT(mozilla), width, height);
alloc.x = GTK_WIDGET(mozilla)->allocation.x;
alloc.y = GTK_WIDGET(mozilla)->allocation.y;
alloc.width = w;
alloc.height = h;
gtk_widget_size_allocate(GTK_WIDGET(mozilla), &alloc);
gdk_superwin_resize(mSuperWin, width, height);
mWebShell->SetBounds(0, 0, width, height);
}
}

View File

@@ -21,6 +21,8 @@
#include "nsIWebShell.h"
#include "GtkMozillaInputStream.h"
#include "gtkmozilla.h"
#include "gdksuperwin.h"
#include "gtkmozarea.h"
class nsIWebShell;
@@ -110,6 +112,9 @@ protected:
GtkMozilla *mozilla;
int width, height;
GtkWidget *mMozArea;
GdkSuperWin *mSuperWin;
/* Stream stuff: */
GtkMozillaInputStream *mStream;

View File

@@ -36,6 +36,7 @@ ALL_MOZ_LIBS = \
$(JSJ_LIB) \
$(NSPR_LIBS) \
$(TK_LIBS) \
-lgtksuperwin \
$(NULL)
MOZILLA_LIBS=-L$(MOZILLA_DIR)/lib \

View File

@@ -1,4 +1,4 @@
# Makefile.in generated automatically by automake 1.4a from Makefile.am
# Makefile.in generated automatically by automake 1.4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
@@ -46,10 +46,9 @@ AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_FLAG =
transform = @program_transform_name@
NORMAL_INSTALL = :
@@ -102,7 +101,7 @@ GECKO_LIBS = -lraptorgfx $(NULL)
JSJ_LIB =
TK_LIBS =
ALL_MOZ_LIBS = $(GECKO_LIBS) $(BASE_LIBS) $(JSJ_LIB) $(NSPR_LIBS) $(TK_LIBS) $(NULL)
ALL_MOZ_LIBS = $(GECKO_LIBS) $(BASE_LIBS) $(JSJ_LIB) $(NSPR_LIBS) $(TK_LIBS) -lgtksuperwin $(NULL)
MOZILLA_LIBS = -L$(MOZILLA_DIR)/lib $(ALL_MOZ_LIBS)
@@ -282,7 +281,7 @@ distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
cp -pr $$/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
@@ -362,7 +361,7 @@ uninstall: uninstall-am
all-am: Makefile $(LTLIBRARIES) $(HEADERS)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir)

View File

@@ -62,7 +62,7 @@ enum {
};
static guint mozilla_signals[LAST_SIGNAL] = { 0 };
static GtkLayoutClass *parent_class = NULL;
static GtkFixedClass *parent_class = NULL;
static void
gtk_mozilla_class_init (GtkMozillaClass *klass)
@@ -73,7 +73,7 @@ gtk_mozilla_class_init (GtkMozillaClass *klass)
object_class = (GtkObjectClass*) klass;
widget_class = (GtkWidgetClass*) klass;
parent_class = (GtkLayoutClass *)gtk_type_class (GTK_TYPE_LAYOUT);
parent_class = (GtkFixedClass *)gtk_type_class (GTK_TYPE_FIXED);
mozilla_signals[WILL_LOAD_URL] =
gtk_signal_new ("will_load_url",
@@ -142,9 +142,6 @@ gtk_mozilla_init (GtkMozilla *moz)
moz->mozilla_container = NULL;
gtk_layout_set_hadjustment (GTK_LAYOUT (moz), NULL);
gtk_layout_set_vadjustment (GTK_LAYOUT (moz), NULL);
GTK_WIDGET_SET_FLAGS (GTK_WIDGET(moz), GTK_CAN_FOCUS);
moz->mozilla_container = new GtkMozillaContainer(moz,sPrefs);
@@ -175,7 +172,7 @@ gtk_mozilla_get_type (void)
0,
0
};
mozilla_type = gtk_type_unique (GTK_TYPE_LAYOUT, &mozilla_info);
mozilla_type = gtk_type_unique (GTK_TYPE_FIXED, &mozilla_info);
//printf("Setting up registry.\n");

View File

@@ -27,8 +27,6 @@
extern "C" {
#endif /* __cplusplus */
#include <gtk/gtklayout.h>
#define GTK_TYPE_MOZILLA (gtk_mozilla_get_type ())
#define GTK_MOZILLA(obj) GTK_CHECK_CAST ((obj), GTK_TYPE_MOZILLA, GtkMozilla)
#define GTK_MOZILLA_CLASS(klass) GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_MOZILLA, GtkMozillaClass)
@@ -56,14 +54,14 @@ typedef struct _GtkMozillaClass GtkMozillaClass;
struct _GtkMozilla
{
GtkLayout layout;
GtkFixed fixed;
void *mozilla_container;
};
struct _GtkMozillaClass
{
GtkLayoutClass parent_class;
GtkFixedClass parent_class;
gint (*will_load_url) (GtkMozilla *mozilla,
const gchar *url,