Paste number 92196: make EphyEmbed a GtkVBox

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:
Raw Source | XML | Display As
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.

Colorize as:
Show Line Numbers

Lisppaste pastes can be made by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively.