| Paste number 92196: | make EphyEmbed a GtkVBox |
| Pasted by: | kov |
| When: | 2 years, 1 month ago |
| Share: | Tweet this! | http://paste.lisp.org/+1Z50 |
| Channel: | #webkit-gtk |
| Paste contents: |
commit ca85479d0214dca1551bc36364a6baad1eec4b54
Author: Gustavo Noronha Silva <gns@gnome.org>
Date: Wed Dec 16 13:35:55 2009 +0100
Make EphyEmbed inherit from GtkVBox instead of GtkScrolledWindow
This is the first step towards providing an InfoBar, and being able to
attach the Web Inspector to the main browser window.
diff --git a/embed/ephy-embed-utils.h b/embed/ephy-embed-utils.h
index 5d82171..e57cba4 100644
--- a/embed/ephy-embed-utils.h
+++ b/embed/ephy-embed-utils.h
@@ -35,8 +35,8 @@
G_BEGIN_DECLS
-#define EPHY_GET_WEBKIT_WEB_VIEW_FROM_EMBED(embed) (WEBKIT_WEB_VIEW (gtk_bin_get_child (GTK_BIN (embed))))
-#define EPHY_GET_EPHY_WEB_VIEW_FROM_EMBED(embed) (EPHY_WEB_VIEW (gtk_bin_get_child (GTK_BIN (embed))))
+#define EPHY_GET_WEBKIT_WEB_VIEW_FROM_EMBED(embed) (WEBKIT_WEB_VIEW (ephy_embed_get_web_view (embed)))
+#define EPHY_GET_EPHY_WEB_VIEW_FROM_EMBED(embed) (EPHY_WEB_VIEW (ephy_embed_get_web_view (embed)))
#define EPHY_GET_EMBED_FROM_EPHY_WEB_VIEW(view) (EPHY_EMBED (gtk_widget_get_parent (GTK_WIDGET (view))))
#define EPHY_WEBKIT_BACK_FORWARD_LIMIT 100
diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c
index b839c6b..987097b 100644
--- a/embed/ephy-embed.c
+++ b/embed/ephy-embed.c
@@ -57,6 +57,7 @@ static void ephy_embed_constructed (GObject *object);
struct EphyEmbedPrivate
{
+ GtkScrolledWindow *scrolled_window;
WebKitWebView *web_view;
EphyHistory *history;
GtkWidget *inspector_window;
@@ -64,7 +65,7 @@ struct EphyEmbedPrivate
guint is_setting_zoom : 1;
};
-G_DEFINE_TYPE (EphyEmbed, ephy_embed, GTK_TYPE_SCROLLED_WINDOW)
+G_DEFINE_TYPE (EphyEmbed, ephy_embed, GTK_TYPE_VBOX)
static void
uri_changed_cb (WebKitWebView *web_view,
@@ -296,7 +297,7 @@ ephy_embed_grab_focus (GtkWidget *widget)
{
GtkWidget *child;
- child = gtk_bin_get_child (GTK_BIN (widget));
+ child = GTK_WIDGET (ephy_embed_get_web_view (EPHY_EMBED (widget)));
if (child)
gtk_widget_grab_focus (child);
@@ -775,14 +776,18 @@ static void
ephy_embed_constructed (GObject *object)
{
EphyEmbed *embed = (EphyEmbed*)object;
+ GtkWidget *scrolled_window;
WebKitWebView *web_view;
WebKitWebInspector *inspector;
GtkWidget *inspector_sw;
- embed->priv = EPHY_EMBED_GET_PRIVATE (embed);
+ scrolled_window = embed->priv->scrolled_window;
+ gtk_container_add (GTK_CONTAINER (embed), scrolled_window);
+ gtk_widget_show (scrolled_window);
+
web_view = WEBKIT_WEB_VIEW (ephy_web_view_new ());
embed->priv->web_view = web_view;
- gtk_container_add (GTK_CONTAINER (embed), GTK_WIDGET (web_view));
+ gtk_container_add (GTK_CONTAINER (embed->priv->scrolled_window), GTK_WIDGET (web_view));
gtk_widget_show (GTK_WIDGET (web_view));
g_object_connect (web_view,
@@ -831,7 +836,11 @@ ephy_embed_constructed (GObject *object)
static void
ephy_embed_init (EphyEmbed *embed)
{
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (embed),
+ embed->priv = EPHY_EMBED_GET_PRIVATE (embed);
+
+ embed->priv->scrolled_window = GTK_SCROLLED_WINDOW (gtk_scrolled_window_new (NULL, NULL));
+
+ gtk_scrolled_window_set_policy (embed->priv->scrolled_window,
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
}
diff --git a/embed/ephy-embed.h b/embed/ephy-embed.h
index 18fb6ed..01e78ca 100644
--- a/embed/ephy-embed.h
+++ b/embed/ephy-embed.h
@@ -41,7 +41,7 @@ typedef struct EphyEmbed EphyEmbed;
typedef struct EphyEmbedPrivate EphyEmbedPrivate;
struct EphyEmbed {
- GtkScrolledWindow parent_instance;
+ GtkVBox parent_instance;
/*< private >*/
EphyEmbedPrivate *priv;
diff --git a/src/ephy-notebook.c b/src/ephy-notebook.c
index 0ea261d..fb54957 100644
--- a/src/ephy-notebook.c
+++ b/src/ephy-notebook.c
@@ -811,7 +811,7 @@ ephy_notebook_remove (GtkContainer *container,
tab_label_icon = g_object_get_data (G_OBJECT (tab_label), "icon");
tab_label_label = g_object_get_data (G_OBJECT (tab_label), "label");
- view = EPHY_GET_EPHY_WEB_VIEW_FROM_EMBED (tab_widget);
+ view = EPHY_GET_EPHY_WEB_VIEW_FROM_EMBED (EPHY_EMBED (tab_widget));
g_signal_handlers_disconnect_by_func
(view, G_CALLBACK (sync_icon), tab_label_icon);
diff --git a/src/ephy-session.c b/src/ephy-session.c
index 3919c6c..e757a9f 100644
--- a/src/ephy-session.c
+++ b/src/ephy-session.c
@@ -1345,7 +1345,7 @@ confirm_before_recover (EphyWindow* window, char* url, char* title)
EPHY_NEW_TAB_IN_EXISTING_WINDOW | EPHY_NEW_TAB_APPEND_LAST);
/* show generated html and put the original URL in the navigation bar */
- webkit_web_view_load_html_string (EPHY_GET_WEBKIT_WEB_VIEW_FROM_EMBED (embed),
+ webkit_web_view_load_html_string (EPHY_GET_WEBKIT_WEB_VIEW_FROM_EMBED (EPHY_EMBED (embed)),
html->str,
url);
g_string_free (html, TRUE);
This paste has no annotations.